[Contributor Guide] RST section, partial
Includes rst conventions for: 1. lines length 2. spaces and tabs 3. titles 4. admonitions 5. code-blocks Implements: blueprint docs-contributor-guide Change-Id: I6e7e51d9196ea7488510dfb038ecbdf5a004cf50
This commit is contained in:
parent
04543f2d6d
commit
674470be07
@ -12,6 +12,7 @@ Contents
|
||||
:maxdepth: 2
|
||||
|
||||
introduction.rst
|
||||
rst_conv.rst
|
||||
|
||||
Search in this guide
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
270
doc/contributor-guide/source/rst_conv.rst
Normal file
270
doc/contributor-guide/source/rst_conv.rst
Normal file
@ -0,0 +1,270 @@
|
||||
|
||||
.. _rst_conv:
|
||||
|
||||
==========================
|
||||
RST formatting conventions
|
||||
==========================
|
||||
|
||||
Follow these guidelines for all the RST source files to keep the documentation
|
||||
format consistent.
|
||||
|
||||
|
||||
General guidelines
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Lines length
|
||||
------------
|
||||
|
||||
Wrap source lines so that lines length does not exceed 79 characters.
|
||||
This requirement matches PEP8 standards (from Python) and helps with
|
||||
side-by-side diffs on reviews.
|
||||
|
||||
.. note::
|
||||
|
||||
Exception to this rule is the content of code-block elements and links
|
||||
within the references.
|
||||
|
||||
When formatting a table that presupposes long lines of text, give
|
||||
the preference to one of the following methods over the ``table`` directive:
|
||||
|
||||
* format a table using the ``list-table`` directive;
|
||||
* format a table using the ``csv-table`` directive;
|
||||
* format information as definition lists to avoid tables where possible.
|
||||
|
||||
Space and tab characters
|
||||
------------------------
|
||||
|
||||
* Do not use tab characters within the code; use space characters instead.
|
||||
|
||||
* Do not place space characters at the end of lines. If used,
|
||||
the checkniceness test will fail because of the trailing whitespaces.
|
||||
|
||||
|
||||
Titles
|
||||
~~~~~~
|
||||
|
||||
Each RST source file has the tree structure. Define up to three heading
|
||||
levels within one file using the following non-alphanumeric characters:
|
||||
|
||||
* **Heading 1** - underline and overline with equal signs;
|
||||
|
||||
* **Heading 2** - underline with tildes;
|
||||
|
||||
* **Heading 3** - underline with dashes.
|
||||
|
||||
**Input**
|
||||
|
||||
.. code::
|
||||
|
||||
=========
|
||||
Heading 1
|
||||
=========
|
||||
|
||||
Body of the first level section that includes general overview
|
||||
of the subject to be covered by the whole section.
|
||||
Can include several focused Heading-2-sections.
|
||||
|
||||
Heading 2
|
||||
~~~~~~~~~
|
||||
|
||||
Body of the second level section that gives detailed explanation of one
|
||||
of the aspects of the subject. Can include several Heading-3-sections.
|
||||
|
||||
Within user guides, it is mostly used to entitle a procedure with a set
|
||||
of actions targeted at a single task performance.
|
||||
For example, "Associate floating IP addresses".
|
||||
|
||||
Heading 3
|
||||
---------
|
||||
|
||||
Body of the third level section.
|
||||
It includes very specific content; and occurs mainly in guides containing
|
||||
technical information for advanced users.
|
||||
|
||||
.. note::
|
||||
|
||||
Under- and overlines should be of the same length
|
||||
as that of the heading text.
|
||||
|
||||
Avoid using lower heading levels by information
|
||||
rewriting and reorganizing.
|
||||
|
||||
|
||||
Specific information
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Use special markups to emphasize specific content within the text.
|
||||
Depending on specific semantic meaning of the message, you can use:
|
||||
|
||||
* **note** - for a message of generic meaning.
|
||||
|
||||
* **warning** or **important** - includes details that can be easily missed,
|
||||
but should not be ignored by a user and are valuable before proceeding.
|
||||
|
||||
* **caution** - delivers information that prevents a user from mistakes
|
||||
and undesirable consequences when following the procedures.
|
||||
|
||||
* **tip** - wraps extra but helpful information.
|
||||
|
||||
Here is the example of the note directive usage; these can be applied to all
|
||||
the admonition directives described above.
|
||||
|
||||
**Input**
|
||||
|
||||
.. code::
|
||||
|
||||
.. note:: This is the text of a generic admonition.
|
||||
This line is the continuation of the first line.
|
||||
|
||||
Note may contain bulleted or enumerated lists,
|
||||
as well as code blocks:
|
||||
|
||||
* first option,
|
||||
* ...
|
||||
|
||||
**Output**
|
||||
|
||||
.. note:: This is the text of a note admonition.
|
||||
This line is the continuation of the first line.
|
||||
|
||||
Note may contain bulleted or enumerated lists,
|
||||
as well as code blocks:
|
||||
|
||||
* first option,
|
||||
* ...
|
||||
|
||||
|
||||
Code samples
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Format code snippets as standalone literal blocks. There are several ways
|
||||
to define a code-block within an RST file.
|
||||
|
||||
Standard literal block
|
||||
----------------------
|
||||
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Directive** | ``::`` or ``code`` |
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Arguments** | none |
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Options** | none |
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Description** | * Introduces a standard reST literal block. |
|
||||
| | * Preserves line breaks and whitespaces. |
|
||||
| | * Automatically highlights language (Python, by |
|
||||
| | default) |
|
||||
+------------------+---------------------------------------------------------+
|
||||
|
||||
Use ``::`` or ``code`` directive if you provide the code snippets written
|
||||
in one programming language within one file. By default, the code-block
|
||||
formatted this way is shown in a Python highlighting mode.
|
||||
|
||||
To define another highlighting language, specify the ``highlight`` directive
|
||||
at the top of the file. Use the ``linenothreshold`` option with it
|
||||
to enumerate lines within the code-block.
|
||||
|
||||
Always switch on the enumeration for the code-blocks that include more
|
||||
than 5 lines.
|
||||
|
||||
**Input**
|
||||
|
||||
.. code::
|
||||
|
||||
.. highlight:: console
|
||||
:linenothreshold: 5
|
||||
|
||||
This is the file body with the code snippet within:
|
||||
|
||||
::
|
||||
|
||||
$ neutron ext-list -c alias -c name
|
||||
+-----------------+--------------------------+
|
||||
| alias | name |
|
||||
+-----------------+--------------------------+
|
||||
| agent_scheduler | Agent Schedulers |
|
||||
| binding | Port Binding |
|
||||
| quotas | Quota management support |
|
||||
| ... | ... |
|
||||
+-----------------+--------------------------+
|
||||
|
||||
**Output**
|
||||
|
||||
.. highlight:: console
|
||||
:linenothreshold: 5
|
||||
|
||||
This is the file body with the code snippet within:
|
||||
|
||||
::
|
||||
|
||||
$ neutron ext-list -c alias -c name
|
||||
+-----------------+--------------------------+
|
||||
| alias | name |
|
||||
+-----------------+--------------------------+
|
||||
| agent_scheduler | Agent Schedulers |
|
||||
| binding | Port Binding |
|
||||
| quotas | Quota management support |
|
||||
| ... | ... |
|
||||
+-----------------+--------------------------+
|
||||
|
||||
|
||||
Non-standard literal block
|
||||
--------------------------
|
||||
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Directive** | ``code-block`` |
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Arguments** | ``python`` (default), ``ruby``, ``c``, ``console``, |
|
||||
| | ``ini``, and others |
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Options** | ``linenos``, ``emphasize-lines`` |
|
||||
+------------------+---------------------------------------------------------+
|
||||
| **Description** | * Specifies the highlighting language directly. |
|
||||
| | * Preserves line breaks and whitespaces. |
|
||||
| | * Has special options to number lines and emphasize |
|
||||
| | specific lines within the block. |
|
||||
+------------------+---------------------------------------------------------+
|
||||
|
||||
To optimize the output of code for a specific programming language, specify
|
||||
the corresponding argument with ``code-block``. Use ``ini`` for configuration
|
||||
files, ``console`` for console inputs and outputs, and so on.
|
||||
|
||||
Specify ``linenos`` for automatic enumeration of the code-blocks that include
|
||||
more than 5 lines.
|
||||
|
||||
If you need to draw a user's attention to the particular code lines, use
|
||||
the ``emphasize-lines`` option followed by the numbers of the lines to
|
||||
emphasize.
|
||||
|
||||
**Input**
|
||||
|
||||
.. code::
|
||||
|
||||
.. code-block:: ini
|
||||
:emphasize-lines: 1, 5-7
|
||||
:linenos:
|
||||
|
||||
# Configuration for nova-rootwrap
|
||||
# This file should be owned by (and only-writeable by) the root user
|
||||
|
||||
[DEFAULT]
|
||||
# List of directories to load filter definitions from (separated by ',').
|
||||
# These directories MUST all be only writeable by root !
|
||||
filters_path=/etc/nova/rootwrap.d,/usr/share/nova/rootwrap
|
||||
|
||||
|
||||
**Output**
|
||||
|
||||
.. code-block:: ini
|
||||
:emphasize-lines: 1, 5-7
|
||||
:linenos:
|
||||
|
||||
# Configuration for nova-rootwrap
|
||||
# This file should be owned by (and only-writeable by) the root user
|
||||
|
||||
[DEFAULT]
|
||||
# List of directories to load filter definitions from (separated by ',').
|
||||
# These directories MUST all be only writeable by root !
|
||||
filters_path=/etc/nova/rootwrap.d,/usr/share/nova/rootwrap
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user