ReStructuredText


reStructuredText is a file format for textual data used primarily in the Python programming language community for technical documentation.
It is part of the Docutils project of the Python Doc-SIG, aimed at creating a set of tools for Python similar to Javadoc for Java or Plain Old Documentation for Perl. Docutils can extract comments and information from Python programs, and format them into various forms of program documentation.
In this sense, reStructuredText is a lightweight markup language designed to be both processable by documentation-processing software such as Docutils, and easily readable by human programmers who are reading and writing Python source code.

History

There were a number of problems with the earlier lightweight markup language StructuredText, and reST was developed to address them. The name reStructuredText was chosen to indicate that reST is a "revised, reworked, and reinterpreted StructuredText."
reST began to see significant use in the Python community in 2002.

Applications

reStructuredText is commonly used for technical documentation, for example, in documentation of Python libraries. However, it is suitable for a wide range of texts.
Since 2008, reST has been a core component of Python's Sphinx document generation system.
Trac also supports reStructuredText, as do GitHub and Bitbucket.
In 2011, Distributed Proofreaders, which prepared texts for Project Gutenberg, was considering adoption of reST as a basic format from which other ebook formats could be generated.
In July 2016 the Linux kernel project decided to transition from DocBook based documentation to reStructuredText and the Sphinx toolchain.
The software build tool CMake switched from a custom markup language to reStructuredText in version 3.0 for its documentation.

Examples of reST markup

Headers

Section Header


Subsection Header
-----------------

Lists


- A bullet list item
- Second item
- A sub item
- Spacing between items separates list items
  • Different bullet symbols create separate lists
- Third item
1) An enumerated list item
2) Second item
a) Sub item that goes on at length and thus needs
to be wrapped. Note the indentation that must
match the beginning of the text, not the
enumerator.
i) List items can even include
paragraph breaks.
3) Third item
  1. ) Another enumerated list item
  2. ) Second item

Images


.. image:: /path/to/image.jpg

Named links


A sentence with links to `Wikipedia`_ and the `Linux kernel archive`_.
.. _Wikipedia: https://www.wikipedia.org/
.. _Linux kernel archive: https://www.kernel.org/

Anonymous links


Another sentence with an `anonymous link to the Python website`__.
__ https://www.python.org/

N.B.: named links and anonymous links are enclosed in grave accents, and not in apostrophes.

Literal blocks


some literal text
This may also be used inline at the end of a paragraph, like so::
some more literal text
.. code:: python
print