mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
561 lines
14 KiB
ReStructuredText
561 lines
14 KiB
ReStructuredText
.. This is a comment. Note how any initial comments are moved by
|
|
transforms to after the document title, subtitle, and docinfo.
|
|
|
|
================================
|
|
reStructuredText Demonstration
|
|
================================
|
|
|
|
.. Above is the document title, and below is the subtitle.
|
|
They are transformed from section titles after parsing.
|
|
|
|
--------------------------------
|
|
Examples of Syntax Constructs
|
|
--------------------------------
|
|
|
|
.. bibliographic fields (which also require a transform):
|
|
|
|
:Author: David Goodger
|
|
:Address: 123 Example Street
|
|
Example, EX Canada
|
|
A1B 2C3
|
|
:Contact: docutils-develop@lists.sourceforge.net
|
|
:Authors: Me; Myself; I
|
|
:organization: humankind
|
|
:date: $Date: 2012-01-03 19:23:53 +0000 (Tue, 03 Jan 2012) $
|
|
:status: This is a "work in progress"
|
|
:revision: $Revision: 7302 $
|
|
: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 document is a demonstration of the reStructuredText markup
|
|
language, containing examples of all basic reStructuredText
|
|
constructs and many advanced constructs.
|
|
|
|
.. meta::
|
|
:keywords: reStructuredText, demonstration, demo, parser
|
|
:description lang=en: A demonstration of the reStructuredText
|
|
markup language, containing examples of all basic
|
|
constructs and many advanced constructs.
|
|
|
|
.. contents:: Table of Contents
|
|
.. section-numbering::
|
|
|
|
|
|
Structural Elements
|
|
===================
|
|
|
|
Section Title
|
|
-------------
|
|
|
|
That's it, the text just above this line.
|
|
|
|
Transitions
|
|
-----------
|
|
|
|
Here's a transition:
|
|
|
|
---------
|
|
|
|
It divides the section.
|
|
|
|
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>`__), 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).
|
|
|
|
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`); a :sub:`subscript`; a :sup:`superscript`;
|
|
and explicit roles for :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.
|
|
|
|
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
|
|
|
|
#. List items may also be auto-enumerated.
|
|
|
|
Definition Lists
|
|
----------------
|
|
|
|
Term
|
|
Definition
|
|
Term : classifier
|
|
Definition paragraph 1.
|
|
|
|
Definition paragraph 2.
|
|
Term
|
|
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.
|
|
|
|
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 is a line block. It ends with a blank line.
|
|
| Each new line begins with a vertical bar ("|").
|
|
| Line breaks and initial indents are preserved.
|
|
| Continuation lines are wrapped portions of long lines;
|
|
they 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 "|".
|
|
|
|
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...
|
|
|
|
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)
|
|
|
|
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)
|
|
|
|
Tables
|
|
------
|
|
|
|
Here's a grid table followed by a simple table:
|
|
|
|
+------------------------+------------+----------+----------+
|
|
| Header row, column 1 | Header 2 | Header 3 | Header 4 |
|
|
| (header rows optional) | | | |
|
|
+========================+============+==========+==========+
|
|
| body row 1, column 1 | column 2 | column 3 | column 4 |
|
|
+------------------------+------------+----------+----------+
|
|
| body row 2 | Cells may span columns. |
|
|
+------------------------+------------+---------------------+
|
|
| body row 3 | Cells may | - Table cells |
|
|
+------------------------+ span rows. | - contain |
|
|
| body row 4 | | - body elements. |
|
|
+------------------------+------------+----------+----------+
|
|
| body row 5 | Cells may also be | |
|
|
| | empty: ``-->`` | |
|
|
+------------------------+-----------------------+----------+
|
|
|
|
===== ===== ======
|
|
Inputs Output
|
|
------------ ------
|
|
A B A or B
|
|
===== ===== ======
|
|
False False False
|
|
True False True
|
|
False True True
|
|
True True True
|
|
===== ===== ======
|
|
|
|
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.
|
|
|
|
.. [*] 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.
|
|
|
|
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
|
|
``````
|
|
|
|
An image directive (also clickable -- a hyperlink reference):
|
|
|
|
.. image:: images/title.png
|
|
:target: directives_
|
|
|
|
A figure directive:
|
|
|
|
.. figure:: images/title.png
|
|
:alt: reStructuredText, the markup syntax
|
|
|
|
A figure is an image with a caption and/or a legend:
|
|
|
|
+------------+-----------------------------------------------+
|
|
| 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 figure directive with center alignment
|
|
|
|
.. figure:: images/title.png
|
|
:align: center
|
|
:width: 300
|
|
|
|
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.
|
|
|
|
Topics, Sidebars, and Rubrics
|
|
`````````````````````````````
|
|
|
|
.. 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 appears beside the main text with a border and
|
|
background color.
|
|
|
|
.. topic:: Topic Title
|
|
|
|
This is a topic.
|
|
|
|
.. rubric:: This is a rubric
|
|
|
|
Target Footnotes
|
|
````````````````
|
|
|
|
.. target-notes::
|
|
|
|
Replacement Text
|
|
````````````````
|
|
|
|
I recommend you try |Python|_.
|
|
|
|
.. |Python| replace:: Python, *the* best language around
|
|
|
|
Compound Paragraph
|
|
``````````````````
|
|
|
|
.. compound::
|
|
|
|
This paragraph contains a literal block::
|
|
|
|
Connecting... OK
|
|
Transmitting data... OK
|
|
Disconnecting... OK
|
|
|
|
and thus consists of a simple paragraph, a literal block, and
|
|
another simple paragraph. Nonetheless it is semantically *one*
|
|
paragraph.
|
|
|
|
This construct is called a *compound paragraph* and can be produced
|
|
with the "compound" directive.
|
|
|
|
Substitution Definitions
|
|
------------------------
|
|
|
|
An inline image (|example|) example:
|
|
|
|
.. |EXAMPLE| image:: 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.
|
|
|
|
(View the HTML source to see the comment.)
|
|
|
|
Error Handling
|
|
==============
|
|
|
|
Any errors caught during processing will generate system messages.
|
|
|
|
|*** Expect 6 errors (including this one). ***|
|
|
|
|
There should be six messages in the following, auto-generated
|
|
section, "Docutils System Messages":
|
|
|
|
.. section should be added by Docutils automatically
|
|
|
|
demo.rst from: http://docutils.sourceforge.net/docs/user/rst/demo.txt
|