Guía de Estilo

This document contains the various MD and RST/Sphinx specific guidelines for the frc-docs project. For guidelines related to the various WPILib code projects, see the WPILib GitHub

Nombres de Archivo

Use solo caracteres alfanuméricos en minúsculas y el guion (signo «-«).

Para documentos que tendrán un nombre de software/hardware idéntico, agregue «hardware» o «software» al final del nombre del documento. p.ej. ultrasonics-hardware.rst

Añada la extensión .rst como sufijo a los nombres de archivo.

Nota

If you are having issues editing files with the .rst extension, the recommended text editor is VS Code with the reStructuredText extension.

Texto

All text content should be on the same line. If you need readability, use the word-wrap function of your editor.

Use el siguiente caso para estos términos:

  • roboRIO (no RoboRIO, roboRio, o RoboRio)

  • LabVIEW (no labview o LabView)

  • Visual Studio Code (VS Code) (no vscode, VScode, vs code, etc)

  • macOS (no Mac OS, Mac OSX, Mac OS X, Mac, Mac OS, etc.)

  • GitHub (no github, Github, etc.)

  • PowerShell (no PowerShell, Powershell, etc.)

  • Linux (no linux)

  • Java (no Java)

Use the ASCII character set for English text. For special characters (e.g. Greek symbols) use the standard character entity sets.

Use .. math:: for standalone equations and :math: for inline equations. A useful LaTeX equation cheat sheet can be found here.

Use literales para nombres de archivos, funciones y nombres de variables.

Use of the registered trademarks FIRST® and FRC® should follow the Policy from this page. Specifically, where possible (i.e. not nested inside other markup or in a document title), the first use of the trademarks should have the ® symbol and all instances of FIRST should be italicized. The ® symbol can be added by using .. include:: <isonum.txt> at the top of the document and then using *FIRST*\ |reg| or FRC\ |reg|.

Commonly used terms should be added to the Glosario de FRC. You can reference items in the glossary by using :term:`deprecated`.

Espacios en Blanco

Sangría

La sangría debe siempre coincidir con el nivel anterior de sangría a menos que esté creando un nuevo bloque de contenido.

La sangría de las directivas de contenido como nueva línea .. toctree:: debe ser 3 espacios.

Líneas En Blanco

There should be 1 blank line separating basic text blocks and section titles. There should be 1 blank line separating text blocks and content directives.

Espacio blanco interior

Use solo uno espacio entre frases.

Títulos

Headings should be in the following structure.

  1. # for document titles. Do not use this more than once per article.

  2. ## for document sections

  3. ### for document sub-sections

  4. #### for document sub-sub-sections

  5. Si necesita usar niveles más inferiores para la estructura, está haciéndolo mal.

Escriba las primeras letras de cada palabra en mayúsculas para los títulos.

Listas

Las listas deben tener una nueva línea entre cada nivel de sangría. El mayor nivel de sangría debe tener una sangría de «0», y las subsiguientes sublistas deben tener una sangría que comience en el primer carácter de la sangría anterior.

- Block one
- Block two
- Block three
  - Sub 1
  - Sub 2
- Block four

Bloques de código

Todos los bloques de código deben tener un lenguaje especificado.

```python
print("Hello!")

import antigravity
```
  1. Excepción: Contenido donde el formato debe ser preservado y no tiene lenguaje. En lugar de eso, usa «texto».

Follow the WPILib style guide for C++ and Java example code. For example, use two spaces for indentation in C++ and Java.

RLI (Remote Literal Include)

When possible, instead of using code blocks, an RLI should be used. This pulls code lines directly from GitHub, most commonly using the example programs. This automatically keeps the code up to date with any changes that are made. The format of an RLI is:

.. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2025.1.1-beta-2/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java
   :language: java
   :lines: 19-25
   :lineno-match:

.. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2025.1.1-beta-2/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp
   :language: c++
   :lines: 50-60
   :lineno-match:

.. remoteliteralinclude:: https://raw.githubusercontent.com/robotpy/examples/c6d0540b01e138725fad7366ff4e317e9994b78b/GettingStarted/robot.py
   :language: python
   :lines: 12-29
   :lineno-match:

Make sure to link to the raw version of the file on GitHub. There is a handy Raw button in the top right corner of the page.

Nota

RLIs should use a tag instead of main to ensure the documentation isn’t broken the next time there is a change to the RLIed code. If a tag hasn’t been created, use the full (40 character) commit hash.

Tabs

To create code tabs in an article, you can use the .. tab-set-code:: directive. You can use md style ``` codeblocks and rli directives inside. The format is:

.. tab-set-code::
   .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2025.1.1-beta-2/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java
      :language: java
      :lines: 19-25
      :lineno-match:

   ```c++
   // Start the timer.
   m_timer.Start();
   // Send Field2d to SmartDashboard.
   frc::SmartDashboard::PutData(&m_field);
   // Reset the drivetrain's odometry to the starting pose of the trajectory.
   m_drive.ResetOdometry(m_trajectory.InitialPose());
   // Send our generated trajectory to Field2d.
   m_field.GetObject("traj")->SetTrajectory(m_trajectory);
   ```

If you need to use more than one tab per language, multiple RLIs per language, or text tabs, you can use the .. tab-set:: and .. tab-item:: directive. The format is:

.. tab-set::
   .. tab-item:: Title
      :sync: sync-id
         Content

This example uses the sync argument to allow all of the tabs with the same key to be synced together. This means that when you click on a tab, all of the tabs with the same key will open.

If you have a mix of tab-set and tab-set-code directives on a page, you can sync them by setting the sync id on the tab-item directives to tabcode-LANGUAGE. For example, a java tab would have a sync id of tabcode-java.

Amonestaciones

Admonitions (list here) should have their text on the same line as the admonition itself. There are exceptions to this rule, however, when having multiple sections of content inside of an admonition. Generally having multiple sections of content inside of an admonition is not recommended.

Uso

.. warning:: This is a warning!

NO

.. warning::
   This is a warning!

Imágenes

Las imágenes deben ser creadas con 1 línea que separe el contenido y la directiva.

Todas las imágenes (incluyendo los vectores) deben tener un tamaño inferior a «500» kilobytes. Por favor, utilice una resolución más pequeña y algoritmos de compresión más eficientes.

.. image:: images/my-article/my-image.png
   :alt: Always add alt text here describing the image.

Archivos de imágenes

Image files should be stored in the document directory, sub-directory of document-name/images.

Deben seguir el esquema de nomenclatura de descripción-corta.png, donde el nombre de la imagen es una breve descripción de lo que muestra la imagen. Debe tener menos de 24 caracteres.

Deben tener la extensión de imagen .png or .jpg. .gif es inaceptable debido a problemas de almacenamiento y accesibilidad.

Nota

¡La accesibilidad es importante! Las imágenes deben estar marcadas con una directiva :alt:.

.. image:: images/my-document/my-image.png
   :alt: An example image

Imágenes vectoriales

Los archivos SVG son soportados a través de la extensión Sphinx de svg2pdfconverter.

Simplemente úsalos como lo harías con cualquier otra imagen.

Nota

Asegúrate de que las imágenes incrustadas en el vector no inflen el vector hasta superar el límite de 500KB.

.. image:: images/my-document/my-image.svg
   :alt: Always add alt text here describing the image.

Diagramas Draw.io

Draw.io (also known as diagrams.net) diagrams are supported through svg files with embedded .drawio metadata, allowing the svg file to act as a source file of the diagrams, and to be rendered like a normal vector graphics file.

Simplemente úsalos como lo harías con cualquier otra imagen vectorial, o cualquier otra imagen.

.. image:: diagrams/my-document/diagram-1.drawio.svg
   :alt: Always add alt text here describing the image.

Archivos de Draw.io

Los archivos Draw.io siguen casi el mismo esquema de nombres que las imágenes normales. Para llevar un registro de los archivos que tienen los metadatos .drawio incrustados, agrega un .drawio al final del nombre del archivo, antes de la extensión, lo que significa que el nombre del archivo debe ser document-title-1.drawio.svg y así sucesivamente. Además, los diagramas deben ser almacenados en el directorio de documentos en una subcarpeta llamada diagramas.

Para los detalles de guardar un diagrama como un .svg con metadatos, echa un vistazo a Draw.io Instrucciones de Guardado.

Advertencia

Asegúrate de que no modificas ningún archivo que esté en una carpeta diagramas, o que termine en .drawio.svg en cualquier otro programa que no sea draw.io, de lo contrario podrías arriesgarte a romper los metadatos del archivo, haciéndolo ineditable.

Extensiones de archivo

Las extensiones de archivo deben usar el formato de código. Por ejemplo, use:

``.png``

en lugar de:

.png
".png"
"``.png``"

Tablas de contenido (TDC)

Cada categoría debe contener un «índice.rst». Este archivo de índice debe contener una «profundidad máxima» de «1». Las subcategorías son aceptables, con una profundidad máxima de 1.

The category index.rst file can then be added to the root index file located at source/index.rst.

Ejemplos

# Title
This is an example article
```java
System.out.println("Hello World");
```
## Section
This is a section!

¡Nota importante!

Esta lista no es exhaustiva y los administradores se reservan el derecho de hacer cambios. Los cambios se reflejarán en este documento.