|
- <!doctype html>
-
- <title>CodeMirror: reStructuredText mode</title>
- <meta charset="utf-8"/>
- <link rel=stylesheet href="../../doc/docs.css">
-
- <link rel="stylesheet" href="../../lib/codemirror.css">
- <script src="../../lib/codemirror.js"></script>
- <script src="../../addon/mode/overlay.js"></script>
- <script src="rst.js"></script>
- <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
- <div id=nav>
- <a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
-
- <ul>
- <li><a href="../../index.html">Home</a>
- <li><a href="../../doc/manual.html">Manual</a>
- <li><a href="https://github.com/codemirror/codemirror">Code</a>
- </ul>
- <ul>
- <li><a href="../index.html">Language modes</a>
- <li><a class=active href="#">reStructuredText</a>
- </ul>
- </div>
-
- <article>
- <h2>reStructuredText mode</h2>
- <form><textarea id="code" name="code">
- .. This is an excerpt from Sphinx documentation: http://sphinx.pocoo.org/_sources/rest.txt
-
- .. highlightlang:: rest
-
- .. _rst-primer:
-
- reStructuredText Primer
- =======================
-
- This section is a brief introduction to reStructuredText (reST) concepts and
- syntax, intended to provide authors with enough information to author documents
- productively. Since reST was designed to be a simple, unobtrusive markup
- language, this will not take too long.
-
- .. seealso::
-
- The authoritative `reStructuredText User Documentation
- <http://docutils.sourceforge.net/rst.html>`_. The "ref" links in this
- document link to the description of the individual constructs in the reST
- reference.
-
-
- Paragraphs
- ----------
-
- The paragraph (:duref:`ref <paragraphs>`) is the most basic block in a reST
- document. Paragraphs are simply chunks of text separated by one or more blank
- lines. As in Python, indentation is significant in reST, so all lines of the
- same paragraph must be left-aligned to the same level of indentation.
-
-
- .. _inlinemarkup:
-
- Inline markup
- -------------
-
- The standard reST inline markup is quite simple: use
-
- * one asterisk: ``*text*`` for emphasis (italics),
- * two asterisks: ``**text**`` for strong emphasis (boldface), and
- * backquotes: ````text```` for code samples.
-
- If asterisks or backquotes appear in running text and could be confused with
- inline markup delimiters, they have to be escaped with a backslash.
-
- Be aware of some restrictions of this markup:
-
- * it may not be nested,
- * content may not start or end with whitespace: ``* text*`` is wrong,
- * it must be separated from surrounding text by non-word characters. Use a
- backslash escaped space to work around that: ``thisis\ *one*\ word``.
-
- These restrictions may be lifted in future versions of the docutils.
-
- reST also allows for custom "interpreted text roles"', which signify that the
- enclosed text should be interpreted in a specific way. Sphinx uses this to
- provide semantic markup and cross-referencing of identifiers, as described in
- the appropriate section. The general syntax is ``:rolename:`content```.
-
- Standard reST provides the following roles:
-
- * :durole:`emphasis` -- alternate spelling for ``*emphasis*``
- * :durole:`strong` -- alternate spelling for ``**strong**``
- * :durole:`literal` -- alternate spelling for ````literal````
- * :durole:`subscript` -- subscript text
- * :durole:`superscript` -- superscript text
- * :durole:`title-reference` -- for titles of books, periodicals, and other
- materials
-
- See :ref:`inline-markup` for roles added by Sphinx.
-
-
- Lists and Quote-like blocks
- ---------------------------
-
- List markup (:duref:`ref <bullet-lists>`) is natural: just place an asterisk at
- the start of a paragraph and indent properly. The same goes for numbered lists;
- they can also be autonumbered using a ``#`` sign::
-
- * This is a bulleted list.
- * It has two items, the second
- item uses two lines.
-
- 1. This is a numbered list.
- 2. It has two items too.
-
- #. This is a numbered list.
- #. It has two items too.
-
-
- Nested lists are possible, but be aware that they must be separated from the
- parent list items by blank lines::
-
- * this is
- * a list
-
- * with a nested list
- * and some subitems
-
- * and here the parent list continues
-
- Definition lists (:duref:`ref <definition-lists>`) are created as follows::
-
- term (up to a line of text)
- Definition of the term, which must be indented
-
- and can even consist of multiple paragraphs
-
- next term
- Description.
-
- Note that the term cannot have more than one line of text.
-
- Quoted paragraphs (:duref:`ref <block-quotes>`) are created by just indenting
- them more than the surrounding paragraphs.
-
- Line blocks (:duref:`ref <line-blocks>`) are a way of preserving line breaks::
-
- | These lines are
- | broken exactly like in
- | the source file.
-
- There are also several more special blocks available:
-
- * field lists (:duref:`ref <field-lists>`)
- * option lists (:duref:`ref <option-lists>`)
- * quoted literal blocks (:duref:`ref <quoted-literal-blocks>`)
- * doctest blocks (:duref:`ref <doctest-blocks>`)
-
-
- Source Code
- -----------
-
- Literal code blocks (:duref:`ref <literal-blocks>`) are introduced by ending a
- paragraph with the special marker ``::``. The literal block must be indented
- (and, like all paragraphs, separated from the surrounding ones by blank lines)::
-
- This is a normal text paragraph. The next paragraph is a code sample::
-
- It is not processed in any way, except
- that the indentation is removed.
-
- It can span multiple lines.
-
- This is a normal text paragraph again.
-
- The handling of the ``::`` marker is smart:
-
- * If it occurs as a paragraph of its own, that paragraph is completely left
- out of the document.
- * If it is preceded by whitespace, the marker is removed.
- * If it is preceded by non-whitespace, the marker is replaced by a single
- colon.
-
- That way, the second sentence in the above example's first paragraph would be
- rendered as "The next paragraph is a code sample:".
-
-
- .. _rst-tables:
-
- Tables
- ------
-
- Two forms of tables are supported. For *grid tables* (:duref:`ref
- <grid-tables>`), you have to "paint" the cell grid yourself. They look like
- this::
-
- +------------------------+------------+----------+----------+
- | 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 | ... | ... | |
- +------------------------+------------+----------+----------+
-
- *Simple tables* (:duref:`ref <simple-tables>`) are easier to write, but
- limited: they must contain more than one row, and the first column cannot
- contain multiple lines. They look like this::
-
- ===== ===== =======
- A B A and B
- ===== ===== =======
- False False False
- True False False
- False True False
- True True True
- ===== ===== =======
-
-
- Hyperlinks
- ----------
-
- External links
- ^^^^^^^^^^^^^^
-
- Use ```Link text <http://example.com/>`_`` for inline web links. If the link
- text should be the web address, you don't need special markup at all, the parser
- finds links and mail addresses in ordinary text.
-
- You can also separate the link and the target definition (:duref:`ref
- <hyperlink-targets>`), like this::
-
- This is a paragraph that contains `a link`_.
-
- .. _a link: http://example.com/
-
-
- Internal links
- ^^^^^^^^^^^^^^
-
- Internal linking is done via a special reST role provided by Sphinx, see the
- section on specific markup, :ref:`ref-role`.
-
-
- Sections
- --------
-
- Section headers (:duref:`ref <sections>`) are created by underlining (and
- optionally overlining) the section title with a punctuation character, at least
- as long as the text::
-
- =================
- This is a heading
- =================
-
- Normally, there are no heading levels assigned to certain characters as the
- structure is determined from the succession of headings. However, for the
- Python documentation, this convention is used which you may follow:
-
- * ``#`` with overline, for parts
- * ``*`` with overline, for chapters
- * ``=``, for sections
- * ``-``, for subsections
- * ``^``, for subsubsections
- * ``"``, for paragraphs
-
- Of course, you are free to use your own marker characters (see the reST
- documentation), and use a deeper nesting level, but keep in mind that most
- target formats (HTML, LaTeX) have a limited supported nesting depth.
-
-
- Explicit Markup
- ---------------
-
- "Explicit markup" (:duref:`ref <explicit-markup-blocks>`) is used in reST for
- most constructs that need special handling, such as footnotes,
- specially-highlighted paragraphs, comments, and generic directives.
-
- An explicit markup block begins with a line starting with ``..`` followed by
- whitespace and is terminated by the next paragraph at the same level of
- indentation. (There needs to be a blank line between explicit markup and normal
- paragraphs. This may all sound a bit complicated, but it is intuitive enough
- when you write it.)
-
-
- .. _directives:
-
- Directives
- ----------
-
- A directive (:duref:`ref <directives>`) is a generic block of explicit markup.
- Besides roles, it is one of the extension mechanisms of reST, and Sphinx makes
- heavy use of it.
-
- Docutils supports the following directives:
-
- * Admonitions: :dudir:`attention`, :dudir:`caution`, :dudir:`danger`,
- :dudir:`error`, :dudir:`hint`, :dudir:`important`, :dudir:`note`,
- :dudir:`tip`, :dudir:`warning` and the generic :dudir:`admonition`.
- (Most themes style only "note" and "warning" specially.)
-
- * Images:
-
- - :dudir:`image` (see also Images_ below)
- - :dudir:`figure` (an image with caption and optional legend)
-
- * Additional body elements:
-
- - :dudir:`contents` (a local, i.e. for the current file only, table of
- contents)
- - :dudir:`container` (a container with a custom class, useful to generate an
- outer ``<div>`` in HTML)
- - :dudir:`rubric` (a heading without relation to the document sectioning)
- - :dudir:`topic`, :dudir:`sidebar` (special highlighted body elements)
- - :dudir:`parsed-literal` (literal block that supports inline markup)
- - :dudir:`epigraph` (a block quote with optional attribution line)
- - :dudir:`highlights`, :dudir:`pull-quote` (block quotes with their own
- class attribute)
- - :dudir:`compound` (a compound paragraph)
-
- * Special tables:
-
- - :dudir:`table` (a table with title)
- - :dudir:`csv-table` (a table generated from comma-separated values)
- - :dudir:`list-table` (a table generated from a list of lists)
-
- * Special directives:
-
- - :dudir:`raw` (include raw target-format markup)
- - :dudir:`include` (include reStructuredText from another file)
- -- in Sphinx, when given an absolute include file path, this directive takes
- it as relative to the source directory
- - :dudir:`class` (assign a class attribute to the next element) [1]_
-
- * HTML specifics:
-
- - :dudir:`meta` (generation of HTML ``<meta>`` tags)
- - :dudir:`title` (override document title)
-
- * Influencing markup:
-
- - :dudir:`default-role` (set a new default role)
- - :dudir:`role` (create a new role)
-
- Since these are only per-file, better use Sphinx' facilities for setting the
- :confval:`default_role`.
-
- Do *not* use the directives :dudir:`sectnum`, :dudir:`header` and
- :dudir:`footer`.
-
- Directives added by Sphinx are described in :ref:`sphinxmarkup`.
-
- Basically, a directive consists of a name, arguments, options and content. (Keep
- this terminology in mind, it is used in the next chapter describing custom
- directives.) Looking at this example, ::
-
- .. function:: foo(x)
- foo(y, z)
- :module: some.module.name
-
- Return a line of text input from the user.
-
- ``function`` is the directive name. It is given two arguments here, the
- remainder of the first line and the second line, as well as one option
- ``module`` (as you can see, options are given in the lines immediately following
- the arguments and indicated by the colons). Options must be indented to the
- same level as the directive content.
-
- The directive content follows after a blank line and is indented relative to the
- directive start.
-
-
- Images
- ------
-
- reST supports an image directive (:dudir:`ref <image>`), used like so::
-
- .. image:: gnu.png
- (options)
-
- When used within Sphinx, the file name given (here ``gnu.png``) must either be
- relative to the source file, or absolute which means that they are relative to
- the top source directory. For example, the file ``sketch/spam.rst`` could refer
- to the image ``images/spam.png`` as ``../images/spam.png`` or
- ``/images/spam.png``.
-
- Sphinx will automatically copy image files over to a subdirectory of the output
- directory on building (e.g. the ``_static`` directory for HTML output.)
-
- Interpretation of image size options (``width`` and ``height``) is as follows:
- if the size has no unit or the unit is pixels, the given size will only be
- respected for output channels that support pixels (i.e. not in LaTeX output).
- Other units (like ``pt`` for points) will be used for HTML and LaTeX output.
-
- Sphinx extends the standard docutils behavior by allowing an asterisk for the
- extension::
-
- .. image:: gnu.*
-
- Sphinx then searches for all images matching the provided pattern and determines
- their type. Each builder then chooses the best image out of these candidates.
- For instance, if the file name ``gnu.*`` was given and two files :file:`gnu.pdf`
- and :file:`gnu.png` existed in the source tree, the LaTeX builder would choose
- the former, while the HTML builder would prefer the latter.
-
- .. versionchanged:: 0.4
- Added the support for file names ending in an asterisk.
-
- .. versionchanged:: 0.6
- Image paths can now be absolute.
-
-
- Footnotes
- ---------
-
- For footnotes (:duref:`ref <footnotes>`), use ``[#name]_`` to mark the footnote
- location, and add the footnote body at the bottom of the document after a
- "Footnotes" rubric heading, like so::
-
- Lorem ipsum [#f1]_ dolor sit amet ... [#f2]_
-
- .. rubric:: Footnotes
-
- .. [#f1] Text of the first footnote.
- .. [#f2] Text of the second footnote.
-
- You can also explicitly number the footnotes (``[1]_``) or use auto-numbered
- footnotes without names (``[#]_``).
-
-
- Citations
- ---------
-
- Standard reST citations (:duref:`ref <citations>`) are supported, with the
- additional feature that they are "global", i.e. all citations can be referenced
- from all files. Use them like so::
-
- Lorem ipsum [Ref]_ dolor sit amet.
-
- .. [Ref] Book or article reference, URL or whatever.
-
- Citation usage is similar to footnote usage, but with a label that is not
- numeric or begins with ``#``.
-
-
- Substitutions
- -------------
-
- reST supports "substitutions" (:duref:`ref <substitution-definitions>`), which
- are pieces of text and/or markup referred to in the text by ``|name|``. They
- are defined like footnotes with explicit markup blocks, like this::
-
- .. |name| replace:: replacement *text*
-
- or this::
-
- .. |caution| image:: warning.png
- :alt: Warning!
-
- See the :duref:`reST reference for substitutions <substitution-definitions>`
- for details.
-
- If you want to use some substitutions for all documents, put them into
- :confval:`rst_prolog` or put them into a separate file and include it into all
- documents you want to use them in, using the :rst:dir:`include` directive. (Be
- sure to give the include file a file name extension differing from that of other
- source files, to avoid Sphinx finding it as a standalone document.)
-
- Sphinx defines some default substitutions, see :ref:`default-substitutions`.
-
-
- Comments
- --------
-
- Every explicit markup block which isn't a valid markup construct (like the
- footnotes above) is regarded as a comment (:duref:`ref <comments>`). For
- example::
-
- .. This is a comment.
-
- You can indent text after a comment start to form multiline comments::
-
- ..
- This whole indented block
- is a comment.
-
- Still in the comment.
-
-
- Source encoding
- ---------------
-
- Since the easiest way to include special characters like em dashes or copyright
- signs in reST is to directly write them as Unicode characters, one has to
- specify an encoding. Sphinx assumes source files to be encoded in UTF-8 by
- default; you can change this with the :confval:`source_encoding` config value.
-
-
- Gotchas
- -------
-
- There are some problems one commonly runs into while authoring reST documents:
-
- * **Separation of inline markup:** As said above, inline markup spans must be
- separated from the surrounding text by non-word characters, you have to use a
- backslash-escaped space to get around that. See `the reference
- <http://docutils.sf.net/docs/ref/rst/restructuredtext.html#inline-markup>`_
- for the details.
-
- * **No nested inline markup:** Something like ``*see :func:`foo`*`` is not
- possible.
-
-
- .. rubric:: Footnotes
-
- .. [1] When the default domain contains a :rst:dir:`class` directive, this directive
- will be shadowed. Therefore, Sphinx re-exports it as :rst:dir:`rst-class`.
- </textarea></form>
-
- <script>
- var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
- lineNumbers: true,
- });
- </script>
- <p>
- The <code>python</code> mode will be used for highlighting blocks
- containing Python/IPython terminal sessions: blocks starting with
- <code>>>></code> (for Python) or <code>In [num]:</code> (for
- IPython).
-
- Further, the <code>stex</code> mode will be used for highlighting
- blocks containing LaTex code.
- </p>
-
- <p><strong>MIME types defined:</strong> <code>text/x-rst</code>.</p>
- </article>
|