|
|
|
|
.. This is a comment. Note how any initial comments are moved by
|
|
|
|
|
transforms to after the document title, subtitle, and docinfo.
|
|
|
|
|
|
|
|
|
|
.. _doctitle:
|
|
|
|
|
|
|
|
|
|
================================
|
|
|
|
|
reStructuredText Test Document
|
|
|
|
|
================================
|
|
|
|
|
|
|
|
|
|
.. Above is the document title, and below is the subtitle.
|
|
|
|
|
They are transformed from section titles after parsing.
|
|
|
|
|
|
|
|
|
|
.. _subtitle:
|
|
|
|
|
|
|
|
|
|
--------------------------------
|
|
|
|
|
Examples of Syntax Constructs
|
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
|
|
.. bibliographic fields (which also require a transform):
|
|
|
|
|
|
|
|
|
|
:Author: David Goodger
|
|
|
|
|
:Address: 123 Example Street
|
|
|
|
|
Example, EX Canada
|
|
|
|
|
A1B 2C3
|
|
|
|
|
:Contact: goodger@python.org
|
|
|
|
|
:Authors: Me; Myself; I
|
|
|
|
|
:organization: humankind
|
|
|
|
|
:date: Now, or yesterday. Or maybe even *before* yesterday.
|
|
|
|
|
:status: This is a "work in progress"
|
|
|
|
|
:revision: is managed by a version control system.
|
|
|
|
|
:version: 1
|
|
|
|
|
:copyright: This document has been placed in the public domain. You
|
|
|
|
|
may do with it as you wish. You may copy, modify,
|
|
|
|
|
redistribute, reattribute, sell, buy, rent, lease,
|
|
|
|
|
destroy, or improve it, quote it at length, excerpt,
|
|
|
|
|
incorporate, collate, fold, staple, or mutilate it, or do
|
|
|
|
|
anything else to it that your or anyone else's heart
|
|
|
|
|
desires.
|
|
|
|
|
:field name: This is a "generic bibliographic field".
|
|
|
|
|
:field name "2":
|
|
|
|
|
Generic bibliographic fields may contain multiple body elements.
|
|
|
|
|
|
|
|
|
|
Like this.
|
|
|
|
|
|
|
|
|
|
:Dedication:
|
|
|
|
|
|
|
|
|
|
For Docutils users & co-developers.
|
|
|
|
|
|
|
|
|
|
:abstract:
|
|
|
|
|
|
|
|
|
|
This is a test document, containing at least one example of each
|
|
|
|
|
reStructuredText construct.
|
|
|
|
|
|
|
|
|
|
.. meta::
|
|
|
|
|
:keywords: reStructuredText, test, parser
|
|
|
|
|
:description lang=en: A test document, containing at least one
|
|
|
|
|
example of each reStructuredText construct.
|
|
|
|
|
|
|
|
|
|
.. raw:: latex
|
|
|
|
|
|
|
|
|
|
\pagebreak[4] % start ToC on new page
|
|
|
|
|
|
|
|
|
|
.. contents:: Table of Contents
|
|
|
|
|
.. section-numbering::
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Structural Elements
|
|
|
|
|
===================
|
|
|
|
|
|
|
|
|
|
Section Title
|
|
|
|
|
-------------
|
|
|
|
|
Section Subtitle
|
|
|
|
|
````````````````
|
|
|
|
|
|
|
|
|
|
Lone subsections are converted to a section subtitle by a transform
|
|
|
|
|
activated with the ``--section-subtitles`` command line option or the
|
|
|
|
|
``sectsubtitle-xform`` configuration value.
|
|
|
|
|
|
|
|
|
|
Empty Section
|
|
|
|
|
-------------
|
|
|
|
|
|
|
|
|
|
Transitions
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
Here's a transition:
|
|
|
|
|
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
It divides the section. Transitions may also occur between sections:
|
|
|
|
|
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
Body Elements
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
Paragraphs
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
A paragraph.
|
|
|
|
|
|
|
|
|
|
Inline Markup
|
|
|
|
|
`````````````
|
|
|
|
|
|
|
|
|
|
Paragraphs contain text and may contain inline markup: *emphasis*,
|
|
|
|
|
**strong emphasis**, ``inline literals``, standalone hyperlinks
|
|
|
|
|
(http://www.python.org), external hyperlinks (Python_), internal
|
|
|
|
|
cross-references (example_), external hyperlinks with embedded URIs
|
|
|
|
|
(`Python web site <http://www.python.org>`__), `anonymous hyperlink
|
|
|
|
|
references`__ (`a second reference`__), footnote references (manually
|
|
|
|
|
numbered [1]_, anonymous auto-numbered [#]_, labeled auto-numbered
|
|
|
|
|
[#label]_, or symbolic [*]_), citation references ([CIT2002]_),
|
|
|
|
|
substitution references (|example|), and _`inline hyperlink targets`
|
|
|
|
|
(see Targets_ below for a reference back to here). Character-level
|
|
|
|
|
inline markup is also possible (although exceedingly ugly!) in *re*\
|
|
|
|
|
``Structured``\ *Text*. Problems are indicated by |problematic| text
|
|
|
|
|
(generated by processing errors; this one is intentional). Here is a
|
|
|
|
|
reference to the doctitle_ and the subtitle_.
|
|
|
|
|
|
|
|
|
|
__ http://www.python.org/
|
|
|
|
|
__ http://docutils.sourceforge.net/
|
|
|
|
|
|
|
|
|
|
The default role for interpreted text is `Title Reference`. Here are
|
|
|
|
|
some explicit interpreted text roles: a PEP reference (:PEP:`287`); an
|
|
|
|
|
RFC reference (:RFC:`2822`); an abbreviation (:ab:`abb.`), an acronym
|
|
|
|
|
(:ac:`reST`), code (:code:`print "hello world"`); a :sub:`subscript`;
|
|
|
|
|
a :sup:`superscript` and explicit roles for :title:`Docutils`'
|
|
|
|
|
:emphasis:`standard` :strong:`inline` :literal:`markup`.
|
|
|
|
|
|
|
|
|
|
.. DO NOT RE-WRAP THE FOLLOWING PARAGRAPH!
|
|
|
|
|
|
|
|
|
|
Let's test wrapping and whitespace significance in inline literals:
|
|
|
|
|
``This is an example of --inline-literal --text, --including some--
|
|
|
|
|
strangely--hyphenated-words. Adjust-the-width-of-your-browser-window
|
|
|
|
|
to see how the text is wrapped. -- ---- -------- Now note the
|
|
|
|
|
spacing between the words of this sentence (words
|
|
|
|
|
should be grouped in pairs).``
|
|
|
|
|
|
|
|
|
|
If the ``--pep-references`` option was supplied, there should be a
|
|
|
|
|
live link to PEP 258 here.
|
|
|
|
|
|
|
|
|
|
Bullet Lists
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
- A bullet list
|
|
|
|
|
|
|
|
|
|
+ Nested bullet list.
|
|
|
|
|
+ Nested item 2.
|
|
|
|
|
|
|
|
|
|
- Item 2.
|
|
|
|
|
|
|
|
|
|
Paragraph 2 of item 2.
|
|
|
|
|
|
|
|
|
|
* Nested bullet list.
|
|
|
|
|
* Nested item 2.
|
|
|
|
|
|
|
|
|
|
- Third level.
|
|
|
|
|
- Item 2.
|
|
|
|
|
|
|
|
|
|
* Nested item 3.
|
|
|
|
|
|
|
|
|
|
* This nested list should be compacted by the HTML writer.
|
|
|
|
|
|
|
|
|
|
.. _target:
|
|
|
|
|
|
|
|
|
|
.. Even if this item contains a target and a comment.
|
|
|
|
|
|
|
|
|
|
Enumerated Lists
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
1. Arabic numerals.
|
|
|
|
|
|
|
|
|
|
a) lower alpha)
|
|
|
|
|
|
|
|
|
|
(i) (lower roman)
|
|
|
|
|
|
|
|
|
|
A. upper alpha.
|
|
|
|
|
|
|
|
|
|
I) upper roman)
|
|
|
|
|
|
|
|
|
|
2. Lists that don't start at 1:
|
|
|
|
|
|
|
|
|
|
3. Three
|
|
|
|
|
|
|
|
|
|
4. Four
|
|
|
|
|
|
|
|
|
|
C. C
|
|
|
|
|
|
|
|
|
|
D. D
|
|
|
|
|
|
|
|
|
|
iii. iii
|
|
|
|
|
|
|
|
|
|
iv. iv
|
|
|
|
|
|
|
|
|
|
Definition Lists
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
Term
|
|
|
|
|
Definition
|
|
|
|
|
Term : classifier
|
|
|
|
|
Definition paragraph 1.
|
|
|
|
|
|
|
|
|
|
Definition paragraph 2.
|
|
|
|
|
Term
|
|
|
|
|
Definition
|
|
|
|
|
Term : classifier one : classifier two
|
|
|
|
|
Definition
|
|
|
|
|
|
|
|
|
|
Field Lists
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
:what: Field lists map field names to field bodies, like database
|
|
|
|
|
records. They are often part of an extension syntax. They are
|
|
|
|
|
an unambiguous variant of RFC 2822 fields.
|
|
|
|
|
|
|
|
|
|
:how arg1 arg2:
|
|
|
|
|
|
|
|
|
|
The field marker is a colon, the field name, and a colon.
|
|
|
|
|
|
|
|
|
|
The field body may contain one or more body elements, indented
|
|
|
|
|
relative to the field marker.
|
|
|
|
|
|
|
|
|
|
:credits:
|
|
|
|
|
|
|
|
|
|
.. class:: credits
|
|
|
|
|
|
|
|
|
|
This paragraph has the `credits` class set. (This is actually not
|
|
|
|
|
about credits but just for ensuring that the class attribute
|
|
|
|
|
doesn't get stripped away.)
|
|
|
|
|
|
|
|
|
|
Option Lists
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
For listing command-line options:
|
|
|
|
|
|
|
|
|
|
-a command-line option "a"
|
|
|
|
|
-b file options can have arguments
|
|
|
|
|
and long descriptions
|
|
|
|
|
--long options can be long also
|
|
|
|
|
--input=file long options can also have
|
|
|
|
|
arguments
|
|
|
|
|
|
|
|
|
|
--very-long-option
|
|
|
|
|
The description can also start on the next line.
|
|
|
|
|
|
|
|
|
|
The description may contain multiple body elements,
|
|
|
|
|
regardless of where it starts.
|
|
|
|
|
|
|
|
|
|
-x, -y, -z Multiple options are an "option group".
|
|
|
|
|
-v, --verbose Commonly-seen: short & long options.
|
|
|
|
|
-1 file, --one=file, --two file
|
|
|
|
|
Multiple options with arguments.
|
|
|
|
|
/V DOS/VMS-style options too
|
|
|
|
|
|
|
|
|
|
There must be at least two spaces between the option and the
|
|
|
|
|
description.
|
|
|
|
|
|
|
|
|
|
Literal Blocks
|
|
|
|
|
--------------
|
|
|
|
|
|
|
|
|
|
Literal blocks are indicated with a double-colon ("::") at the end of
|
|
|
|
|
the preceding paragraph (over there ``-->``). They can be indented::
|
|
|
|
|
|
|
|
|
|
if literal_block:
|
|
|
|
|
text = 'is left as-is'
|
|
|
|
|
spaces_and_linebreaks = 'are preserved'
|
|
|
|
|
markup_processing = None
|
|
|
|
|
|
|
|
|
|
Or they can be quoted without indentation::
|
|
|
|
|
|
|
|
|
|
>> Great idea!
|
|
|
|
|
>
|
|
|
|
|
> Why didn't I think of that?
|
|
|
|
|
|
|
|
|
|
Line Blocks
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
This section tests line blocks. Line blocks are body elements which
|
|
|
|
|
consist of lines and other line blocks. Nested line blocks cause
|
|
|
|
|
indentation.
|
|
|
|
|
|
|
|
|
|
| This is a line block. It ends with a blank line.
|
|
|
|
|
| New lines begin with a vertical bar ("|").
|
|
|
|
|
| Line breaks and initial indent are significant, and preserved.
|
|
|
|
|
| Continuation lines are also possible. A long line that is intended
|
|
|
|
|
to wrap should begin with a space in place of the vertical bar.
|
|
|
|
|
| The left edge of a continuation line need not be aligned with
|
|
|
|
|
the left edge of the text above it.
|
|
|
|
|
|
|
|
|
|
| This is a second line block.
|
|
|
|
|
|
|
|
|
|
|
| Blank lines are permitted internally, but they must begin with a "|".
|
|
|
|
|
|
|
|
|
|
Another line block, surrounded by paragraphs:
|
|
|
|
|
|
|
|
|
|
| And it's no good waiting by the window
|
|
|
|
|
| It's no good waiting for the sun
|
|
|
|
|
| Please believe me, the things you dream of
|
|
|
|
|
| They don't fall in the lap of no-one
|
|
|
|
|
|
|
|
|
|
Take it away, Eric the Orchestra Leader!
|
|
|
|
|
|
|
|
|
|
| A one, two, a one two three four
|
|
|
|
|
|
|
|
|
|
|
| Half a bee, philosophically,
|
|
|
|
|
| must, *ipso facto*, half not be.
|
|
|
|
|
| But half the bee has got to be,
|
|
|
|
|
| *vis a vis* its entity. D'you see?
|
|
|
|
|
|
|
|
|
|
|
| But can a bee be said to be
|
|
|
|
|
| or not to be an entire bee,
|
|
|
|
|
| when half the bee is not a bee,
|
|
|
|
|
| due to some ancient injury?
|
|
|
|
|
|
|
|
|
|
|
| Singing...
|
|
|
|
|
|
|
|
|
|
A line block, like the following poem by Christian Morgenstern, can
|
|
|
|
|
also be centre-aligned:
|
|
|
|
|
|
|
|
|
|
.. class:: language-de align-center
|
|
|
|
|
|
|
|
|
|
| **Die Trichter**
|
|
|
|
|
|
|
|
|
|
|
| Zwei Trichter wandeln durch die Nacht.
|
|
|
|
|
| Durch ihres Rumpfs verengten Schacht
|
|
|
|
|
| fließt weißes Mondlicht
|
|
|
|
|
| still und heiter
|
|
|
|
|
| auf ihren
|
|
|
|
|
| Waldweg
|
|
|
|
|
| u. s.
|
|
|
|
|
| w.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Block Quotes
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
Block quotes consist of indented body elements:
|
|
|
|
|
|
|
|
|
|
My theory by A. Elk. Brackets Miss, brackets. This theory goes
|
|
|
|
|
as follows and begins now. All brontosauruses are thin at one
|
|
|
|
|
end, much much thicker in the middle and then thin again at the
|
|
|
|
|
far end. That is my theory, it is mine, and belongs to me and I
|
|
|
|
|
own it, and what it is too.
|
|
|
|
|
|
|
|
|
|
-- Anne Elk (Miss)
|
|
|
|
|
|
|
|
|
|
The language of a quote (like any other object) can be specified by
|
|
|
|
|
a class attribute:
|
|
|
|
|
|
|
|
|
|
.. class:: language-fr
|
|
|
|
|
|
|
|
|
|
..
|
|
|
|
|
|
|
|
|
|
ReStructuredText est un langage de balisage léger utilisé
|
|
|
|
|
notamment dans la documentation du langage Python.
|
|
|
|
|
|
|
|
|
|
Doctest Blocks
|
|
|
|
|
--------------
|
|
|
|
|
|
|
|
|
|
>>> print 'Python-specific usage examples; begun with ">>>"'
|
|
|
|
|
Python-specific usage examples; begun with ">>>"
|
|
|
|
|
>>> print '(cut and pasted from interactive Python sessions)'
|
|
|
|
|
(cut and pasted from interactive Python sessions)
|
|
|
|
|
|
|
|
|
|
Footnotes
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
.. [1] A footnote contains body elements, consistently indented by at
|
|
|
|
|
least 3 spaces.
|
|
|
|
|
|
|
|
|
|
This is the footnote's second paragraph.
|
|
|
|
|
|
|
|
|
|
.. [#label] Footnotes may be numbered, either manually (as in [1]_) or
|
|
|
|
|
automatically using a "#"-prefixed label. This footnote has a
|
|
|
|
|
label so it can be referred to from multiple places, both as a
|
|
|
|
|
footnote reference ([#label]_) and as a `hyperlink reference`__.
|
|
|
|
|
|
|
|
|
|
__ label_
|
|
|
|
|
|
|
|
|
|
.. [#] This footnote is numbered automatically and anonymously using a
|
|
|
|
|
label of "#" only.
|
|
|
|
|
|
|
|
|
|
This is the second paragraph.
|
|
|
|
|
|
|
|
|
|
And this is the third paragraph.
|
|
|
|
|
|
|
|
|
|
.. [*] Footnotes may also use symbols, specified with a "*" label.
|
|
|
|
|
Here's a reference to the next footnote: [*]_.
|
|
|
|
|
|
|
|
|
|
.. [*] This footnote shows the next symbol in the sequence.
|
|
|
|
|
|
|
|
|
|
.. [4] Here's an unreferenced footnote, with a reference to a
|
|
|
|
|
nonexistent footnote: [5]_.
|
|
|
|
|
|
|
|
|
|
Citations
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
.. [CIT2002] Citations are text-labeled footnotes. They may be
|
|
|
|
|
rendered separately and differently from footnotes.
|
|
|
|
|
|
|
|
|
|
Here's a reference to the above, [CIT2002]_, and a [nonexistent]_
|
|
|
|
|
citation.
|
|
|
|
|
|
|
|
|
|
.. _Another Target:
|
|
|
|
|
|
|
|
|
|
Targets
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
|
|
.. _example:
|
|
|
|
|
|
|
|
|
|
This paragraph is pointed to by the explicit "example" target. A
|
|
|
|
|
reference can be found under `Inline Markup`_, above. `Inline
|
|
|
|
|
hyperlink targets`_ are also possible.
|
|
|
|
|
|
|
|
|
|
Section headers are implicit targets, referred to by name. See
|
|
|
|
|
Targets_, which is a subsection of `Body Elements`_.
|
|
|
|
|
|
|
|
|
|
Explicit external targets are interpolated into references such as
|
|
|
|
|
"Python_".
|
|
|
|
|
|
|
|
|
|
.. _Python: http://www.python.org/
|
|
|
|
|
|
|
|
|
|
Targets may be indirect and anonymous. Thus `this phrase`__ may also
|
|
|
|
|
refer to the Targets_ section.
|
|
|
|
|
|
|
|
|
|
__ Targets_
|
|
|
|
|
|
|
|
|
|
Here's a `hyperlink reference without a target`_, which generates an
|
|
|
|
|
error.
|
|
|
|
|
|
|
|
|
|
Duplicate Target Names
|
|
|
|
|
``````````````````````
|
|
|
|
|
|
|
|
|
|
Duplicate names in section headers or other implicit targets will
|
|
|
|
|
generate "info" (level-1) system messages. Duplicate names in
|
|
|
|
|
explicit targets will generate "warning" (level-2) system messages.
|
|
|
|
|
|
|
|
|
|
Duplicate Target Names
|
|
|
|
|
``````````````````````
|
|
|
|
|
|
|
|
|
|
Since there are two "Duplicate Target Names" section headers, we
|
|
|
|
|
cannot uniquely refer to either of them by name. If we try to (like
|
|
|
|
|
this: `Duplicate Target Names`_), an error is generated.
|
|
|
|
|
|
|
|
|
|
Directives
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
.. contents:: :local:
|
|
|
|
|
|
|
|
|
|
These are just a sample of the many reStructuredText Directives. For
|
|
|
|
|
others, please see
|
|
|
|
|
http://docutils.sourceforge.net/docs/ref/rst/directives.html.
|
|
|
|
|
|
|
|
|
|
Document Parts
|
|
|
|
|
``````````````
|
|
|
|
|
|
|
|
|
|
An example of the "contents" directive can be seen above this section
|
|
|
|
|
(a local, untitled table of contents_) and at the beginning of the
|
|
|
|
|
document (a document-wide `table of contents`_).
|
|
|
|
|
|
|
|
|
|
Images and Figures
|
|
|
|
|
``````````````````
|
|
|
|
|
|
|
|
|
|
An image directive (also clickable -- a hyperlink reference):
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/title.png
|
|
|
|
|
:class: class1 class2
|
|
|
|
|
:target: directives_
|
|
|
|
|
|
|
|
|
|
Image with multiple IDs:
|
|
|
|
|
|
|
|
|
|
.. _image target 1:
|
|
|
|
|
.. _image target 2:
|
|
|
|
|
.. _image target 3:
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/title.png
|
|
|
|
|
|
|
|
|
|
A centered image:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:align: center
|
|
|
|
|
|
|
|
|
|
A left-aligned image:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:align: left
|
|
|
|
|
|
|
|
|
|
This paragraph might flow around the image.
|
|
|
|
|
The specific behavior depends upon the style sheet and
|
|
|
|
|
the browser or rendering software used.
|
|
|
|
|
|
|
|
|
|
A right-aligned image:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:align: right
|
|
|
|
|
|
|
|
|
|
This paragraph might flow around the image.
|
|
|
|
|
The specific behavior depends upon the style sheet and
|
|
|
|
|
the browser or rendering software used.
|
|
|
|
|
|
|
|
|
|
For inline images see `Substitution Definitions`_.
|
|
|
|
|
|
|
|
|
|
Image size:
|
|
|
|
|
|
|
|
|
|
An image 2 em wide:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:width: 2 em
|
|
|
|
|
|
|
|
|
|
An image 2 em wide and 15 pixel high:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:width: 2em
|
|
|
|
|
:height: 15 px
|
|
|
|
|
|
|
|
|
|
An image occupying 50% of the line width:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/title.png
|
|
|
|
|
:width: 50%
|
|
|
|
|
|
|
|
|
|
An image 2 cm high:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:height: 2 cm
|
|
|
|
|
|
|
|
|
|
A *figure* is an image with a caption and/or a legend. With page-based output
|
|
|
|
|
media, figures might float to a different position if this helps the page
|
|
|
|
|
layout.
|
|
|
|
|
|
|
|
|
|
.. figure:: ../../../docs/user/rst/images/title.png
|
|
|
|
|
:figclass: figclass1 figclass2
|
|
|
|
|
:class: class1 class2
|
|
|
|
|
:alt: reStructuredText, the markup syntax
|
|
|
|
|
:width: 258
|
|
|
|
|
|
|
|
|
|
Plaintext markup syntax and parser system.
|
|
|
|
|
|
|
|
|
|
+------------+-----------------------------------------------+
|
|
|
|
|
| re | Revised, revisited, based on 're' module. |
|
|
|
|
|
+------------+-----------------------------------------------+
|
|
|
|
|
| Structured | Structure-enhanced text, structuredtext. |
|
|
|
|
|
+------------+-----------------------------------------------+
|
|
|
|
|
| Text | Well it is, isn't it? |
|
|
|
|
|
+------------+-----------------------------------------------+
|
|
|
|
|
|
|
|
|
|
This paragraph is also part of the legend.
|
|
|
|
|
|
|
|
|
|
A left-aligned figure:
|
|
|
|
|
|
|
|
|
|
.. figure:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:figclass: figclass1 figclass2
|
|
|
|
|
:class: class1 class2
|
|
|
|
|
:alt: reStructuredText, the markup syntax
|
|
|
|
|
:align: left
|
|
|
|
|
:width: 40 px
|
|
|
|
|
:figwidth: 70 %
|
|
|
|
|
|
|
|
|
|
This is the caption.
|
|
|
|
|
|
|
|
|
|
This is the legend.
|
|
|
|
|
|
|
|
|
|
The legend may consist of several paragraphs.
|
|
|
|
|
|
|
|
|
|
This paragraph might flow around the figure.
|
|
|
|
|
|
|
|
|
|
The specific behavior depends upon the style sheet and the browser or
|
|
|
|
|
rendering software used.
|
|
|
|
|
|
|
|
|
|
A centered figure:
|
|
|
|
|
|
|
|
|
|
.. figure:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:align: center
|
|
|
|
|
:width: 40 px
|
|
|
|
|
|
|
|
|
|
This is the caption.
|
|
|
|
|
|
|
|
|
|
This is the legend.
|
|
|
|
|
|
|
|
|
|
The legend may consist of several paragraphs.
|
|
|
|
|
|
|
|
|
|
This paragraph might flow around the figure.
|
|
|
|
|
|
|
|
|
|
The specific behavior depends upon the style sheet and the browser or
|
|
|
|
|
rendering software used.
|
|
|
|
|
|
|
|
|
|
A right-aligned figure:
|
|
|
|
|
|
|
|
|
|
.. figure:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
:align: right
|
|
|
|
|
:width: 40 px
|
|
|
|
|
|
|
|
|
|
This is the caption.
|
|
|
|
|
|
|
|
|
|
This is the legend.
|
|
|
|
|
|
|
|
|
|
The legend may consist of several paragraphs.
|
|
|
|
|
|
|
|
|
|
This paragraph might flow around the figure. The specific behavior depends
|
|
|
|
|
upon the style sheet and the browser or rendering software used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tables may be given titles and additional arguments with the *table*
|
|
|
|
|
directive:
|
|
|
|
|
|
|
|
|
|
.. Table:: left-aligned table
|
|
|
|
|
:align: left
|
|
|
|
|
|
|
|
|
|
===== =====
|
|
|
|
|
A not A
|
|
|
|
|
===== =====
|
|
|
|
|
False True
|
|
|
|
|
True False
|
|
|
|
|
===== =====
|
|
|
|
|
|
|
|
|
|
.. Table:: center-aligned table
|
|
|
|
|
:align: center
|
|
|
|
|
|
|
|
|
|
===== =====
|
|
|
|
|
A not A
|
|
|
|
|
===== =====
|
|
|
|
|
False True
|
|
|
|
|
True False
|
|
|
|
|
===== =====
|
|
|
|
|
|
|
|
|
|
.. Table:: right-aligned table
|
|
|
|
|
:align: right
|
|
|
|
|
|
|
|
|
|
===== =====
|
|
|
|
|
A not A
|
|
|
|
|
===== =====
|
|
|
|
|
False True
|
|
|
|
|
True False
|
|
|
|
|
===== =====
|
|
|
|
|
|
|
|
|
|
With the "widths" argument "auto" (or "class" value "colwidths-auto"),
|
|
|
|
|
column widths are determined by the backend (if supported by the
|
|
|
|
|
writer/backend).
|
|
|
|
|
|
|
|
|
|
.. _target1:
|
|
|
|
|
.. _target2:
|
|
|
|
|
|
|
|
|
|
.. table::
|
|
|
|
|
:widths: auto
|
|
|
|
|
|
|
|
|
|
======= ======= ==========
|
|
|
|
|
A B A or B
|
|
|
|
|
======= ======= ==========
|
|
|
|
|
False False False
|
|
|
|
|
True False True
|
|
|
|
|
False True True
|
|
|
|
|
True True True
|
|
|
|
|
======= ======= ==========
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Admonitions
|
|
|
|
|
```````````
|
|
|
|
|
|
|
|
|
|
.. Attention:: Directives at large.
|
|
|
|
|
|
|
|
|
|
.. Caution::
|
|
|
|
|
|
|
|
|
|
Don't take any wooden nickels.
|
|
|
|
|
|
|
|
|
|
.. DANGER:: Mad scientist at work!
|
|
|
|
|
|
|
|
|
|
.. Error:: Does not compute.
|
|
|
|
|
|
|
|
|
|
.. Hint:: It's bigger than a bread box.
|
|
|
|
|
|
|
|
|
|
.. Important::
|
|
|
|
|
- Wash behind your ears.
|
|
|
|
|
- Clean up your room.
|
|
|
|
|
- Call your mother.
|
|
|
|
|
- Back up your data.
|
|
|
|
|
|
|
|
|
|
.. Note:: This is a note.
|
|
|
|
|
|
|
|
|
|
.. Tip:: 15% if the service is good.
|
|
|
|
|
|
|
|
|
|
.. WARNING:: Strong prose may provoke extreme mental exertion.
|
|
|
|
|
Reader discretion is strongly advised.
|
|
|
|
|
|
|
|
|
|
.. admonition:: And, by the way...
|
|
|
|
|
|
|
|
|
|
You can make up your own admonition too.
|
|
|
|
|
|
|
|
|
|
.. _Docutils: http://docutils.sourceforge.net/
|
|
|
|
|
|
|
|
|
|
Topics, Sidebars, and Rubrics
|
|
|
|
|
`````````````````````````````
|
|
|
|
|
|
|
|
|
|
*Sidebars* are like miniature, parallel documents.
|
|
|
|
|
|
|
|
|
|
.. sidebar:: Sidebar Title
|
|
|
|
|
:subtitle: Optional Subtitle
|
|
|
|
|
|
|
|
|
|
This is a sidebar. It is for text outside the flow of the main
|
|
|
|
|
text.
|
|
|
|
|
|
|
|
|
|
.. rubric:: This is a rubric inside a sidebar
|
|
|
|
|
|
|
|
|
|
Sidebars often appear beside the main text with a border and a different
|
|
|
|
|
background or font color.
|
|
|
|
|
|
|
|
|
|
A *topic* is like a block quote with a title, or a self-contained section
|
|
|
|
|
with no subsections.
|
|
|
|
|
|
|
|
|
|
.. topic:: Topic Title
|
|
|
|
|
|
|
|
|
|
This is a topic.
|
|
|
|
|
|
|
|
|
|
A *rubric* is like an informal heading that doesn't correspond to the
|
|
|
|
|
document's structure. It is typically highlighted in red (hence the name).
|
|
|
|
|
|
|
|
|
|
.. rubric:: This is a rubric
|
|
|
|
|
|
|
|
|
|
Topics and rubrics can be used at places where a `section title`_ is not
|
|
|
|
|
allowed (e.g. inside a directive).
|
|
|
|
|
|
|
|
|
|
Target Footnotes
|
|
|
|
|
````````````````
|
|
|
|
|
|
|
|
|
|
.. target-notes::
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Replacement Text
|
|
|
|
|
````````````````
|
|
|
|
|
|
|
|
|
|
I recommend you try |Python|_.
|
|
|
|
|
|
|
|
|
|
.. |Python| replace:: Python, *the* best language around
|
|
|
|
|
|
|
|
|
|
Compound Paragraph
|
|
|
|
|
``````````````````
|
|
|
|
|
|
|
|
|
|
The *compound* directive is used to create a "compound paragraph", which
|
|
|
|
|
is a single logical paragraph containing multiple physical body
|
|
|
|
|
elements. For example:
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
|
|
|
|
|
The 'rm' command is very dangerous. If you are logged
|
|
|
|
|
in as root and enter ::
|
|
|
|
|
|
|
|
|
|
cd /
|
|
|
|
|
rm -rf *
|
|
|
|
|
|
|
|
|
|
you will erase the entire contents of your file system.
|
|
|
|
|
|
|
|
|
|
Test the handling and display of compound paragraphs:
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
:class: some-class
|
|
|
|
|
|
|
|
|
|
Compound 2, paragraph 1,
|
|
|
|
|
|
|
|
|
|
compound 2, paragraph 2,
|
|
|
|
|
|
|
|
|
|
* list item 1,
|
|
|
|
|
* list item 2,
|
|
|
|
|
|
|
|
|
|
compound 2, paragraph 3.
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
|
|
|
|
|
Compound 3, only consisting of one paragraph.
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
Compound 4.
|
|
|
|
|
This one starts with a literal block.
|
|
|
|
|
|
|
|
|
|
Compound 4, paragraph following the literal block.
|
|
|
|
|
|
|
|
|
|
Now something *really* perverted -- a nested compound block. This is
|
|
|
|
|
just to test that it works at all; the results don't have to be
|
|
|
|
|
meaningful.
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
|
|
|
|
|
Compound 5, block 1 (a paragraph).
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
|
|
|
|
|
Compound 6 is block 2 in compound 5.
|
|
|
|
|
|
|
|
|
|
Compound 6, another paragraph.
|
|
|
|
|
|
|
|
|
|
Compound 5, block 3 (a paragraph).
|
|
|
|
|
|
|
|
|
|
.. compound::
|
|
|
|
|
|
|
|
|
|
Compound 7, tests the inclusion of various block-level
|
|
|
|
|
elements in one logical paragraph. First a table,
|
|
|
|
|
|
|
|
|
|
+--------------------+--------------------+--------------------+
|
|
|
|
|
| Left cell, first | Middle cell, | Right cell. |
|
|
|
|
|
| paragraph. | consisting of | |
|
|
|
|
|
| | exactly one | Paragraph 2. |
|
|
|
|
|
| Left cell, second | paragraph. | |
|
|
|
|
|
| paragraph. | | Paragraph 3. |
|
|
|
|
|
+--------------------+--------------------+--------------------+
|
|
|
|
|
|
|
|
|
|
followed by a paragraph. This physical paragraph is
|
|
|
|
|
actually a continuation of the paragraph before the table. It is followed
|
|
|
|
|
by
|
|
|
|
|
|
|
|
|
|
a quote and
|
|
|
|
|
|
|
|
|
|
#. an enumerated list,
|
|
|
|
|
|
|
|
|
|
a paragraph,
|
|
|
|
|
|
|
|
|
|
--an option list,
|
|
|
|
|
|
|
|
|
|
a paragraph,
|
|
|
|
|
|
|
|
|
|
:a field: list,
|
|
|
|
|
|
|
|
|
|
a paragraph,
|
|
|
|
|
|
|
|
|
|
a definition
|
|
|
|
|
list,
|
|
|
|
|
|
|
|
|
|
a paragraph, an image:
|
|
|
|
|
|
|
|
|
|
.. image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
|
|
|
|
|
a paragraph,
|
|
|
|
|
|
|
|
|
|
| a line
|
|
|
|
|
| block,
|
|
|
|
|
|
|
|
|
|
a paragraph followed by a comment,
|
|
|
|
|
|
|
|
|
|
.. this is a comment
|
|
|
|
|
|
|
|
|
|
a paragraph, a
|
|
|
|
|
|
|
|
|
|
.. note:: with content
|
|
|
|
|
|
|
|
|
|
and the final paragraph of the compound 7.
|
|
|
|
|
|
|
|
|
|
Parsed Literal Blocks
|
|
|
|
|
`````````````````````
|
|
|
|
|
|
|
|
|
|
.. parsed-literal::
|
|
|
|
|
|
|
|
|
|
This is a parsed literal block.
|
|
|
|
|
This line is indented. The next line is blank.
|
|
|
|
|
|
|
|
|
|
Inline markup is supported, e.g. *emphasis*, **strong**, ``literal
|
|
|
|
|
text``, :sub:`sub-` and :sup:`super`\ scripts,
|
|
|
|
|
inline formulas: :math:`A = 2 \pi r^2`,
|
|
|
|
|
footnotes [1]_, _`hyperlink targets`, and `references
|
|
|
|
|
<http://www.python.org/>`_.
|
|
|
|
|
|
|
|
|
|
Code
|
|
|
|
|
````
|
|
|
|
|
|
|
|
|
|
Blocks of source code can be set with the `code` directive. If the code
|
|
|
|
|
language is specified, the content is parsed and tagged by the Pygments_
|
|
|
|
|
syntax highlighter and can be formatted with a style sheet. (Code parsing
|
|
|
|
|
is turned off using the ``syntax-highlight`` config setting in the test
|
|
|
|
|
conversions in order to get identical results with/without installed
|
|
|
|
|
Pygments highlighter.)
|
|
|
|
|
|
|
|
|
|
.. code:: python
|
|
|
|
|
|
|
|
|
|
print 'This is Python code.'
|
|
|
|
|
|
|
|
|
|
The ``:number-lines:`` option (with optional start value) generates line
|
|
|
|
|
numbers:
|
|
|
|
|
|
|
|
|
|
.. code:: python
|
|
|
|
|
:number-lines: 8
|
|
|
|
|
|
|
|
|
|
# print integers from 0 to 9:
|
|
|
|
|
for i in range(10):
|
|
|
|
|
print i
|
|
|
|
|
|
|
|
|
|
For inline code snippets, there is the `code` role, which can be used
|
|
|
|
|
directly (the code will not be parsed/tagged, as the language is not known)
|
|
|
|
|
or as base for special code roles, e.g. the LaTeX code in the next
|
|
|
|
|
paragraph.
|
|
|
|
|
|
|
|
|
|
.. role:: tex(code)
|
|
|
|
|
:language: tex
|
|
|
|
|
|
|
|
|
|
Docutils uses LaTeX syntax for math directives and roles:
|
|
|
|
|
:tex:`\alpha = f(x)` prints :math:`\alpha = f(x)`.
|
|
|
|
|
|
|
|
|
|
The ``:code:`` option of the `include` directive sets the included content
|
|
|
|
|
as a code block, here the rst file ``header_footer.txt`` with line numbers:
|
|
|
|
|
|
|
|
|
|
.. include:: header_footer.txt
|
|
|
|
|
:code: rst
|
|
|
|
|
:number-lines:
|
|
|
|
|
|
|
|
|
|
.. _Pygments: http://pygments.org/
|
|
|
|
|
|
|
|
|
|
Substitution Definitions
|
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
|
|
An inline image (|example|) example:
|
|
|
|
|
|
|
|
|
|
.. |EXAMPLE| image:: ../../../docs/user/rst/images/biohazard.png
|
|
|
|
|
|
|
|
|
|
(Substitution definitions are not visible in the HTML source.)
|
|
|
|
|
|
|
|
|
|
Comments
|
|
|
|
|
--------
|
|
|
|
|
|
|
|
|
|
Here's one:
|
|
|
|
|
|
|
|
|
|
.. Comments begin with two dots and a space. Anything may
|
|
|
|
|
follow, except for the syntax of footnotes, hyperlink
|
|
|
|
|
targets, directives, or substitution definitions.
|
|
|
|
|
|
|
|
|
|
Double-dashes -- "--" -- must be escaped somehow in HTML output.
|
|
|
|
|
|
|
|
|
|
Comments may contain non-ASCII characters: ä ö ü æ ø å
|
|
|
|
|
|
|
|
|
|
(View the HTML source to see the comment.)
|
|
|
|
|
|
|
|
|
|
Raw text
|
|
|
|
|
--------
|
|
|
|
|
|
|
|
|
|
This does not necessarily look nice, because there may be missing white space.
|
|
|
|
|
|
|
|
|
|
It's just there to freeze the behavior.
|
|
|
|
|
|
|
|
|
|
.. raw:: html latex
|
|
|
|
|
|
|
|
|
|
A test.
|
|
|
|
|
|
|
|
|
|
.. raw:: html latex
|
|
|
|
|
|
|
|
|
|
Second test.
|
|
|
|
|
|
|
|
|
|
.. class:: myclass
|
|
|
|
|
|
|
|
|
|
.. raw:: html latex
|
|
|
|
|
|
|
|
|
|
Another test with myclass set.
|
|
|
|
|
|
|
|
|
|
.. role:: raw-role(raw)
|
|
|
|
|
:format: html latex
|
|
|
|
|
:class: myrawroleclass
|
|
|
|
|
|
|
|
|
|
This is the :raw-role:`fourth test` with myrawroleclass set.
|
|
|
|
|
|
|
|
|
|
.. raw:: html
|
|
|
|
|
|
|
|
|
|
Fifth test in HTML.<br />Line two.
|
|
|
|
|
|
|
|
|
|
.. raw:: latex
|
|
|
|
|
|
|
|
|
|
Fifth test in LaTeX.\\Line two.
|
|
|
|
|
|
|
|
|
|
Container
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
.. container:: custom
|
|
|
|
|
|
|
|
|
|
paragraph 1
|
|
|
|
|
|
|
|
|
|
paragraph 2
|