========
reST文本格式
========
很好玩的格式化文本
写纯文本时很好写,同时也可以用工具格式化。看纯文本也不会太乱。
很好的一个格式,希望成为标准。
:作者: 周海汉
:日期: 2009.10.15
参考 http://docutils.sourceforge.net/rst.html
示例如下:
Inline Markup
(details)
Inline markup allows words and phrases within text to have character styles (like italics and boldface) and functionality (like hyperlinks).
*emphasis* | _emphasis_ | Normally rendered as italics. |
**strong emphasis** | **strong emphasis** | Normally rendered as boldface. |
`interpreted text` | (see note at right) | The rendering and _meaning_ of interpreted text is domain- or application-dependent. It can be used for things like index entries or explicit descriptive markup (like program identifiers). |
``inline literal`` | `inline literal` | Normally rendered as monospaced text. Spaces should be preserved, but line breaks will not be. |
reference_ | [reference](http://writeblog.csdn.net/#hyperlink-targets) | A simple, one-word hyperlink reference. See [Hyperlink Targets](http://writeblog.csdn.net/#hyperlink-targets). |
`phrase reference`_ | [phrase reference](http://writeblog.csdn.net/#hyperlink-targets) | A hyperlink reference with spaces or punctuation needs to be quoted with backquotes. See [Hyperlink Targets](http://writeblog.csdn.net/#hyperlink-targets). |
anonymous__ | [anonymous](http://writeblog.csdn.net/#hyperlink-targets) | With two underscores instead of one, both simple and phrase references may be anonymous (the reference text is not repeated at the target). See [Hyperlink Targets](http://writeblog.csdn.net/#hyperlink-targets). |
_`inline internal target` | inline internal target | A crossreference target within text. See [Hyperlink Targets](http://writeblog.csdn.net/#hyperlink-targets). |
|substitution reference| | (see note at right) | The result is substituted in from the [substitution definition](http://writeblog.csdn.net/#substitution-references-and-definitions). It could be text, an image, a hyperlink, or a combination of these and others. |
footnote reference [1]_ | footnote reference [1](http://writeblog.csdn.net/#footnotes) | See [Footnotes](http://writeblog.csdn.net/#footnotes). |
citation reference [CIT2002]_ | citation reference [[CIT2002]](http://writeblog.csdn.net/#citations) | See [Citations](http://writeblog.csdn.net/#citations). |
http://docutils.sf.net/ | [http://docutils.sf.net/](http://docutils.sf.net/) | A standalone hyperlink. |
Asterisk, backquote, vertical bar, and underscore are inline delimiter characters. Asterisk, backquote, and vertical bar act like quote marks; matching characters surround the marked-up word or phrase, whitespace or other quoting is required outside them, and there can’t be whitespace just inside them. If you want to use inline delimiter characters literally, escape (with backslash) or quote them (with double backquotes; i.e. use inline literals).
In detail, the reStructuredText specification says that in inline markup, the following rules apply to start-strings and end-strings (inline markup delimiters):
- The start-string must start a text block or be immediately preceded by whitespace or any of ‘ “ ( [ { or <.
- The start-string must be immediately followed by non-whitespace.
- The end-string must be immediately preceded by non-whitespace.
- The end-string must end a text block (end of document or followed by a blank line) or be immediately followed by whitespace or any of ‘ “ . , : ; ! ? - ) ] } / or >.
- If a start-string is immediately preceded by one of ‘ “ ( [ { or <, it must not be immediately followed by the corresponding character from ‘ “ ) ] } or >.
- An end-string must be separated by at least one character from the start-string.
- An unescaped backslash preceding a start-string or end-string will disable markup recognition, except for the end-string of inline literals.
Also remember that inline markup may not be nested (well, except that inline literals can contain any of the other inline markup delimiter characters, but that doesn’t count because nothing is processed).
Escaping with Backslashes
(details)
reStructuredText uses backslashes (“”) to override the special meaning given to markup characters and get the literal characters themselves. To get a literal backslash, use an escaped backslash (“"). For example:
*escape* ``with`` "" | _escape_ with "" |
*escape* ``with`` "\" | *escape* ``with`` "" |
In Python strings it will, of course, be necessary to escape any backslash characters so that they actually reach reStructuredText. The simplest way to do this is to use raw strings:
r"""*escape* `with` "\"""" | *escape* `with` "" |
"""\*escape* \`with` "\\"""" | *escape* `with` "" |
"""*escape* `with` "\"""" | _escape_ with "" |
Section Structure
(details)
===== Title ===== Subtitle -------- Titles are underlined (or over- and underlined) with a printing nonalphanumeric 7-bit ASCII character. Recommended choices are "``= - ` : ' " ~ ^ _ * + # < >``". The underline/overline must be at least as long as the title text. A lone top-level (sub)section is lifted up to be the document's (sub)title. | **Title** **Subtitle** Titles are underlined (or over- and underlined) with a printing nonalphanumeric 7-bit ASCII character. Recommended choices are "= - ` : ' " ~ ^ _ * + # < >". The underline/overline must be at least as long as the title text. A lone top-level (sub)section is lifted up to be the document's (sub)title. |
Paragraphs
(details)
This is a paragraph. Paragraphs line up at their left edges, and are normally separated by blank lines. | This is a paragraph. Paragraphs line up at their left edges, and are normally separated by blank lines. |
Bullet Lists
(details)
Bullet lists: - This is item 1 - This is item 2 - Bullets are "-", "*" or "+". Continuing text must be aligned after the bullet and whitespace. Note that a blank line is required before the first item and after the last, but is optional between items. | Bullet lists: * This is item 1 * This is item 2 * Bullets are "-", "*" or "+". Continuing text must be aligned after the bullet and whitespace. Note that a blank line is required before the first item and after the last, but is optional between items. |
Enumerated Lists
(details)
Enumerated lists: 3. This is the first item 4. This is the second item 5. Enumerators are arabic numbers, single letters, or roman numerals 6. List items should be sequentially numbered, but need not start at 1 (although not all formatters will honour the first index). #. This item is auto-enumerated | Enumerated lists: 1. This is the first item 2. This is the second item 3. Enumerators are arabic numbers, single letters, or roman numerals 4. List items should be sequentially numbered, but need not start at 1 (although not all formatters will honour the first index). 5. This item is auto-enumerated |
Definition Lists
(details)
Definition lists: what Definition lists associate a term with a definition. how The term is a one-line phrase, and the definition is one or more paragraphs or body elements, indented relative to the term. Blank lines are not allowed between term and definition. | Definition lists: **what** Definition lists associate a term with a definition. **how** The term is a one-line phrase, and the definition is one or more paragraphs or body elements, indented relative to the term. Blank lines are not allowed between term and definition. |
Field Lists
(details)
:Authors: Tony J. (Tibs) Ibbs, David Goodger (and sundry other good-natured folks) :Version: 1.0 of 2001/08/08 :Dedication: To my father. |
|
Field lists are used as part of an extension syntax, such as options for directives, or database-like records meant for further processing. Field lists may also be used as generic two-column table constructs in documents.
Option Lists
(details)
-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 /V DOS/VMS-style options too |
|
There must be at least two spaces between the option and the description.
Literal Blocks
(details)
A paragraph containing only two colons indicates that the following indented or quoted text is a literal block. :: Whitespace, newlines, blank lines, and all kinds of markup (like *this* or this) is preserved by literal blocks. The paragraph containing only '::' will be omitted from the result. The ``::`` may be tacked onto the very end of any paragraph. The ``::`` will be omitted if it is preceded by whitespace. The ``::`` will be converted to a single colon if preceded by text, like this:: It's very convenient to use this form. Literal blocks end when text returns to the preceding paragraph's indentation. This means that something like this is possible:: We start here and continue here and end here. Per-line quoting can also be used on unindented literal blocks:: > Useful for quotes from email and > for Haskell literate programming. | A paragraph containing only two colons indicates that the following indented or quoted text is a literal block. Whitespace, newlines, blank lines, and all kinds of markup (like *this* or this) is preserved by literal blocks. The paragraph containing only '::' will be omitted from the result. The :: may be tacked onto the very end of any paragraph. The :: will be omitted if it is preceded by whitespace. The :: will be converted to a single colon if preceded by text, like this: It's very convenient to use this form. Literal blocks end when text returns to the preceding paragraph's indentation. This means that something like this is possible: We start here and continue here and end here. Per-line quoting can also be used on unindented literal blocks: > Useful for quotes from email and > for Haskell literate programming. |
Line Blocks
(details)
| Line blocks are useful for addresses, | verse, and adornment-free lists. | | 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 spaces in place of vertical bars. | Line blocks are useful for addresses, verse, and adornment-free lists. 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 spaces in place of vertical bars. |
Block Quotes
(details)
Block quotes are just: Indented paragraphs, and they may nest. | Block quotes are just: ``` Indented paragraphs, ``` and they may nest. ``` ``` |
Use empty comments to separate indentation contexts, such as block quotes and directive contents.
Doctest Blocks
(details)
Doctest blocks are interactive Python sessions. They begin with "``>>>``" and end with a blank line. >>> print "This is a doctest block." This is a doctest block. | Doctest blocks are interactive Python sessions. They begin with ">>>" and end with a blank line. >>> print "This is a doctest block." This is a doctest block. |
“The doctest module searches a module’s docstrings for text that looks like an interactive Python session, then executes all such sessions to verify they still work exactly as shown.” (From the doctest docs.)
Tables
(details)
There are two syntaxes for tables in reStructuredText. Grid tables are complete but cumbersome to create. Simple tables are easy to create but limited (no row spans, etc.).
Grid table: +------------+------------+-----------+ | Header 1 | Header 2 | Header 3 | +============+============+===========+ | body row 1 | column 2 | column 3 | +------------+------------+-----------+ | body row 2 | Cells may span columns.| +------------+------------+-----------+ | body row 3 | Cells may | - Cells | +------------+ span rows. | - contain | | body row 4 | | - blocks. | +------------+------------+-----------+ |
Grid table:
| ||||||||||||
Simple table: ===== ===== ====== Inputs Output ------------ ------ A B A or B ===== ===== ====== False False False True False True False True True True True True ===== ===== ====== |
Simple table:
|
Transitions
(details)
A transition marker is a horizontal line of 4 or more repeated punctuation characters. ------------ A transition should not begin or end a section or document, nor should two transitions be immediately adjacent. | A transition marker is a horizontal line of 4 or more repeated punctuation characters. * * * A transition should not begin or end a section or document, nor should two transitions be immediately adjacent. |
Transitions are commonly seen in novels and short fiction, as a gap spanning one or more lines, marking text divisions or signaling changes in subject, time, point of view, or emphasis.
Explicit Markup
Explicit markup blocks are used for constructs which float (footnotes), have no direct paper-document representation (hyperlink targets, comments), or require specialized processing (directives). They all begin with two periods and whitespace, the “explicit markup start”.
Footnotes
(details)
Footnote references, like [5]_. Note that footnotes may get rearranged, e.g., to the bottom& nbsp;of the "page". .. [5] A numerical footnote. Note there's no colon after the ``]``. | Footnote references, like [5](http://writeblog.csdn.net/#5). Note that footnotes may get rearranged, e.g., to the bottom of the "page".
| ||||||||||
Autonumbered footnotes are possible, like using [#]_ and [#]_. .. [#] This is the first one. .. [#] This is the second one. They may be assigned 'autonumber labels' - for instance, [#fourth]_ and [#third]_. .. [#third] a.k.a. third_ .. [#fourth] a.k.a. fourth_ | Autonumbered footnotes are possible, like using [1](http://writeblog.csdn.net/#auto1) and [2](http://writeblog.csdn.net/#auto2).
They may be assigned 'autonumber labels' - for instance, [4](http://writeblog.csdn.net/#fourth) and [3](http://writeblog.csdn.net/#third).
| ||||||||||
Auto-symbol footnotes are also possible, like this: [*]_ and [*]_. .. [*] This is the first one. .. [*] This is the second one. | Auto-symbol footnotes are also possible, like this: [*](http://writeblog.csdn.net/#symbol1) and [†](http://writeblog.csdn.net/#symbol2).
|
The numbering of auto-numbered footnotes is determined by the order of the footnotes, not of the references. For auto-numbered footnote references without autonumber labels (“[#]”), the references and footnotes must be in the same relative order. Similarly for auto-symbol footnotes (“[*]”).
Citations
(details)
Citation references, like [CIT2002]_. Note that citations may get rearranged, e.g., to the bottom of the "page". .. [CIT2002] A citation (as often used in journals). Citation labels contain alphanumerics, underlines, hyphens and fullstops. Case is not significant. Given a citation like [this]_, one can also refer to it like this_. .. [this] here. | Citation references, like [[CIT2002]](http://writeblog.csdn.net/#cit2002). Note that citations may get rearranged, e.g., to the bottom of the "page".
Citation labels contain alphanumerics, underlines, hyphens and fullstops. Case is not significant.
Given a citation like [[this]](http://writeblog.csdn.net/#this), one can also refer to it like [this](http://writeblog.csdn.net/#this).
|
Hyperlink Targets
(details)
External Hyperlink Targets
External hyperlinks, like Python_. .. _Python: http://www.python.org/ |
| |||||
|
“Fold-in” is the representation typically used in HTML documents (think of the indirect hyperlink being “folded in” like ingredients into a cake), and “call-out” is more suitable for printed documents, where the link needs to be presented explicitly, for example as a footnote. You can force usage of the call-out form by using the “target-notes” directive.
reStructuredText also provides for embedded URIs (details), a convenience at the expense of readability. A hyperlink reference may directly embed a target URI inline, within angle brackets. The following is exactly equivalent to the example above:
External hyperlinks, like `Python <http://www.python.org/>`_. | External hyperlinks, li ke [Python](http://www.python.org/). |
Internal Hyperlink Targets
Internal crossreferences, like example_. .. _example: This is an example crossreference target. |
| ||
|
Indirect Hyperlink Targets
(details)
Python_ is `my favourite programming language`__. .. _Python: http://www.python.org/ __ Python_ | [Python](http://www.python.org/) is [my favourite programming language](http://www.python.org/). |
The second hyperlink target (the line beginning with “_”) is both an indirect hyperlink target (_indirectly pointing at the Python website via the “Python_” reference) and an anonymous hyperlink target. In the text, a double-underscore suffix is used to indicate an anonymous hyperlink reference. In an anonymous hyperlink target, the reference text is not repeated. This is useful for references with long text or throw-away references, but the target should be kept close to the reference to prevent them going out of sync.
Implicit Hyperlink Targets
(details)
Section titles, footnotes, and citations automatically generate hyperlink targets (the title text or footnote/citation label is used as the hyperlink name).
Titles are targets, too ======================= Implict references, like `Titles are targets, too`_. | **Titles are targets, too** Implict references, like [Titles are targets, too](http://writeblog.csdn.net/#title). |
Directives
(details)
Directives are a general-purpose extension mechanism, a way of adding support for new constructs without adding new syntax. For a description of all standard directives, see reStructuredText Directives.
For instance: .. image:: images/ball1.gif | For instance: ![ball1](http://writeblog.csdn.net/images/ball1.gif) |
Substitution References and Definitions
(details)
Substitutions are like inline directives, allowing graphics and arbitrary constructs within text.
The |biohazard| symbol must be used on containers used to dispose of medical waste. .. |biohazard| image:: biohazard.png | The ![biohazard](http://writeblog.csdn.net/images/biohazard.png) symbol must be used on containers used to dispose of medical waste. |
Comments
(details)
Any text which begins with an explicit markup start but doesn’t use the syntax of any of the constructs above, is a comment.
.. This text will not be shown (but, for instance, in HTML might be rendered as an HTML comment) | |
An "empty comment" does not consume following blocks. (An empty comment is ".." with blank lines before and after.) .. So this block is not "lost", despite its indentation. | An "empty comment" does not consume following blocks. (An empty comment is ".." with blank lines before and after.) ``` So this block is not "lost", despite its indentation. ``` |
Getting Help
Users who have questions or need assistance with Docutils or reStructuredText should post a message to the Docutils-Users mailing list. The Docutils project web site has more information.
参考:
http://docutils.sourceforge.net/docs/user/rst/quickref.html
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源