Conventions and style for documentation
Manual pages structure:
add references to all external commands mentioned anywhere in the text to the SEE ALSO section
add related, not explicitly mentioned commands or pages
the heading levels are validated, underlined text by the following
mandatory, manual page
===mandatory, sections
---optional, sub-sections
^^^optional, paragraphs
"""
command-specific examples are mostly free of restrictions but should be readable in all output formats (manual page, html)
subcommands are in alphabetical order
long command output or shell examples: verbatim output - use
..code-block::directive withbashorplainsyntax highlighting
Quotes, reference, element formatting:
exact syntax: monotype
``usage=0``reference to arguments: italics
*italics*command reference:
any system command, example, bold text by directive
:command:`btrfs filesystem show`subcommands with their own manual page
:doc:`btrfs-filesystem`subcommand names should be spelled in full, i.e. filesystem instead of fi
file, directory or path references: by directive
:file:`/path`section references without a label: italics
*EXAMPLES*section references with a target label: reference by directive
:ref:`visible text <target-label>`argument name in option description: caps in angle brackets
<NAME>reference in help text: caps
NAMEalso possible: caps italics
*NAME*
command short description:
command name: bold (not by directive)
**command**optional unspecified: brackets
[options]mandatory argument: angle brackets
<path>optional parameter with argument:
[-p <path>]
Referencing:
add target labels for commands that are referenced and replace command name with the reference target
NOTE: we have either full doc reference by
:doc:`docname`or inter-document reference to an unambiguous label:ref:`target-label`, i.e. this can’t reference a label that may appear in more files due to including, this will lead to the document itself that may not be the full pageambiguous or duplicate labels (that exist in a file that is included from other documents) need to be
defined as
.. duplabel:: labelnamereferenced as
:docref:`visible text <document:label>`
generic links can use the free form link syntax with description
`Link text <https://example.com>`__(note the double underscore, this is anonymous link and does not create a reference) or plain link that will auto-render to a clickable link https://example.comin manual pages: always use full link as it’s meant to be read in terminal output and must allow copy&paste
own manual page references:
:doc:`btrfs-filesystem`, i.e. it’s the document name, it will render the section automaticallyother manual pages
:manref:page(1), the exact name and section number
add more clickable references rather than less
custom rules and directives are implemented in
Documentation/conf.py
Conventions:
version should be formatted like
6.1orv6.1and clear what project/tool it’s related to unless it’s obvious from the context
Other:
for notes use
.. note::directive, is rendered as a separate paragraph and should be used only for important information.. warning::directive is rendered as a separate paragraph and most likely more visible than NOTE, use for critical information that may cause harm, irreversible state or performance problemsshould point reader to other part of documentation to seek more details
References:
RST and Sphinx Cheatsheet https://spl.hevs.io/spl-docs/writing/rst/cheatsheet.html
RST Cheat Sheet https://sphinx-tutorial.readthedocs.io/cheatsheet/