summaryrefslogtreecommitdiff
path: root/docutils/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docutils/docs')
-rw-r--r--docutils/docs/dev/pysource.dtd258
-rw-r--r--docutils/docs/dev/pysource.txt130
-rw-r--r--docutils/docs/dev/rst/alternatives.txt2005
-rw-r--r--docutils/docs/dev/rst/problems.txt870
-rw-r--r--docutils/docs/dev/semantics.txt119
-rw-r--r--docutils/docs/dev/todo.txt2114
-rw-r--r--docutils/docs/howto/i18n.txt178
-rw-r--r--docutils/docs/howto/rst-directives.txt348
-rw-r--r--docutils/docs/peps/pep-0256.txt299
-rw-r--r--docutils/docs/peps/pep-0257.txt328
-rw-r--r--docutils/docs/peps/pep-0258.txt999
-rw-r--r--docutils/docs/peps/pep-0287.txt815
-rw-r--r--docutils/docs/ref/doctree.txt4840
-rw-r--r--docutils/docs/ref/docutils.dtd571
-rw-r--r--docutils/docs/ref/rst/directives.txt979
-rw-r--r--docutils/docs/ref/rst/introduction.txt315
-rw-r--r--docutils/docs/ref/rst/restructuredtext.txt2679
-rw-r--r--docutils/docs/ref/rst/roles.txt175
-rw-r--r--docutils/docs/ref/soextblx.dtd312
-rw-r--r--docutils/docs/ref/transforms.txt103
-rw-r--r--docutils/docs/user/latex.txt263
-rw-r--r--docutils/docs/user/rst/images/ball1.gifbin4361 -> 0 bytes
-rw-r--r--docutils/docs/user/rst/images/biohazard.pngbin179 -> 0 bytes
-rw-r--r--docutils/docs/user/rst/images/title.pngbin1171 -> 0 bytes
-rw-r--r--docutils/docs/user/rst/quickref.html1243
-rw-r--r--docutils/docs/user/rst/quickstart.txt382
-rw-r--r--docutils/docs/user/tools.txt724
27 files changed, 0 insertions, 21049 deletions
diff --git a/docutils/docs/dev/pysource.dtd b/docutils/docs/dev/pysource.dtd
deleted file mode 100644
index 79a074cec..000000000
--- a/docutils/docs/dev/pysource.dtd
+++ /dev/null
@@ -1,258 +0,0 @@
-<!--
-======================================================================
- Docutils Python Source DTD
-======================================================================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This DTD has been placed in the public domain.
-:Filename: pysource.dtd
-
-This DTD (document type definition) extends the Generic DTD (see
-below).
-
-More information about this DTD and the Docutils project can be found
-at http://docutils.sourceforge.net/. The latest version of this DTD
-is available from http://docutils.sourceforge.net/spec/pysource.dtd.
-
-The formal public identifier for this DTD is::
-
- +//IDN docutils.sourceforge.net//DTD Docutils Python Source//EN//XML
--->
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Parameter Entity Overrides
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ENTITY % additional.section.elements
- " | package_section | module_section | class_section
- | method_section | function_section
- | module_attribute_section | function_attribute_section
- | class_attribute_section | instance_attribute_section ">
-
-<!ENTITY % additional.inline.elements
- " | package | module | class | method | function
- | variable | parameter | type | attribute
- | module_attribute | class_attribute | instance_attribute
- | exception_class | warning_class ">
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Generic DTD
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This DTD extends the Docutils Generic DTD, available from
-http://docutils.sourceforge.net/spec/docutils.dtd.
--->
-
-<!ENTITY % docutils PUBLIC
- "+//IDN python.org//DTD Docutils Generic//EN//XML"
- "docutils.dtd">
-%docutils;
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Additional Section Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ELEMENT package_section
- (package, fullname?, import_list?, %structure.model;)>
-<!ATTLIST package_section %basic.atts;>
-
-<!ELEMENT module_section
- (module, fullname?, import_list?, %structure.model;)>
-<!ATTLIST module_section %basic.atts;>
-
-<!ELEMENT class_section
- (class, inheritance_list?, fullname?, subclasses?,
- %structure.model;)>
-<!ATTLIST class_section %basic.atts;>
-
-<!ELEMENT method_section
- (method, parameter_list?, fullname?, overrides?,
- %structure.model;)>
-<!ATTLIST method_section %basic.atts;>
-
-<!ELEMENT function_section
- (function, parameter_list?, fullname?, %structure.model;)>
-<!ATTLIST function_section %basic.atts;>
-
-<!ELEMENT module_attribute_section
- (attribute, initial_value?, fullname?, %structure.model;)>
-<!ATTLIST module_attribute_section %basic.atts;>
-
-<!ELEMENT function_attribute_section
- (attribute, initial_value?, fullname?, %structure.model;)>
-<!ATTLIST function_attribute_section %basic.atts;>
-
-<!ELEMENT class_attribute_section
- (attribute, initial_value?, fullname?, overrides?,
- %structure.model;)>
-<!ATTLIST class_attribute_section %basic.atts;>
-
-<!ELEMENT instance_attribute_section
- (attribute, initial_value?, fullname?, overrides?,
- %structure.model;)>
-<!ATTLIST instance_attribute_section %basic.atts;>
-
-<!--
- Section Subelements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ELEMENT fullname
- (package | module | class | method | function | attribute)+>
-<!ATTLIST fullname %basic.atts;>
-
-<!ELEMENT import_list (import_item+)>
-<!ATTLIST import_list %basic.atts;>
-
-<!--
-Support ``import module``, ``import module as alias``, ``from module
-import identifier``, and ``from module import identifier as alias``.
--->
-<!ELEMENT import_item (fullname, identifier?, alias?)>
-<!ATTLIST import_item %basic.atts;>
-
-<!ELEMENT inheritance_list (class+)>
-<!ATTLIST inheritance_list %basic.atts;>
-
-<!ELEMENT subclasses (class+)>
-<!ATTLIST subclasses %basic.atts;>
-
-<!ELEMENT parameter_list
- ((parameter_item+, optional_parameters*) | optional_parameters+)>
-<!ATTLIST parameter_list %basic.atts;>
-
-<!ELEMENT parameter_item
- ((parameter | parameter_tuple), parameter_default?)>
-<!ATTLIST parameter_item %basic.atts;>
-
-<!ELEMENT optional_parameters (parameter_item+, optional_parameters*)>
-<!ATTLIST optional_parameters %basic.atts;>
-
-<!ELEMENT parameter_tuple (parameter | parameter_tuple)+>
-<!ATTLIST parameter_tuple %basic.atts;>
-
-<!ELEMENT parameter_default (#PCDATA)>
-<!ATTLIST parameter_default %basic.atts;>
-
-<!ELEMENT overrides (fullname+)>
-<!ATTLIST overrides %basic.atts;>
-
-<!ELEMENT initial_value (#PCDATA)>
-<!ATTLIST initial_value %basic.atts;>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Additional Inline Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!-- Also used as the `package_section` identifier/title. -->
-<!ELEMENT package (#PCDATA)>
-<!ATTLIST package
- %basic.atts;
- %reference.atts;>
-
-<!-- Also used as the `module_section` identifier/title. -->
-<!ELEMENT module (#PCDATA)>
-<!ATTLIST module
- %basic.atts;
- %reference.atts;>
-
-<!--
-Also used as the `class_section` identifier/title, and in the
-`inheritance` element.
--->
-<!ELEMENT class (#PCDATA)>
-<!ATTLIST class
- %basic.atts;
- %reference.atts;>
-
-<!-- Also used as the `method_section` identifier/title. -->
-<!ELEMENT method (#PCDATA)>
-<!ATTLIST method
- %basic.atts;
- %reference.atts;>
-
-<!-- Also used as the `function_section` identifier/title. -->
-<!ELEMENT function (#PCDATA)>
-<!ATTLIST function
- %basic.atts;
- %reference.atts;>
-
-<!--
-??? Use this instead of the ``*_attribute`` elements below? Add a
-"type" attribute to differentiate?
-
-Also used as the identifier/title for `module_attribute_section`,
-`class_attribute_section`, and `instance_attribute_section`.
--->
-<!ELEMENT attribute (#PCDATA)>
-<!ATTLIST attribute
- %basic.atts;
- %reference.atts;>
-
-<!--
-Also used as the `module_attribute_section` identifier/title. A module
-attribute is an exported module-level global variable.
--->
-<!ELEMENT module_attribute (#PCDATA)>
-<!ATTLIST module_attribute
- %basic.atts;
- %reference.atts;>
-
-<!-- Also used as the `class_attribute_section` identifier/title. -->
-<!ELEMENT class_attribute (#PCDATA)>
-<!ATTLIST class_attribute
- %basic.atts;
- %reference.atts;>
-
-<!--
-Also used as the `instance_attribute_section` identifier/title.
--->
-<!ELEMENT instance_attribute (#PCDATA)>
-<!ATTLIST instance_attribute
- %basic.atts;
- %reference.atts;>
-
-<!ELEMENT variable (#PCDATA)>
-<!ATTLIST variable
- %basic.atts;
- %reference.atts;>
-
-<!-- Also used in `parameter_list`. -->
-<!ELEMENT parameter (#PCDATA)>
-<!ATTLIST parameter
- %basic.atts;
- %reference.atts;
- excess_positional %yesorno; #IMPLIED
- excess_keyword %yesorno; #IMPLIED>
-
-<!ELEMENT type (#PCDATA)>
-<!ATTLIST type
- %basic.atts;
- %reference.atts;>
-
-<!ELEMENT exception_class (#PCDATA)>
-<!ATTLIST exception_class
- %basic.atts;
- %reference.atts;>
-
-<!ELEMENT warning_class (#PCDATA)>
-<!ATTLIST warning_class
- %basic.atts;
- %reference.atts;>
-
-<!--
-Local Variables:
-mode: sgml
-indent-tabs-mode: nil
-fill-column: 70
-End:
--->
diff --git a/docutils/docs/dev/pysource.txt b/docutils/docs/dev/pysource.txt
deleted file mode 100644
index ab677a004..000000000
--- a/docutils/docs/dev/pysource.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-======================
- Python Source Reader
-======================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-This document explores issues around extracting and processing
-docstrings from Python modules.
-
-For definitive element hierarchy details, see the "Python Plaintext
-Document Interface DTD" XML document type definition, pysource.dtd_
-(which modifies the generic docutils.dtd_). Descriptions below list
-'DTD elements' (XML 'generic identifiers' or tag names) corresponding
-to syntax constructs.
-
-
-.. contents::
-
-
-Model
-=====
-
-The Python Source Reader ("PySource") model that's evolving in my mind
-goes something like this:
-
-1. Extract the docstring/namespace [#]_ tree from the module(s) and/or
- package(s).
-
- .. [#] See `Docstring Extractor`_ below.
-
-2. Run the parser on each docstring in turn, producing a forest of
- doctrees (per nodes.py).
-
-3. Join the docstring trees together into a single tree, running
- transforms:
-
- - merge hyperlinks
- - merge namespaces
- - create various sections like "Module Attributes", "Functions",
- "Classes", "Class Attributes", etc.; see spec/ppdi.dtd
- - convert the above special sections to ordinary doctree nodes
-
-4. Run transforms on the combined doctree. Examples: resolving
- cross-references/hyperlinks (including interpreted text on Python
- identifiers); footnote auto-numbering; first field list ->
- bibliographic elements.
-
- (Or should step 4's transforms come before step 3?)
-
-5. Pass the resulting unified tree to the writer/builder.
-
-I've had trouble reconciling the roles of input parser and output
-writer with the idea of modes ("readers" or "directors"). Does the
-mode govern the tranformation of the input, the output, or both?
-Perhaps the mode should be split into two.
-
-For example, say the source of our input is a Python module. Our
-"input mode" should be the "Python Source Reader". It discovers (from
-``__docformat__``) that the input parser is "reStructuredText". If we
-want HTML, we'll specify the "HTML" output formatter. But there's a
-piece missing. What *kind* or *style* of HTML output do we want?
-PyDoc-style, LibRefMan style, etc. (many people will want to specify
-and control their own style). Is the output style specific to a
-particular output format (XML, HTML, etc.)? Is the style specific to
-the input mode? Or can/should they be independent?
-
-I envision interaction between the input parser, an "input mode" , and
-the output formatter. The same intermediate data format would be used
-between each of these, being transformed as it progresses.
-
-
-Docstring Extractor
-===================
-
-We need code that scans a parsed Python module, and returns an ordered
-tree containing the names, docstrings (including attribute and
-additional docstrings), and additional info (in parentheses below) of
-all of the following objects:
-
-- packages
-- modules
-- module attributes (+ values)
-- classes (+ inheritance)
-- class attributes (+ values)
-- instance attributes (+ values)
-- methods (+ formal parameters & defaults)
-- functions (+ formal parameters & defaults)
-
-(Extract comments too? For example, comments at the start of a module
-would be a good place for bibliographic field lists.)
-
-In order to evaluate interpreted text cross-references, namespaces for
-each of the above will also be required.
-
-See python-dev/docstring-develop thread "AST mining", started on
-2001-08-14.
-
-
-Interpreted Text
-================
-
-DTD elements: package, module, class, method, function,
-module_attribute, class_attribute, instance_attribute, variable,
-parameter, type, exception_class, warning_class.
-
-To classify identifiers explicitly, the role is given along with the
-identifier in either prefix or suffix form::
-
- Use :method:`Keeper.storedata` to store the object's data in
- `Keeper.data`:instance_attribute:.
-
-The role may be one of 'package', 'module', 'class', 'method',
-'function', 'module_attribute', 'class_attribute',
-'instance_attribute', 'variable', 'parameter', 'type',
-'exception_class', 'exception', 'warning_class', or 'warning'. Other
-roles may be defined.
-
-.. _pysource.dtd: http://docutils.sourceforge.net/spec/pysource.dtd
-.. _docutils.dtd: http://docutils.sourceforge.net/spec/docutils.dtd
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- fill-column: 70
- End:
diff --git a/docutils/docs/dev/rst/alternatives.txt b/docutils/docs/dev/rst/alternatives.txt
deleted file mode 100644
index b089d58b2..000000000
--- a/docutils/docs/dev/rst/alternatives.txt
+++ /dev/null
@@ -1,2005 +0,0 @@
-==================================================
- A Record of reStructuredText Syntax Alternatives
-==================================================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-The following are ideas, alternatives, and justifications that were
-considered for reStructuredText syntax, which did not originate with
-Setext_ or StructuredText_. For an analysis of constructs which *did*
-originate with StructuredText or Setext, please see `Problems With
-StructuredText`_. See the `reStructuredText Markup Specification`_
-for full details of the established syntax.
-
-.. _Setext: http://docutils.sourceforge.net/mirror/setext.html
-.. _StructuredText:
- http://dev.zope.org/Members/jim/StructuredTextWiki/FrontPage
-.. _Problems with StructuredText: problems.html
-.. _reStructuredText Markup Specification: reStructuredText.html
-
-
-.. contents::
-
-
-... Or Not To Do?
-=================
-
-This is the realm of the possible but questionably probable. These
-ideas are kept here as a record of what has been proposed, for
-posterity and in case any of them prove to be useful.
-
-
-Compound Enumerated Lists
--------------------------
-
-Allow for compound enumerators, such as "1.1." or "1.a." or "1(a)", to
-allow for nested enumerated lists without indentation?
-
-
-Sloppy Indentation of List Items
---------------------------------
-
-Perhaps the indentation shouldn't be so strict. Currently, this is
-required::
-
- 1. First line,
- second line.
-
-Anything wrong with this? ::
-
- 1. First line,
- second line.
-
-Problem? ::
-
- 1. First para.
-
- Block quote. (no good: requires some indent relative to first
- para)
-
- Second Para.
-
- 2. Have to carefully define where the literal block ends::
-
- Literal block
-
- Literal block?
-
-Hmm... Non-strict indentation isn't such a good idea.
-
-
-Lazy Indentation of List Items
-------------------------------
-
-Another approach: Going back to the first draft of reStructuredText
-(2000-11-27 post to Doc-SIG)::
-
- - This is the fourth item of the main list (no blank line above).
- The second line of this item is not indented relative to the
- bullet, which precludes it from having a second paragraph.
-
-Change that to *require* a blank line above and below, to reduce
-ambiguity. This "loosening" may be added later, once the parser's
-been nailed down. However, a serious drawback of this approach is to
-limit the content of each list item to a single paragraph.
-
-
-David's Idea for Lazy Indentation
-`````````````````````````````````
-
-Consider a paragraph in a word processor. It is a single logical line
-of text which ends with a newline, soft-wrapped arbitrarily at the
-right edge of the page or screen. We can think of a plaintext
-paragraph in the same way, as a single logical line of text, ending
-with two newlines (a blank line) instead of one, and which may contain
-arbitrary line breaks (newlines) where it was accidentally
-hard-wrapped by an application. We can compensate for the accidental
-hard-wrapping by "unwrapping" every unindented second and subsequent
-line. The indentation of the first line of a paragraph or list item
-would determine the indentation for the entire element. Blank lines
-would be required between list items when using lazy indentation.
-
-The following example shows the lazy indentation of multiple body
-elements::
-
- - This is the first paragraph
- of the first list item.
-
- Here is the second paragraph
- of the first list item.
-
- - This is the first paragraph
- of the second list item.
-
- Here is the second paragraph
- of the second list item.
-
-A more complex example shows the limitations of lazy indentation::
-
- - This is the first paragraph
- of the first list item.
-
- Next is a definition list item:
-
- Term
- Definition. The indentation of the term is
- required, as is the indentation of the definition's
- first line.
-
- When the definition extends to more than
- one line, lazy indentation may occur. (This is the second
- paragraph of the definition.)
-
- - This is the first paragraph
- of the second list item.
-
- - Here is the first paragraph of
- the first item of a nested list.
-
- So this paragraph would be outside of the nested list,
- but inside the second list item of the outer list.
-
- But this paragraph is not part of the list at all.
-
-And the ambiguity remains::
-
- - Look at the hyphen at the beginning of the next line
- - is it a second list item marker, or a dash in the text?
-
- Similarly, we may want to refer to numbers inside enumerated
- lists:
-
- 1. How many socks in a pair? There are
- 2. How many pants in a pair? Exactly
- 1. Go figure.
-
-Literal blocks and block quotes would still require consistent
-indentation for all their lines. For block quotes, we might be able
-to get away with only requiring that the first line of each contained
-element be indented. For example::
-
- Here's a paragraph.
-
- This is a paragraph inside a block quote.
- Second and subsequent lines need not be indented at all.
-
- - A bullet list inside
- the block quote.
-
- Second paragraph of the
- bullet list inside the block quote.
-
-Although feasible, this form of lazy indentation has problems. The
-document structure and hierarchy is not obvious from the indentation,
-making the source plaintext difficult to read. This will also make
-keeping track of the indentation while writing difficult and
-error-prone. However, these problems may be acceptable for Wikis and
-email mode, where we may be able to rely on less complex structure
-(few nested lists, for example).
-
-
-Multiple Roles in Interpreted Text
-----------------------------------
-
-In reStructuredText, inline markup cannot be nested (yet; `see
-below`__). This also applies to interpreted text. In order to
-simultaneously combine multiple roles for a single piece of text, a
-syntax extension would be necessary. Ideas:
-
-1. Initial idea::
-
- `interpreted text`:role1,role2:
-
-2. Suggested by Jason Diamond::
-
- `interpreted text`:role1:role2:
-
-If a document is so complex as to require nested inline markup,
-perhaps another markup system should be considered. By design,
-reStructuredText does not have the flexibility of XML.
-
-__ `Nested Inline Markup`_
-
-
-Parameterized Interpreted Text
-------------------------------
-
-In some cases it may be expedient to pass parameters to interpreted
-text, analogous to function calls. Ideas:
-
-1. Parameterize the interpreted text role itself (suggested by Jason
- Diamond)::
-
- `interpreted text`:role1(foo=bar):
-
- Positional parameters could also be supported::
-
- `CSS`:acronym(Cascading Style Sheets): is used for HTML, and
- `CSS`:acronym(Content Scrambling System): is used for DVDs.
-
- Technical problem: current interpreted text syntax does not
- recognize roles containing whitespace. Design problem: this smells
- like programming language syntax, but reStructuredText is not a
- programming language.
-
-2. Put the parameters inside the interpreted text::
-
- `CSS (Cascading Style Sheets)`:acronym: is used for HTML, and
- `CSS (Content Scrambling System)`:acronym: is used for DVDs.
-
- Although this could be defined on an individual basis (per role),
- we ought to have a standard. Hyperlinks with embedded URIs already
- use angle brackets; perhaps they could be used here too::
-
- `CSS <Cascading Style Sheets>`:acronym: is used for HTML, and
- `CSS <Content Scrambling System>`:acronym: is used for DVDs.
-
- Do angle brackets connote URLs too much for this to be acceptable?
- How about the "tag" connotation -- does it save them or doom them?
-
-Does this push inline markup too far? Readability becomes a serious
-issue. Substitutions may provide a better alternative (at the expense
-of verbosity and duplication) by pulling the details out of the text
-flow::
-
- |CSS| is used for HTML, and |CSS-DVD| is used for DVDs.
-
- .. |CSS| acronym:: Cascading Style Sheets
- .. |CSS-DVD| acronym:: Content Scrambling System
- :text: CSS
-
-----------------------------------------------------------------------
-
-This whole idea may be going beyond the scope of reStructuredText.
-Documents requiring this functionality may be better off using XML or
-another markup system.
-
-This argument comes up regularly when pushing the envelope of
-reStructuredText syntax. I think it's a useful argument in that it
-provides a check on creeping featurism. In many cases, the resulting
-verbosity produces such unreadable plaintext that there's a natural
-desire *not* to use it unless absolutely necessary. It's a matter of
-finding the right balance.
-
-
-Character Processing
---------------------
-
-Several people have suggested adding some form of character processing
-to reStructuredText:
-
-* Some sort of automated replacement of ASCII sequences:
-
- - ``--`` to em-dash (or ``--`` to en-dash, and ``---`` to em-dash).
- - Convert quotes to curly quote entities. (Essentially impossible
- for HTML? Unnecessary for TeX.)
- - Various forms of ``:-)`` to smiley icons.
- - ``"\ "`` to &nbsp;. Problem with line-wrapping though: it could
- end up escaping the newline.
- - Escaped newlines to <BR>.
- - Escaped period or quote or dash as a disappearing catalyst to
- allow character-level inline markup?
-
-* XML-style character entities, such as "&copy;" for the copyright
- symbol.
-
-Docutils has no need of a character entity subsystem. Supporting
-Unicode and text encodings, character entities should be directly
-represented in the text: a copyright symbol should be represented by
-the copyright symbol character. If this is not possible in an
-authoring environment, a pre-processing stage can be added, or a table
-of substitution definitions can be devised.
-
-A "unicode" directive has been implemented to allow direct
-specification of esoteric characters. In combination with the
-substitution construct, "include" files defining common sets of
-character entities can be defined and used.
-
-To allow for `character-level inline markup`_, a limited form of
-character processing has been added to the spec and parser: escaped
-whitespace characters are removed from the processed document. Any
-further character processing will be of this functional type, rather
-than of the character-encoding type.
-
-.. _character-level inline markup:
- reStructuredText.html#character-level-inline-markup
-
-
-Field Lists
-===========
-
-Prior to the syntax for field lists being finalized, several
-alternatives were proposed.
-
-1. Unadorned RFC822_ everywhere::
-
- Author: Me
- Version: 1
-
- Advantages: clean, precedent (RFC822-compliant). Disadvantage:
- ambiguous (these paragraphs are a prime example).
-
- Conclusion: rejected.
-
-2. Special case: use unadorned RFC822_ for the very first or very last
- text block of a document::
-
- """
- Author: Me
- Version: 1
-
- The rest of the document...
- """
-
- Advantages: clean, precedent (RFC822-compliant). Disadvantages:
- special case, flat (unnested) field lists only, still ambiguous::
-
- """
- Usage: cmdname [options] arg1 arg2 ...
-
- We obviously *don't* want the like above to be interpreted as a
- field list item. Or do we?
- """
-
- Conclusion: rejected for the general case, accepted for specific
- contexts (PEPs, email).
-
-3. Use a directive::
-
- .. fields::
-
- Author: Me
- Version: 1
-
- Advantages: explicit and unambiguous, RFC822-compliant.
- Disadvantage: cumbersome.
-
- Conclusion: rejected for the general case (but such a directive
- could certainly be written).
-
-4. Use Javadoc-style::
-
- @Author: Me
- @Version: 1
- @param a: integer
-
- Advantages: unambiguous, precedent, flexible. Disadvantages:
- non-intuitive, ugly, not RFC822-compliant.
-
- Conclusion: rejected.
-
-5. Use leading colons::
-
- :Author: Me
- :Version: 1
-
- Advantages: unambiguous, obvious (*almost* RFC822-compliant),
- flexible, perhaps even elegant. Disadvantages: no precedent, not
- quite RFC822-compliant.
-
- Conclusion: accepted!
-
-6. Use double colons::
-
- Author:: Me
- Version:: 1
-
- Advantages: unambiguous, obvious? (*almost* RFC822-compliant),
- flexible, similar to syntax already used for literal blocks and
- directives. Disadvantages: no precedent, not quite
- RFC822-compliant, similar to syntax already used for literal blocks
- and directives.
-
- Conclusion: rejected because of the syntax similarity & conflicts.
-
-Why is RFC822 compliance important? It's a universal Internet
-standard, and super obvious. Also, I'd like to support the PEP format
-(ulterior motive: get PEPs to use reStructuredText as their standard).
-But it *would* be easy to get used to an alternative (easy even to
-convert PEPs; probably harder to convert python-deviants ;-).
-
-Unfortunately, without well-defined context (such as in email headers:
-RFC822 only applies before any blank lines), the RFC822 format is
-ambiguous. It is very common in ordinary text. To implement field
-lists unambiguously, we need explicit syntax.
-
-The following question was posed in a footnote:
-
- Should "bibliographic field lists" be defined at the parser level,
- or at the DPS transformation level? In other words, are they
- reStructuredText-specific, or would they also be applicable to
- another (many/every other?) syntax?
-
-The answer is that bibliographic fields are a
-reStructuredText-specific markup convention. Other syntaxes may
-implement the bibliographic elements explicitly. For example, there
-would be no need for such a transformation for an XML-based markup
-syntax.
-
-.. _RFC822: http://www.rfc-editor.org/rfc/rfc822.txt
-
-
-Interpreted Text "Roles"
-========================
-
-The original purpose of interpreted text was as a mechanism for
-descriptive markup, to describe the nature or role of a word or
-phrase. For example, in XML we could say "<function>len</function>"
-to mark up "len" as a function. It is envisaged that within Python
-docstrings (inline documentation in Python module source files, the
-primary market for reStructuredText) the role of a piece of
-interpreted text can be inferred implicitly from the context of the
-docstring within the program source. For other applications, however,
-the role may have to be indicated explicitly.
-
-Interpreted text is enclosed in single backquotes (`).
-
-1. Initially, it was proposed that an explicit role could be indicated
- as a word or phrase within the enclosing backquotes:
-
- - As a prefix, separated by a colon and whitespace::
-
- `role: interpreted text`
-
- - As a suffix, separated by whitespace and a colon::
-
- `interpreted text :role`
-
- There are problems with the initial approach:
-
- - There could be ambiguity with interpreted text containing colons.
- For example, an index entry of "Mission: Impossible" would
- require a backslash-escaped colon.
-
- - The explicit role is descriptive markup, not content, and will
- not be visible in the processed output. Putting it inside the
- backquotes doesn't feel right; the *role* isn't being quoted.
-
-2. Tony Ibbs suggested that the role be placed outside the
- backquotes::
-
- role:`prefix` or `suffix`:role
-
- This removes the embedded-colons ambiguity, but limits the role
- identifier to be a single word (whitespace would be illegal).
- Since roles are not meant to be visible after processing, the lack
- of whitespace support is not important.
-
- The suggested syntax remains ambiguous with respect to ratios and
- some writing styles. For example, suppose there is a "signal"
- identifier, and we write::
-
- ...calculate the `signal`:noise ratio.
-
- "noise" looks like a role.
-
-3. As an improvement on #2, we can bracket the role with colons::
-
- :role:`prefix` or `suffix`:role:
-
- This syntax is similar to that of field lists, which is fine since
- both are doing similar things: describing.
-
- This is the syntax chosen for reStructuredText.
-
-4. Another alternative is two colons instead of one::
-
- role::`prefix` or `suffix`::role
-
- But this is used for analogies ("A:B::C:D": "A is to B as C is to
- D").
-
- Both alternative #2 and #4 lack delimiters on both sides of the
- role, making it difficult to parse (by the reader).
-
-5. Some kind of bracketing could be used:
-
- - Parentheses::
-
- (role)`prefix` or `suffix`(role)
-
- - Braces::
-
- {role}`prefix` or `suffix`{role}
-
- - Square brackets::
-
- [role]`prefix` or `suffix`[role]
-
- - Angle brackets::
-
- <role>`prefix` or `suffix`<role>
-
- (The overlap of \*ML tags with angle brackets would be too
- confusing and precludes their use.)
-
-Syntax #3 was chosen for reStructuredText.
-
-
-Comments
-========
-
-A problem with comments (actually, with all indented constructs) is
-that they cannot be followed by an indented block -- a block quote --
-without swallowing it up.
-
-I thought that perhaps comments should be one-liners only. But would
-this mean that footnotes, hyperlink targets, and directives must then
-also be one-liners? Not a good solution.
-
-Tony Ibbs suggested a "comment" directive. I added that we could
-limit a comment to a single text block, and that a "multi-block
-comment" could use "comment-start" and "comment-end" directives. This
-would remove the indentation incompatibility. A "comment" directive
-automatically suggests "footnote" and (hyperlink) "target" directives
-as well. This could go on forever! Bad choice.
-
-Garth Kidd suggested that an "empty comment", a ".." explicit markup
-start with nothing on the first line (except possibly whitespace) and
-a blank line immediately following, could serve as an "unindent". An
-empty comment does **not** swallow up indented blocks following it,
-so block quotes are safe. "A tiny but practical wart." Accepted.
-
-
-Anonymous Hyperlinks
-====================
-
-Alan Jaffray came up with this idea, along with the following syntax::
-
- Search the `Python DOC-SIG mailing list archives`{}_.
-
- .. _: http://mail.python.org/pipermail/doc-sig/
-
-The idea is sound and useful. I suggested a "double underscore"
-syntax::
-
- Search the `Python DOC-SIG mailing list archives`__.
-
- .. __: http://mail.python.org/pipermail/doc-sig/
-
-But perhaps single underscores are okay? The syntax looks better, but
-the hyperlink itself doesn't explicitly say "anonymous"::
-
- Search the `Python DOC-SIG mailing list archives`_.
-
- .. _: http://mail.python.org/pipermail/doc-sig/
-
-Mixing anonymous and named hyperlinks becomes confusing. The order of
-targets is not significant for named hyperlinks, but it is for
-anonymous hyperlinks::
-
- Hyperlinks: anonymous_, named_, and another anonymous_.
-
- .. _named: named
- .. _: anonymous1
- .. _: anonymous2
-
-Without the extra syntax of double underscores, determining which
-hyperlink references are anonymous may be difficult. We'd have to
-check which references don't have corresponding targets, and match
-those up with anonymous targets. Keeping to a simple consistent
-ordering (as with auto-numbered footnotes) seems simplest.
-
-reStructuredText will use the explicit double-underscore syntax for
-anonymous hyperlinks. An alternative (see `Reworking Explicit
-Markup`_ below) for the somewhat awkward ".. __:" syntax is "__"::
-
- An anonymous__ reference.
-
- __ http://anonymous
-
-
-Reworking Explicit Markup
-=========================
-
-Alan Jaffray came up with the idea of `anonymous hyperlinks`_, added
-to reStructuredText. Subsequently it was asserted that hyperlinks
-(especially anonymous hyperlinks) would play an increasingly important
-role in reStructuredText documents, and therefore they require a
-simpler and more concise syntax. This prompted a review of the
-current and proposed explicit markup syntaxes with regards to
-improving usability.
-
-1. Original syntax::
-
- .. _blah: internal hyperlink target
- .. _blah: http://somewhere external hyperlink target
- .. _blah: blahblah_ indirect hyperlink target
- .. __: anonymous internal target
- .. __: http://somewhere anonymous external target
- .. __: blahblah_ anonymous indirect target
- .. [blah] http://somewhere footnote
- .. blah:: http://somewhere directive
- .. blah: http://somewhere comment
-
- .. Note::
-
- The comment text was intentionally made to look like a hyperlink
- target.
-
- Origins:
-
- * Except for the colon (a delimiter necessary to allow for
- phrase-links), hyperlink target ``.. _blah:`` comes from Setext.
- * Comment syntax from Setext.
- * Footnote syntax from StructuredText ("named links").
- * Directives and anonymous hyperlinks original to reStructuredText.
-
- Advantages:
-
- + Consistent explicit markup indicator: "..".
- + Consistent hyperlink syntax: ".. _" & ":".
-
- Disadvantages:
-
- - Anonymous target markup is awkward: ".. __:".
- - The explicit markup indicator ("..") is excessively overloaded?
- - Comment text is limited (can't look like a footnote, hyperlink,
- or directive). But this is probably not important.
-
-2. Alan Jaffray's proposed syntax #1::
-
- __ _blah internal hyperlink target
- __ blah: http://somewhere external hyperlink target
- __ blah: blahblah_ indirect hyperlink target
- __ anonymous internal target
- __ http://somewhere anonymous external target
- __ blahblah_ anonymous indirect target
- __ [blah] http://somewhere footnote
- .. blah:: http://somewhere directive
- .. blah: http://somewhere comment
-
- The hyperlink-connoted underscores have become first-level syntax.
-
- Advantages:
-
- + Anonymous targets are simpler.
- + All hyperlink targets are one character shorter.
-
- Disadvantages:
-
- - Inconsistent internal hyperlink targets. Unlike all other named
- hyperlink targets, there's no colon. There's an extra leading
- underscore, but we can't drop it because without it, "blah" looks
- like a relative URI. Unless we restore the colon::
-
- __ blah: internal hyperlink target
-
- - Obtrusive markup?
-
-3. Alan Jaffray's proposed syntax #2::
-
- .. _blah internal hyperlink target
- .. blah: http://somewhere external hyperlink target
- .. blah: blahblah_ indirect hyperlink target
- .. anonymous internal target
- .. http://somewhere anonymous external target
- .. blahblah_ anonymous indirect target
- .. [blah] http://somewhere footnote
- !! blah: http://somewhere directive
- ## blah: http://somewhere comment
-
- Leading underscores have been (almost) replaced by "..", while
- comments and directives have gained their own syntax.
-
- Advantages:
-
- + Anonymous hyperlinks are simpler.
- + Unique syntax for comments. Connotation of "comment" from
- some programming languages (including our favorite).
- + Unique syntax for directives. Connotation of "action!".
-
- Disadvantages:
-
- - Inconsistent internal hyperlink targets. Again, unlike all other
- named hyperlink targets, there's no colon. There's a leading
- underscore, matching the trailing underscores of references,
- which no other hyperlink targets have. We can't drop that one
- leading underscore though: without it, "blah" looks like a
- relative URI. Again, unless we restore the colon::
-
- .. blah: internal hyperlink target
-
- - All (except for internal) hyperlink targets lack their leading
- underscores, losing the "hyperlink" connotation.
-
- - Obtrusive syntax for comments. Alternatives::
-
- ;; blah: http://somewhere
- (also comment syntax in Lisp & others)
- ,, blah: http://somewhere
- ("comma comma": sounds like "comment"!)
-
- - Iffy syntax for directives. Alternatives?
-
-4. Tony Ibbs' proposed syntax::
-
- .. _blah: internal hyperlink target
- .. _blah: http://somewhere external hyperlink target
- .. _blah: blahblah_ indirect hyperlink target
- .. anonymous internal target
- .. http://somewhere anonymous external target
- .. blahblah_ anonymous indirect target
- .. [blah] http://somewhere footnote
- .. blah:: http://somewhere directive
- .. blah: http://somewhere comment
-
- This is the same as the current syntax, except for anonymous
- targets which drop their "__: ".
-
- Advantage:
-
- + Anonymous targets are simpler.
-
- Disadvantages:
-
- - Anonymous targets lack their leading underscores, losing the
- "hyperlink" connotation.
- - Anonymous targets are almost indistinguishable from comments.
- (Better to know "up front".)
-
-5. David Goodger's proposed syntax: Perhaps going back to one of
- Alan's earlier suggestions might be the best solution. How about
- simply adding "__ " as a synonym for ".. __: " in the original
- syntax? These would become equivalent::
-
- .. __: anonymous internal target
- .. __: http://somewhere anonymous external target
- .. __: blahblah_ anonymous indirect target
-
- __ anonymous internal target
- __ http://somewhere anonymous external target
- __ blahblah_ anonymous indirect target
-
-Alternative 5 has been adopted.
-
-
-Backquotes in Phrase-Links
-==========================
-
-[From a 2001-06-05 Doc-SIG post in reply to questions from Doug
-Hellmann.]
-
-The first draft of the spec, posted to the Doc-SIG in November 2000,
-used square brackets for phrase-links. I changed my mind because:
-
-1. In the first draft, I had already decided on single-backquotes for
- inline literal text.
-
-2. However, I wanted to minimize the necessity for backslash escapes,
- for example when quoting Python repr-equivalent syntax that uses
- backquotes.
-
-3. The processing of identifiers (function/method/attribute/module
- etc. names) into hyperlinks is a useful feature. PyDoc recognizes
- identifiers heuristically, but it doesn't take much imagination to
- come up with counter-examples where PyDoc's heuristics would result
- in embarassing failure. I wanted to do it deterministically, and
- that called for syntax. I called this construct "interpreted
- text".
-
-4. Leveraging off the ``*emphasis*/**strong**`` syntax, lead to the
- idea of using double-backquotes as syntax.
-
-5. I worked out some rules for inline markup recognition.
-
-6. In combination with #5, double backquotes lent themselves to inline
- literals, neatly satisfying #2, minimizing backslash escapes. In
- fact, the spec says that no interpretation of any kind is done
- within double-backquote inline literal text; backslashes do *no*
- escaping within literal text.
-
-7. Single backquotes are then freed up for interpreted text.
-
-8. I already had square brackets required for footnote references.
-
-9. Since interpreted text will typically turn into hyperlinks, it was
- a natural fit to use backquotes as the phrase-quoting syntax for
- trailing-underscore hyperlinks.
-
-The original inspiration for the trailing underscore hyperlink syntax
-was Setext. But for phrases Setext used a very cumbersome
-``underscores_between_words_like_this_`` syntax.
-
-The underscores can be viewed as if they were right-pointing arrows:
-``-->``. So ``hyperlink_`` points away from the reference, and
-``.. _hyperlink:`` points toward the target.
-
-
-Substitution Mechanism
-======================
-
-Substitutions arose out of a Doc-SIG thread begun on 2001-10-28 by
-Alan Jaffray, "reStructuredText inline markup". It reminded me of a
-missing piece of the reStructuredText puzzle, first referred to in my
-contribution to "Documentation markup & processing / PEPs" (Doc-SIG
-2001-06-21).
-
-Substitutions allow the power and flexibility of directives to be
-shared by inline text. They are a way to allow arbitrarily complex
-inline objects, while keeping the details out of the flow of text.
-They are the equivalent of SGML/XML's named entities. For example, an
-inline image (using reference syntax alternative 4d (vertical bars)
-and definition alternative 3, the alternatives chosen for inclusion in
-the spec)::
-
- The |biohazard| symbol must be used on containers used to dispose
- of medical waste.
-
- .. |biohazard| image:: biohazard.png
- [height=20 width=20]
-
-The ``|biohazard|`` substitution reference will be replaced in-line by
-whatever the ``.. |biohazard|`` substitution definition generates (in
-this case, an image). A substitution definition contains the
-substitution text bracketed with vertical bars, followed by a an
-embedded inline-compatible directive, such as "image". A transform is
-required to complete the substitution.
-
-Syntax alternatives for the reference:
-
-1. Use the existing interpreted text syntax, with a predefined role
- such as "sub"::
-
- The `biohazard`:sub: symbol...
-
- Advantages: existing syntax, explicit. Disadvantages: verbose,
- obtrusive.
-
-2. Use a variant of the interpreted text syntax, with a new suffix
- akin to the underscore in phrase-link references::
-
- (a) `name`@
- (b) `name`#
- (c) `name`&
- (d) `name`/
- (e) `name`<
- (f) `name`::
- (g) `name`:
-
-
- Due to incompatibility with other constructs and ordinary text
- usage, (f) and (g) are not possible.
-
-3. Use interpreted text syntax with a fixed internal format::
-
- (a) `:name:`
- (b) `name:`
- (c) `name::`
- (d) `::name::`
- (e) `%name%`
- (f) `#name#`
- (g) `/name/`
- (h) `&name&`
- (i) `|name|`
- (j) `[name]`
- (k) `<name>`
- (l) `&name;`
- (m) `'name'`
-
- To avoid ML confusion (k) and (l) are definitely out. Square
- brackets (j) won't work in the target (the substitution definition
- would be indistinguishable from a footnote).
-
- The ```/name/``` syntax (g) is reminiscent of "s/find/sub"
- substitution syntax in ed-like languages. However, it may have a
- misleading association with regexps, and looks like an absolute
- POSIX path. (i) is visually equivalent and lacking the
- connotations.
-
- A disadvantage of all of these is that they limit interpreted text,
- albeit only slightly.
-
-4. Use specialized syntax, something new::
-
- (a) #name#
- (b) @name@
- (c) /name/
- (d) |name|
- (e) <<name>>
- (f) //name//
- (g) ||name||
- (h) ^name^
- (i) [[name]]
- (j) ~name~
- (k) !name!
- (l) =name=
- (m) ?name?
- (n) >name<
-
- "#" (a) and "@" (b) are obtrusive. "/" (c) without backquotes
- looks just like a POSIX path; it is likely for such usage to appear
- in text.
-
- "|" (d) and "^" (h) are feasible.
-
-5. Redefine the trailing underscore syntax. See definition syntax
- alternative 4, below.
-
-Syntax alternatives for the definition:
-
-1. Use the existing directive syntax, with a predefined directive such
- as "sub". It contains a further embedded directive resolving to an
- inline-compatible object::
-
- .. sub:: biohazard
- .. image:: biohazard.png
- [height=20 width=20]
-
- .. sub:: parrot
- That bird wouldn't *voom* if you put 10,000,000 volts
- through it!
-
- The advantages and disadvantages are the same as in inline
- alternative 1.
-
-2. Use syntax as in #1, but with an embedded directivecompressed::
-
- .. sub:: biohazard image:: biohazard.png
- [height=20 width=20]
-
- This is a bit better than alternative 1, but still too much.
-
-3. Use a variant of directive syntax, incorporating the substitution
- text, obviating the need for a special "sub" directive name. If we
- assume reference alternative 4d (vertical bars), the matching
- definition would look like this::
-
- .. |biohazard| image:: biohazard.png
- [height=20 width=20]
-
-4. (Suggested by Alan Jaffray on Doc-SIG from 2001-11-06.)
-
- Instead of adding new syntax, redefine the trailing underscore
- syntax to mean "substitution reference" instead of "hyperlink
- reference". Alan's example::
-
- I had lunch with Jonathan_ today. We talked about Zope_.
-
- .. _Jonathan: lj [user=jhl]
- .. _Zope: http://www.zope.org/
-
- A problem with the proposed syntax is that URIs which look like
- simple reference names (alphanum plus ".", "-", "_") would be
- indistinguishable from substitution directive names. A more
- consistent syntax would be::
-
- I had lunch with Jonathan_ today. We talked about Zope_.
-
- .. _Jonathan: lj:: user=jhl
- .. _Zope: http://www.zope.org/
-
- (``::`` after ``.. _Jonathan: lj``.)
-
- The "Zope" target is a simple external hyperlink, but the
- "Jonathan" target contains a directive. Alan proposed is that the
- reference text be replaced by whatever the referenced directive
- (the "directive target") produces. A directive reference becomes a
- hyperlink reference if the contents of the directive target resolve
- to a hyperlink. If the directive target resolves to an icon, the
- reference is replaced by an inline icon. If the directive target
- resolves to a hyperlink, the directive reference becomes a
- hyperlink reference.
-
- This seems too indirect and complicated for easy comprehension.
-
- The reference in the text will sometimes become a link, sometimes
- not. Sometimes the reference text will remain, sometimes not. We
- don't know *at the reference*::
-
- This is a `hyperlink reference`_; its text will remain.
- This is an `inline icon`_; its text will disappear.
-
- That's a problem.
-
-The syntax that has been incorporated into the spec and parser is
-reference alternative 4d with definition alternative 3::
-
- The |biohazard| symbol...
-
- .. |biohazard| image:: biohazard.png
- [height=20 width=20]
-
-We can also combine substitution references with hyperlink references,
-by appending a "_" (named hyperlink reference) or "__" (anonymous
-hyperlink reference) suffix to the substitution reference. This
-allows us to click on an image-link::
-
- The |biohazard|_ symbol...
-
- .. |biohazard| image:: biohazard.png
- [height=20 width=20]
- .. _biohazard: http://www.cdc.gov/
-
-There have been several suggestions for the naming of these
-constructs, originally called "substitution references" and
-"substitutions".
-
-1. Candidate names for the reference construct:
-
- (a) substitution reference
- (b) tagging reference
- (c) inline directive reference
- (d) directive reference
- (e) indirect inline directive reference
- (f) inline directive placeholder
- (g) inline directive insertion reference
- (h) directive insertion reference
- (i) insertion reference
- (j) directive macro reference
- (k) macro reference
- (l) substitution directive reference
-
-2. Candidate names for the definition construct:
-
- (a) substitution
- (b) substitution directive
- (c) tag
- (d) tagged directive
- (e) directive target
- (f) inline directive
- (g) inline directive definition
- (h) referenced directive
- (i) indirect directive
- (j) indirect directive definition
- (k) directive definition
- (l) indirect inline directive
- (m) named directive definition
- (n) inline directive insertion definition
- (o) directive insertion definition
- (p) insertion definition
- (q) insertion directive
- (r) substitution definition
- (s) directive macro definition
- (t) macro definition
- (u) substitution directive definition
- (v) substitution definition
-
-"Inline directive reference" (1c) seems to be an appropriate term at
-first, but the term "inline" is redundant in the case of the
-reference. Its counterpart "inline directive definition" (2g) is
-awkward, because the directive definition itself is not inline.
-
-"Directive reference" (1d) and "directive definition" (2k) are too
-vague. "Directive definition" could be used to refer to any
-directive, not just those used for inline substitutions.
-
-One meaning of the term "macro" (1k, 2s, 2t) is too
-programming-language-specific. Also, macros are typically simple text
-substitution mechanisms: the text is substituted first and evaluated
-later. reStructuredText substitution definitions are evaluated in
-place at parse time and substituted afterwards.
-
-"Insertion" (1h, 1i, 2n-2q) is almost right, but it implies that
-something new is getting added rather than one construct being
-replaced by another.
-
-Which brings us back to "substitution". The overall best names are
-"substitution reference" (1a) and "substitution definition" (2v). A
-long way to go to add one word!
-
-
-Reworking Footnotes
-===================
-
-As a further wrinkle (see `Reworking Explicit Markup`_ above), in the
-wee hours of 2002-02-28 I posted several ideas for changes to footnote
-syntax:
-
- - Change footnote syntax from ``.. [1]`` to ``_[1]``? ...
- - Differentiate (with new DTD elements) author-date "citations"
- (``[GVR2002]``) from numbered footnotes? ...
- - Render footnote references as superscripts without "[]"? ...
-
-These ideas are all related, and suggest changes in the
-reStructuredText syntax as well as the docutils tree model.
-
-The footnote has been used for both true footnotes (asides expanding
-on points or defining terms) and for citations (references to external
-works). Rather than dealing with one amalgam construct, we could
-separate the current footnote concept into strict footnotes and
-citations. Citations could be interpreted and treated differently
-from footnotes. Footnotes would be limited to numerical labels:
-manual ("1") and auto-numbered (anonymous "#", named "#label").
-
-The footnote is the only explicit markup construct (starts with ".. ")
-that directly translates to a visible body element. I've always been
-a little bit uncomfortable with the ".. " marker for footnotes because
-of this; ".. " has a connotation of "special", but footnotes aren't
-especially "special". Printed texts often put footnotes at the bottom
-of the page where the reference occurs (thus "foot note"). Some HTML
-designs would leave footnotes to be rendered the same positions where
-they're defined. Other online and printed designs will gather
-footnotes into a section near the end of the document, converting them
-to "endnotes" (perhaps using a directive in our case); but this
-"special processing" is not an intrinsic property of the footnote
-itself, but a decision made by the document author or processing
-system.
-
-Citations are almost invariably collected in a section at the end of a
-document or section. Citations "disappear" from where they are
-defined and are magically reinserted at some well-defined point.
-There's more of a connection to the "special" connotation of the ".. "
-syntax. The point at which the list of citations is inserted could be
-defined manually by a directive (e.g., ".. citations::"), and/or have
-default behavior (e.g., a section automatically inserted at the end of
-the document) that might be influenced by options to the Writer.
-
-Syntax proposals:
-
-+ Footnotes:
-
- - Current syntax::
-
- .. [1] Footnote 1
- .. [#] Auto-numbered footnote.
- .. [#label] Auto-labeled footnote.
-
- - The syntax proposed in the original 2002-02-28 Doc-SIG post:
- remove the ".. ", prefix a "_"::
-
- _[1] Footnote 1
- _[#] Auto-numbered footnote.
- _[#label] Auto-labeled footnote.
-
- The leading underscore syntax (earlier dropped because
- ``.. _[1]:`` was too verbose) is a useful reminder that footnotes
- are hyperlink targets.
-
- - Minimal syntax: remove the ".. [" and "]", prefix a "_", and
- suffix a "."::
-
- _1. Footnote 1.
- _#. Auto-numbered footnote.
- _#label. Auto-labeled footnote.
-
- ``_1.``, ``_#.``, and ``_#label.`` are markers,
- like list markers.
-
- Footnotes could be rendered something like this in HTML
-
- | 1. This is a footnote. The brackets could be dropped
- | from the label, and a vertical bar could set them
- | off from the rest of the document in the HTML.
-
- Two-way hyperlinks on the footnote marker ("1." above) would also
- help to differentiate footnotes from enumerated lists.
-
- If converted to endnotes (by a directive/transform), a horizontal
- half-line might be used instead. Page-oriented output formats
- would typically use the horizontal line for true footnotes.
-
-+ Footnote references:
-
- - Current syntax::
-
- [1]_, [#]_, [#label]_
-
- - Minimal syntax to match the minimal footnote syntax above::
-
- 1_, #_, #label_
-
- As a consequence, pure-numeric hyperlink references would not be
- possible; they'd be interpreted as footnote references.
-
-+ Citation references: no change is proposed from the current footnote
- reference syntax::
-
- [GVR2001]_
-
-+ Citations:
-
- - Current syntax (footnote syntax)::
-
- .. [GVR2001] Python Documentation; van Rossum, Drake, et al.;
- http://www.python.org/doc/
-
- - Possible new syntax::
-
- _[GVR2001] Python Documentation; van Rossum, Drake, et al.;
- http://www.python.org/doc/
-
- _[DJG2002]
- Docutils: Python Documentation Utilities project; Goodger
- et al.; http://docutils.sourceforge.net/
-
- Without the ".. " marker, subsequent lines would either have to
- align as in one of the above, or we'd have to allow loose
- alignment (I'd rather not)::
-
- _[GVR2001] Python Documentation; van Rossum, Drake, et al.;
- http://www.python.org/doc/
-
-I proposed adopting the "minimal" syntax for footnotes and footnote
-references, and adding citations and citation references to
-reStructuredText's repertoire. The current footnote syntax for
-citations is better than the alternatives given.
-
-From a reply by Tony Ibbs on 2002-03-01:
-
- However, I think easier with examples, so let's create one::
-
- Fans of Terry Pratchett are perhaps more likely to use
- footnotes [1]_ in their own writings than other people
- [2]_. Of course, in *general*, one only sees footnotes
- in academic or technical writing - it's use in fiction
- and letter writing is not normally considered good
- style [4]_, particularly in emails (not a medium that
- lends itself to footnotes).
-
- .. [1] That is, little bits of referenced text at the
- bottom of the page.
- .. [2] Because Terry himself does, of course [3]_.
- .. [3] Although he has the distinction of being
- *funny* when he does it, and his fans don't always
- achieve that aim.
- .. [4] Presumably because it detracts from linear
- reading of the text - this is, of course, the point.
-
- and look at it with the second syntax proposal::
-
- Fans of Terry Pratchett are perhaps more likely to use
- footnotes [1]_ in their own writings than other people
- [2]_. Of course, in *general*, one only sees footnotes
- in academic or technical writing - it's use in fiction
- and letter writing is not normally considered good
- style [4]_, particularly in emails (not a medium that
- lends itself to footnotes).
-
- _[1] That is, little bits of referenced text at the
- bottom of the page.
- _[2] Because Terry himself does, of course [3]_.
- _[3] Although he has the distinction of being
- *funny* when he does it, and his fans don't always
- achieve that aim.
- _[4] Presumably because it detracts from linear
- reading of the text - this is, of course, the point.
-
- (I note here that if I have gotten the indentation of the
- footnotes themselves correct, this is clearly not as nice. And if
- the indentation should be to the left margin instead, I like that
- even less).
-
- and the third (new) proposal::
-
- Fans of Terry Pratchett are perhaps more likely to use
- footnotes 1_ in their own writings than other people
- 2_. Of course, in *general*, one only sees footnotes
- in academic or technical writing - it's use in fiction
- and letter writing is not normally considered good
- style 4_, particularly in emails (not a medium that
- lends itself to footnotes).
-
- _1. That is, little bits of referenced text at the
- bottom of the page.
- _2. Because Terry himself does, of course 3_.
- _3. Although he has the distinction of being
- *funny* when he does it, and his fans don't always
- achieve that aim.
- _4. Presumably because it detracts from linear
- reading of the text - this is, of course, the point.
-
- I think I don't, in practice, mind the targets too much (the use
- of a dot after the number helps a lot here), but I do have a
- problem with the body text, in that I don't naturally separate out
- the footnotes as different than the rest of the text - instead I
- keep wondering why there are numbers interspered in the text. The
- use of brackets around the numbers ([ and ]) made me somehow parse
- the footnote references as "odd" - i.e., not part of the body text
- - and thus both easier to skip, and also (paradoxically) easier to
- pick out so that I could follow them.
-
- Thus, for the moment (and as always susceptable to argument), I'd
- say -1 on the new form of footnote reference (i.e., I much prefer
- the existing ``[1]_`` over the proposed ``1_``), and ambivalent
- over the proposed target change.
-
- That leaves David's problem of wanting to distinguish footnotes
- and citations - and the only thing I can propose there is that
- footnotes are numeric or # and citations are not (which, as a
- human being, I can probably cope with!).
-
-From a reply by Paul Moore on 2002-03-01:
-
- I think the current footnote syntax ``[1]_`` is *exactly* the
- right balance of distinctness vs unobtrusiveness. I very
- definitely don't think this should change.
-
- On the target change, it doesn't matter much to me.
-
-From a further reply by Tony Ibbs on 2002-03-01, referring to the
-"[1]" form and actual usage in email:
-
- Clearly this is a form people are used to, and thus we should
- consider it strongly (in the same way that the usage of ``*..*``
- to mean emphasis was taken partly from email practise).
-
- Equally clearly, there is something "magical" for people in the
- use of a similar form (i.e., ``[1]``) for both footnote reference
- and footnote target - it seems natural to keep them similar.
-
- ...
-
- I think that this established plaintext usage leads me to strongly
- believe we should retain square brackets at both ends of a
- footnote. The markup of the reference end (a single trailing
- underscore) seems about as minimal as we can get away with. The
- markup of the target end depends on how one envisages the thing -
- if ".." means "I am a target" (as I tend to see it), then that's
- good, but one can also argue that the "_[1]" syntax has a neat
- symmetry with the footnote reference itself, if one wishes (in
- which case ".." presumably means "hidden/special" as David seems
- to think, which is why one needs a ".." *and* a leading underline
- for hyperlink targets.
-
-Given the persuading arguments voiced, we'll leave footnote & footnote
-reference syntax alone. Except that these discussions gave rise to
-the "auto-symbol footnote" concept, which has been added. Citations
-and citation references have also been added.
-
-
-Auto-Enumerated Lists
-=====================
-
-The advantage of auto-numbered enumerated lists would be similar to
-that of auto-numbered footnotes: lists could be written and rearranged
-without having to manually renumber them. The disadvantages are also
-the same: input and output wouldn't match exactly; the markup may be
-ugly or confusing (depending on which alternative is chosen).
-
-1. Use the "#" symbol. Example::
-
- #. Item 1.
- #. Item 2.
- #. Item 3.
-
- Advantages: simple, explicit. Disadvantage: enumeration sequence
- cannot be specified (limited to arabic numerals); ugly.
-
-2. As a variation on #1, first initialize the enumeration sequence?
- For example::
-
- a) Item a.
- #) Item b.
- #) Item c.
-
- Advantages: simple, explicit, any enumeration sequence possible.
- Disadvantages: ugly; perhaps confusing with mixed concrete/abstract
- enumerators.
-
-3. Alternative suggested by Fred Bremmer, from experience with MoinMoin::
-
- 1. Item 1.
- 1. Item 2.
- 1. Item 3.
-
- Advantages: enumeration sequence is explicit (could be multiple
- "a." or "(I)" tokens). Disadvantages: perhaps confusing; otherwise
- erroneous input (e.g., a duplicate item "1.") would pass silently,
- either causing a problem later in the list (if no blank lines
- between items) or creating two lists (with blanks).
-
- Take this input for example::
-
- 1. Item 1.
-
- 1. Unintentional duplicate of item 1.
-
- 2. Item 2.
-
- Currently the parser will produce two list, "1" and "1,2" (no
- warnings, because of the presence of blank lines). Using Fred's
- notation, the current behavior is "1,1,2 -> 1 1,2" (without blank
- lines between items, it would be "1,1,2 -> 1 [WARNING] 1,2"). What
- should the behavior be with auto-numbering?
-
- Fred has produced a patch__, whose initial behavior is as follows::
-
- 1,1,1 -> 1,2,3
- 1,2,2 -> 1,2,3
- 3,3,3 -> 3,4,5
- 1,2,2,3 -> 1,2,3 [WARNING] 3
- 1,1,2 -> 1,2 [WARNING] 2
-
- (After the "[WARNING]", the "3" would begin a new list.)
-
- I have mixed feelings about adding this functionality to the spec &
- parser. It would certainly be useful to some users (myself
- included; I often have to renumber lists). Perhaps it's too
- clever, asking the parser to guess too much. What if you *do* want
- three one-item lists in a row, each beginning with "1."? You'd
- have to use empty comments to force breaks. Also, I question
- whether "1,2,2 -> 1,2,3" is optimal behavior.
-
- In response, Fred came up with "a stricter and more explicit rule
- [which] would be to only auto-number silently if *all* the
- enumerators of a list were identical". In that case::
-
- 1,1,1 -> 1,2,3
- 1,2,2 -> 1,2 [WARNING] 2
- 3,3,3 -> 3,4,5
- 1,2,2,3 -> 1,2 [WARNING] 2,3
- 1,1,2 -> 1,2 [WARNING] 2
-
- Should any start-value be allowed ("3,3,3"), or should
- auto-numbered lists be limited to begin with ordinal-1 ("1", "A",
- "a", "I", or "i")?
-
- __ http://sourceforge.net/tracker/index.php?func=detail&aid=548802
- &group_id=38414&atid=422032
-
-4. Alternative proposed by Tony Ibbs::
-
- #1. First item.
- #3. Aha - I edited this in later.
- #2. Second item.
-
- The initial proposal required unique enumerators within a list, but
- this limits the convenience of a feature of already limited
- applicability and convenience. Not a useful requirement; dropped.
-
- Instead, simply prepend a "#" to a standard list enumerator to
- indicate auto-enumeration. The numbers (or letters) of the
- enumerators themselves are not significant, except:
-
- - as a sequence indicator (arabic, roman, alphabetic; upper/lower),
-
- - and perhaps as a start value (first list item).
-
- Advantages: explicit, any enumeration sequence possible.
- Disadvantages: a bit ugly.
-
-
-Inline External Targets
-=======================
-
-Currently reStructuredText has two hyperlink syntax variations:
-
-* Named hyperlinks::
-
- This is a named reference_ of one word ("reference"). Here is
- a `phrase reference`_. Phrase references may even cross `line
- boundaries`_.
-
- .. _reference: http://www.example.org/reference/
- .. _phrase reference: http://www.example.org/phrase_reference/
- .. _line boundaries: http://www.example.org/line_boundaries/
-
- + Advantages:
-
- - The plaintext is readable.
- - Each target may be reused multiple times (e.g., just write
- ``"reference_"`` again).
- - No syncronized ordering of references and targets is necessary.
-
- + Disadvantages:
-
- - The reference text must be repeated as target names; could lead
- to mistakes.
- - The target URLs may be located far from the references, and hard
- to find in the plaintext.
-
-* Anonymous hyperlinks (in current reStructuredText)::
-
- This is an anonymous reference__. Here is an anonymous
- `phrase reference`__. Phrase references may even cross `line
- boundaries`__.
-
- __ http://www.example.org/reference/
- __ http://www.example.org/phrase_reference/
- __ http://www.example.org/line_boundaries/
-
- + Advantages:
-
- - The plaintext is readable.
- - The reference text does not have to be repeated.
-
- + Disadvantages:
-
- - References and targets must be kept in sync.
- - Targets cannot be reused.
- - The target URLs may be located far from the references.
-
-For comparison and historical background, StructuredText also has two
-syntaxes for hyperlinks:
-
-* First, ``"reference text":URL``::
-
- This is a "reference":http://www.example.org/reference/
- of one word ("reference"). Here is a "phrase
- reference":http://www.example.org/phrase_reference/.
-
-* Second, ``"reference text", http://example.com/absolute_URL``::
-
- This is a "reference", http://www.example.org/reference/
- of one word ("reference"). Here is a "phrase reference",
- http://www.example.org/phrase_reference/.
-
-Both syntaxes share advantages and disadvantages:
-
-+ Advantages:
-
- - The target is specified immediately adjacent to the reference.
-
-+ Disadvantages:
-
- - Poor plaintext readability.
- - Targets cannot be reused.
- - Both syntaxes use double quotes, common in ordinary text.
- - In the first syntax, the URL and the last word are stuck
- together, exacerbating the line wrap problem.
- - The second syntax is too magical; text could easily be written
- that way by accident (although only absolute URLs are recognized
- here, perhaps because of the potential for ambiguity).
-
-A new type of "inline external hyperlink" has been proposed.
-
-1. On 2002-06-28, Simon Budig proposed__ a new syntax for
- reStructuredText hyperlinks::
-
- This is a reference_(http://www.example.org/reference/) of one
- word ("reference"). Here is a `phrase
- reference`_(http://www.example.org/phrase_reference/). Are
- these examples, (single-underscore), named? If so, `anonymous
- references`__(http://www.example.org/anonymous/) using two
- underscores would probably be preferable.
-
- __ http://mail.python.org/pipermail/doc-sig/2002-June/002648.html
-
- The syntax, advantages, and disadvantages are similar to those of
- StructuredText.
-
- + Advantages:
-
- - The target is specified immediately adjacent to the reference.
-
- + Disadvantages:
-
- - Poor plaintext readability.
- - Targets cannot be reused (unless named, but the semantics are
- unclear).
-
- + Problems:
-
- - The ``"`ref`_(URL)"`` syntax forces the last word of the
- reference text to be joined to the URL, making a potentially
- very long word that can't be wrapped (URLs can be very long).
- The reference and the URL should be separate. This is a
- symptom of the following point:
-
- - The syntax produces a single compound construct made up of two
- equally important parts, *with syntax in the middle*, *between*
- the reference and the target. This is unprecedented in
- reStructuredText.
-
- - The "inline hyperlink" text is *not* a named reference (there's
- no lookup by name), so it shouldn't look like one.
-
- - According to the IETF standards RFC 2396 and RFC 2732,
- parentheses are legal URI characters and curly braces are legal
- email characters, making their use prohibitively difficult.
-
- - The named/anonymous semantics are unclear.
-
-2. After an analysis__ of the syntax of (1) above, we came up with the
- following compromise syntax::
-
- This is an anonymous reference__
- __<http://www.example.org/reference/> of one word
- ("reference"). Here is a `phrase reference`__
- __<http://www.example.org/phrase_reference/>. `Named
- references`_ _<http://www.example.org/anonymous/> use single
- underscores.
-
- __ http://mail.python.org/pipermail/doc-sig/2002-July/002670.html
-
- The syntax builds on that of the existing "inline internal
- targets": ``an _`inline internal target`.``
-
- + Advantages:
-
- - The target is specified immediately adjacent to the reference,
- improving maintainability:
-
- - References and targets are easily kept in sync.
- - The reference text does not have to be repeated.
-
- - The construct is executed in two parts: references identical to
- existing references, and targets that are new but not too big a
- stretch from current syntax.
-
- - There's overwhelming precedent for quoting URLs with angle
- brackets [#]_.
-
- + Disadvantages:
-
- - Poor plaintext readability.
- - Lots of "line noise".
- - Targets cannot be reused (unless named; see below).
-
- To alleviate the readability issue slightly, we could allow the
- target to appear later, such as after the end of the sentence::
-
- This is a named reference__ of one word ("reference").
- __<http://www.example.org/reference/> Here is a `phrase
- reference`__. __<http://www.example.org/phrase_reference/>
-
- Problem: this could only work for one reference at a time
- (reference/target pairs must be proximate [refA trgA refB trgB],
- not interleaved [refA refB trgA trgB] or nested [refA refB trgB
- trgA]). This variation is too problematic; references and inline
- external targets will have to be kept imediately adjacent (see (3)
- below).
-
- The ``"reference__ __<target>"`` syntax is actually for "anonymous
- inline external targets", emphasized by the double underscores. It
- follows that single trailing and leading underscores would lead to
- *implicitly named* inline external targets. This would allow the
- reuse of targets by name. So after ``"reference_ _<target>"``,
- another ``"reference_"`` would point to the same target.
-
- .. [#]
- From RFC 2396 (URI syntax):
-
- The angle-bracket "<" and ">" and double-quote (")
- characters are excluded [from URIs] because they are often
- used as the delimiters around URI in text documents and
- protocol fields.
-
- Using <> angle brackets around each URI is especially
- recommended as a delimiting style for URI that contain
- whitespace.
-
- From RFC 822 (email headers):
-
- Angle brackets ("<" and ">") are generally used to indicate
- the presence of a one machine-usable reference (e.g.,
- delimiting mailboxes), possibly including source-routing to
- the machine.
-
-3. If it is best for references and inline external targets to be
- immediately adjacent, then they might as well be integrated.
- Here's an alternative syntax embedding the target URL in the
- reference::
-
- This is an anonymous `reference <http://www.example.org
- /reference/>`__ of one word ("reference"). Here is a `phrase
- reference <http://www.example.org/phrase_reference/>`__.
-
- Advantages and disadvantages are similar to those in (2).
- Readability is still an issue, but the syntax is a bit less
- heavyweight (reduced line noise). Backquotes are required, even
- for one-word references; the target URL is included within the
- reference text, forcing a phrase context.
-
- We'll call this variant "embedded URIs".
-
- Problem: how to refer to a title like "HTML Anchors: <a>" (which
- ends with an HTML/SGML/XML tag)? We could either require more
- syntax on the target (like ``"`reference text
- __<http://example.com/>`__"``), or require the odd conflicting
- title to be escaped (like ``"`HTML Anchors: \<a>`__"``). The
- latter seems preferable, and not too onerous.
-
- Similarly to (2) above, a single trailing underscore would convert
- the reference & inline external target from anonymous to implicitly
- named, allowing reuse of targets by name.
-
- I think this is the least objectionable of the syntax alternatives.
-
-Other syntax variations have been proposed (by Brett Cannon and Benja
-Fallenstein)::
-
- `phrase reference`->http://www.example.com
-
- `phrase reference`@http://www.example.com
-
- `phrase reference`__ ->http://www.example.com
-
- `phrase reference` [-> http://www.example.com]
-
- `phrase reference`__ [-> http://www.example.com]
-
- `phrase reference` <http://www.example.com>_
-
-None of these variations are clearly superior to #3 above. Some have
-problems that exclude their use.
-
-With any kind of inline external target syntax it comes down to the
-conflict between maintainability and plaintext readability. I don't
-see a major problem with reStructuredText's maintainability, and I
-don't want to sacrifice plaintext readability to "improve" it.
-
-The proponents of inline external targets want them for easily
-maintainable web pages. The arguments go something like this:
-
-- Named hyperlinks are difficult to maintain because the reference
- text is duplicated as the target name.
-
- To which I said, "So use anonymous hyperlinks."
-
-- Anonymous hyperlinks are difficult to maintain becuase the
- references and targets have to be kept in sync.
-
- "So keep the targets close to the references, grouped after each
- paragraph. Maintenance is trivial."
-
-- But targets grouped after paragraphs break the flow of text.
-
- "Surely less than URLs embedded in the text! And if the intent is
- to produce web pages, not readable plaintext, then who cares about
- the flow of text?"
-
-Many participants have voiced their objections to the proposed syntax:
-
- Garth Kidd: "I strongly prefer the current way of doing it.
- Inline is spectactularly messy, IMHO."
-
- Tony Ibbs: "I vehemently agree... that the inline alternatives
- being suggested look messy - there are/were good reasons they've
- been taken out... I don't believe I would gain from the new
- syntaxes."
-
- Paul Moore: "I agree as well. The proposed syntax is far too
- punctuation-heavy, and any of the alternatives discussed are
- ambiguous or too subtle."
-
-Others have voiced their support:
-
- fantasai: "I agree with Simon. In many cases, though certainly
- not in all, I find parenthesizing the url in plain text flows
- better than relegating it to a footnote."
-
- Ken Manheimer: "I'd like to weigh in requesting some kind of easy,
- direct inline reference link."
-
-(Interesting that those *against* the proposal have been using
-reStructuredText for a while, and those *for* the proposal are either
-new to the list ["fantasai", background unknown] or longtime
-StructuredText users [Ken Manheimer].)
-
-I was initially ambivalent/against the proposed "inline external
-targets". I value reStructuredText's readability very highly, and
-although the proposed syntax offers convenience, I don't know if the
-convenience is worth the cost in ugliness. Does the proposed syntax
-compromise readability too much, or should the choice be left up to
-the author? Perhaps if the syntax is *allowed* but its use strongly
-*discouraged*, for aesthetic/readability reasons?
-
-After a great deal of thought and much input from users, I've decided
-that there are reasonable use cases for this construct. The
-documentation should strongly caution against its use in most
-situations, recommending independent block-level targets instead.
-Syntax #3 above ("embedded URIs") will be used.
-
-
-Doctree Representation of Transitions
-=====================================
-
-(Although not reStructuredText-specific, this section fits best in
-this document.)
-
-Having added the "horizontal rule" construct to the `reStructuredText
-Markup Specification`_, a decision had to be made as to how to reflect
-the construct in the implementation of the document tree. Given this
-source::
-
- Document
- ========
-
- Paragraph 1
-
- --------
-
- Paragraph 2
-
-The horizontal rule indicates a "transition" (in prose terms) or the
-start of a new "division". Before implementation, the parsed document
-tree would be::
-
- <document>
- <section name="document">
- <title>
- Document
- <paragraph>
- Paragraph 1
- -------- <--- error here
- <paragraph>
- Paragraph 2
-
-There are several possibilities for the implementation:
-
-1. Implement horizontal rules as "divisions" or segments. A
- "division" is a title-less, non-hierarchical section. The first
- try at an implementation looked like this::
-
- <document>
- <section name="document">
- <title>
- Document
- <paragraph>
- Paragraph 1
- <division>
- <paragraph>
- Paragraph 2
-
- But the two paragraphs are really at the same level; they shouldn't
- appear to be at different levels. There's really an invisible
- "first division". The horizontal rule splits the document body
- into two segments, which should be treated uniformly.
-
-2. Treating "divisions" uniformly brings us to the second
- possibility::
-
- <document>
- <section name="document">
- <title>
- Document
- <division>
- <paragraph>
- Paragraph 1
- <division>
- <paragraph>
- Paragraph 2
-
- With this change, documents and sections will directly contain
- divisions and sections, but not body elements. Only divisions will
- directly contain body elements. Even without a horizontal rule
- anywhere, the body elements of a document or section would be
- contained within a division element. This makes the document tree
- deeper. This is similar to the way HTML_ treats document contents:
- grouped within a ``<body>`` element.
-
-3. Implement them as "transitions", empty elements::
-
- <document>
- <section name="document">
- <title>
- Document
- <paragraph>
- Paragraph 1
- <transition>
- <paragraph>
- Paragraph 2
-
- A transition would be a "point element", not containing anything,
- only identifying a point within the document structure. This keeps
- the document tree flatter, but the idea of a "point element" like
- "transition" smells bad. A transition isn't a thing itself, it's
- the space between two divisions. However, transitions are a
- practical solution.
-
-Solution 3 was chosen for incorporation into the document tree model.
-
-.. _HTML: http://www.w3.org/MarkUp/
-
-
-Nested Inline Markup
-====================
-
-These are collected notes on a long-discussed issue. The original
-mailing list messages should be referred to for details.
-
-* In a 2001-10-31 discussion I wrote:
-
- Try, for example, `Ed Loper's 2001-03-21 post`_, which details
- some rules for nested inline markup. I think the complexity is
- prohibitive for the marginal benefit. (And if you can understand
- that tree without going mad, you're a better man than I. ;-)
-
- Inline markup is already fragile. Allowing nested inline markup
- would only be asking for trouble IMHO. If it proves absolutely
- necessary, it can be added later. The rules for what can appear
- inside what must be well thought out first though.
-
- .. _Ed Loper's 2001-03-21 post:
- http://mail.python.org/pipermail/doc-sig/2001-March/001487.html
-
- -- http://mail.python.org/pipermail/doc-sig/2001-October/002354.html
-
-* In a 2001-11-09 Doc-SIG post, I wrote:
-
- The problem is that in the
- what-you-see-is-more-or-less-what-you-get markup language that
- is reStructuredText, the symbols used for inline markup ("*",
- "**", "`", "``", etc.) may preclude nesting.
-
- I've rethought this position. Nested markup is not precluded, just
- tricky. People and software parse "double and 'single' quotes" all
- the time. Continuing,
-
- I've thought over how we might implement nested inline
- markup. The first algorithm ("first identify the outer inline
- markup as we do now, then recursively scan for nested inline
- markup") won't work; counterexamples were given in my `last post
- <http://mail.python.org/pipermail/doc-sig/2001-November/002363.html>`__.
-
- The second algorithm makes my head hurt::
-
- while 1:
- scan for start-string
- if found:
- push on stack
- scan for start or end string
- if new start string found:
- recurse
- elif matching end string found:
- pop stack
- elif non-matching end string found:
- if its a markup error:
- generate warning
- elif the initial start-string was misinterpreted:
- # e.g. in this case: ***strong** in emphasis*
- restart with the other interpretation
- # but it might be several layers back ...
- ...
-
- This is similar to how the parser does section title
- recognition, but sections are much more regular and
- deterministic.
-
- Bottom line is, I don't think the benefits are worth the effort,
- even if it is possible. I'm not going to try to write the code,
- at least not now. If somebody codes up a consistent, working,
- general solution, I'll be happy to consider it.
-
- -- http://mail.python.org/pipermail/doc-sig/2001-November/002388.html
-
-* In a `2003-05-06 Docutils-Users post`__ Paul Tremblay proposed a new
- syntax to allow for easier nesting. It eventually evolved into
- this::
-
- :role:[inline text]
-
- The duplication with the existing interpreted text syntax is
- problematic though.
-
- __ http://article.gmane.org/gmane.text.docutils.user/317
-
-* Could the parser be extended to parse nested interpreted text? ::
-
- :emphasis:`Some emphasized text with :strong:`some more
- emphasized text` in it and **perhaps** :reference:`a link``
-
-* In a `2003-06-18 Docutils-Develop post`__, Mark Nodine reported on
- his implementation of a form of nested inline markup in his
- Perl-based parser (unpublished). He brought up some interesting
- ideas. The implementation was flawed, however, by the change in
- semantics required for backslash escapes.
-
- __ http://article.gmane.org/gmane.text.docutils.devel/795
-
-It may be possible to accomplish nested inline markup in general with
-a more powerful inline markup parser. There may be some issues, but
-I'm not averse to the idea of nested inline markup in general. I just
-don't have the time or inclination to write a new parser now. Of
-course, a good patch would be welcome!
-
-I envisage something like this. Explicit-role interpreted text must
-be nestable. Prefix-based is probably preferred, since suffix-based
-will look like inline literals::
-
- ``text`:role1:`:role2:
-
-But it can be disambiguated, so it ought to be left up to the author::
-
- `\ `text`:role1:`:role2:
-
-In addition, other forms of inline markup may be nested if
-unambiguous::
-
- *emphasized ``literal`` and |substitution ref| and link_*
-
-IOW, the parser ought to be as permissive as possible.
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/dev/rst/problems.txt b/docutils/docs/dev/rst/problems.txt
deleted file mode 100644
index a8747af88..000000000
--- a/docutils/docs/dev/rst/problems.txt
+++ /dev/null
@@ -1,870 +0,0 @@
-==============================
- Problems With StructuredText
-==============================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-There are several problems, unresolved issues, and areas of
-controversy within StructuredText_ (Classic and Next Generation). In
-order to resolve all these issues, this analysis brings all of the
-issues out into the open, enumerates all the alternatives, and
-proposes solutions to be incorporated into the reStructuredText_
-specification.
-
-
-.. contents::
-
-
-Formal Specification
-====================
-
-The description in the original StructuredText.py has been criticized
-for being vague. For practical purposes, "the code *is* the spec."
-Tony Ibbs has been working on deducing a `detailed description`_ from
-the documentation and code of StructuredTextNG_. Edward Loper's
-STMinus_ is another attempt to formalize a spec.
-
-For this kind of a project, the specification should always precede
-the code. Otherwise, the markup is a moving target which can never be
-adopted as a standard. Of course, a specification may be revised
-during lifetime of the code, but without a spec there is no visible
-control and thus no confidence.
-
-
-Understanding and Extending the Code
-====================================
-
-The original StructuredText_ is a dense mass of sparsely commented
-code and inscrutable regular expressions. It was not designed to be
-extended and is very difficult to understand. StructuredTextNG_ has
-been designed to allow input (syntax) and output extensions, but its
-documentation (both internal [comments & docstrings], and external) is
-inadequate for the complexity of the code itself.
-
-For reStructuredText to become truly useful, perhaps even part of
-Python's standard library, it must have clear, understandable
-documentation and implementation code. For the implementation of
-reStructuredText to be taken seriously, it must be a sterling example
-of the potential of docstrings; the implementation must practice what
-the specification preaches.
-
-
-Section Structure via Indentation
-=================================
-
-Setext_ required that body text be indented by 2 spaces. The original
-StructuredText_ and StructuredTextNG_ require that section structure
-be indicated through indentation, as "inspired by Python". For
-certain structures with a very limited, local extent (such as lists,
-block quotes, and literal blocks), indentation naturally indicates
-structure or hierarchy. For sections (which may have a very large
-extent), structure via indentation is unnecessary, unnatural and
-ambiguous. Rather, the syntax of the section title *itself* should
-indicate that it is a section title.
-
-The original StructuredText states that "A single-line paragraph whose
-immediately succeeding paragraphs are lower level is treated as a
-header." Requiring indentation in this way is:
-
-- Unnecessary. The vast majority of docstrings and standalone
- documents will have no more than one level of section structure.
- Requiring indentation for such docstrings is unnecessary and
- irritating.
-
-- Unnatural. Most published works use title style (type size, face,
- weight, and position) and/or section/subsection numbering rather
- than indentation to indicate hierarchy. This is a tradition with a
- very long history.
-
-- Ambiguous. A StructuredText header is indistinguishable from a
- one-line paragraph followed by a block quote (precluding the use of
- block quotes). Enumerated section titles are ambiguous (is it a
- header? is it a list item?). Some additional adornment must be
- required to confirm the line's role as a title, both to a parser and
- to the human reader of the source text.
-
-Python's use of significant whitespace is a wonderful (if not
-original) innovation, however requiring indentation in ordinary
-written text is hypergeneralization.
-
-reStructuredText_ indicates section structure through title adornment
-style (as exemplified by this document). This is far more natural.
-In fact, it is already in widespread use in plain text documents,
-including in Python's standard distribution (such as the toplevel
-README_ file).
-
-
-Character Escaping Mechanism
-============================
-
-No matter what characters are chosen for markup, some day someone will
-want to write documentation *about* that markup or using markup
-characters in a non-markup context. Therefore, any complete markup
-language must have an escaping or encoding mechanism. For a
-lightweight markup system, encoding mechanisms like SGML/XML's '&ast;'
-are out. So an escaping mechanism is in. However, with carefully
-chosen markup, it should be necessary to use the escaping mechanism
-only infrequently.
-
-reStructuredText_ needs an escaping mechanism: a way to treat
-markup-significant characters as the characters themselves. Currently
-there is no such mechanism (although ZWiki uses '!'). What are the
-candidates?
-
-1. ``!`` (http://dev.zope.org/Members/jim/StructuredTextWiki/NGEscaping)
-2. ``\``
-3. ``~``
-4. doubling of characters
-
-The best choice for this is the backslash (``\``). It's "the single
-most popular escaping character in the world!", therefore familiar and
-unsurprising. Since characters only need to be escaped under special
-circumstances, which are typically those explaining technical
-programming issues, the use of the backslash is natural and
-understandable. Python docstrings can be raw (prefixed with an 'r',
-as in 'r""'), which would obviate the need for gratuitous doubling-up
-of backslashes.
-
-(On 2001-03-29 on the Doc-SIG mailing list, GvR endorsed backslash
-escapes, saying, "'nuff said. Backslash it is." Although neither
-legally binding nor irrevocable nor any kind of guarantee of anything,
-it is a good sign.)
-
-The rule would be: An unescaped backslash followed by any markup
-character escapes the character. The escaped character represents the
-character itself, and is prevented from playing a role in any markup
-interpretation. The backslash is removed from the output. A literal
-backslash is represented by an "escaped backslash," two backslashes in
-a row.
-
-A carefully constructed set of recognition rules for inline markup
-will obviate the need for backslash-escapes in almost all cases; see
-`Delimitation of Inline Markup`_ below.
-
-When an expression (requiring backslashes and other characters used
-for markup) becomes too complicated and therefore unreadable, a
-literal block may be used instead. Inside literal blocks, no markup
-is recognized, therefore backslashes (for the purpose of escaping
-markup) become unnecessary.
-
-We could allow backslashes preceding non-markup characters to remain
-in the output. This would make describing regular expressions and
-other uses of backslashes easier. However, this would complicate the
-markup rules and would be confusing.
-
-
-Blank Lines in Lists
-====================
-
-Oft-requested in Doc-SIG (the earliest reference is dated 1996-08-13)
-is the ability to write lists without requiring blank lines between
-items. In docstrings, space is at a premium. Authors want to convey
-their API or usage information in as compact a form as possible.
-StructuredText_ requires blank lines between all body elements,
-including list items, even when boundaries are obvious from the markup
-itself.
-
-In reStructuredText, blank lines are optional between list items.
-However, in order to eliminate ambiguity, a blank line is required
-before the first list item and after the last. Nested lists also
-require blank lines before the list start and after the list end.
-
-
-Bullet List Markup
-==================
-
-StructuredText_ includes 'o' as a bullet character. This is dangerous
-and counter to the language-independent nature of the markup. There
-are many languages in which 'o' is a word. For example, in Spanish::
-
- Llamame a la casa
- o al trabajo.
-
- (Call me at home or at work.)
-
-And in Japanese (when romanized)::
-
- Senshuu no doyoubi ni tegami
- o kakimashita.
-
- ([I] wrote a letter on Saturday last week.)
-
-If a paragraph containing an 'o' word wraps such that the 'o' is the
-first text on a line, or if a paragraph begins with such a word, it
-could be misinterpreted as a bullet list.
-
-In reStructuredText_, 'o' is not used as a bullet character. '-',
-'*', and '+' are the possible bullet characters.
-
-
-Enumerated List Markup
-======================
-
-StructuredText enumerated lists are allowed to begin with numbers and
-letters followed by a period or right-parenthesis, then whitespace.
-This has surprising consequences for writing styles. For example,
-this is recognized as an enumerated list item by StructuredText::
-
- Mr. Creosote.
-
-People will write enumerated lists in all different ways. It is folly
-to try to come up with the "perfect" format for an enumerated list,
-and limit the docstring parser's recognition to that one format only.
-
-Rather, the parser should recognize a variety of enumerator styles.
-It is also recommended that the enumerator of the first list item be
-ordinal-1 ('1', 'A', 'a', 'I', or 'i'), as output formats may not be
-able to begin a list at an arbitrary enumeration.
-
-An initial idea was to require two or more consistent enumerated list
-items in a row. This idea proved impractical and was dropped. In
-practice, the presence of a proper enumerator is enough to reliably
-recognize an enumerated list item; any ambiguities are reported by the
-parser. Here's the original idea for posterity:
-
- The parser should recognize a variety of enumerator styles, mark
- each block as a potential enumerated list item (PELI), and
- interpret the enumerators of adjacent PELIs to decide whether they
- make up a consistent enumerated list.
-
- If a PELI is labeled with a "1.", and is immediately followed by a
- PELI labeled with a "2.", we've got an enumerated list. Or "(A)"
- followed by "(B)". Or "i)" followed by "ii)", etc. The chances
- of accidentally recognizing two adjacent and consistently labeled
- PELIs, are acceptably small.
-
- For an enumerated list to be recognized, the following must be
- true:
-
- - the list must consist of multiple adjacent list items (2 or
- more)
- - the enumerators must all have the same format
- - the enumerators must be sequential
-
-
-Definition List Markup
-======================
-
-StructuredText uses ' -- ' (whitespace, two hyphens, whitespace) on
-the first line of a paragraph to indicate a definition list item. The
-' -- ' serves to separate the term (on the left) from the definition
-(on the right).
-
-Many people use ' -- ' as an em-dash in their text, conflicting with
-the StructuredText usage. Although the Chicago Manual of Style says
-that spaces should not be used around an em-dash, Peter Funk pointed
-out that this is standard usage in German (according to the Duden, the
-official German reference), and possibly in other languages as well.
-The widespread use of ' -- ' precludes its use for definition lists;
-it would violate the "unsurprising" criterion.
-
-A simpler, and at least equally visually distinctive construct
-(proposed by Guido van Rossum, who incidentally is a frequent user of
-' -- ') would do just as well::
-
- term 1
- Definition.
-
- term 2
- Definition 2, paragraph 1.
-
- Definition 2, paragraph 2.
-
-A reStructuredText definition list item consists of a term and a
-definition. A term is a simple one-line paragraph. A definition is a
-block indented relative to the term, and may contain multiple
-paragraphs and other body elements. No blank line precedes a
-definition (this distinguishes definition lists from block quotes).
-
-
-Literal Blocks
-==============
-
-The StructuredText_ specification has literal blocks indicated by
-'example', 'examples', or '::' ending the preceding paragraph. STNG
-only recognizes '::'; 'example'/'examples' are not implemented. This
-is good; it fixes an unnecessary language dependency. The problem is
-what to do with the sometimes- unwanted '::'.
-
-In reStructuredText_ '::' at the end of a paragraph indicates that
-subsequent *indented* blocks are treated as literal text. No further
-markup interpretation is done within literal blocks (not even
-backslash-escapes). If the '::' is preceded by whitespace, '::' is
-omitted from the output; if '::' was the sole content of a paragraph,
-the entire paragraph is removed (no 'empty' paragraph remains). If
-'::' is preceded by a non-whitespace character, '::' is replaced by
-':' (i.e., the extra colon is removed).
-
-Thus, a section could begin with a literal block as follows::
-
- Section Title
- -------------
-
- ::
-
- print "this is example literal"
-
-
-Tables
-======
-
-The table markup scheme in classic StructuredText was horrible. Its
-omission from StructuredTextNG is welcome, and its markup will not be
-repeated here. However, tables themselves are useful in
-documentation. Alternatives:
-
-1. This format is the most natural and obvious. It was independently
- invented (no great feat of creation!), and later found to be the
- format supported by the `Emacs table mode`_::
-
- +------------+------------+------------+--------------+
- | Header 1 | Header 2 | Header 3 | Header 4 |
- +============+============+============+==============+
- | Column 1 | Column 2 | Column 3 & 4 span (Row 1) |
- +------------+------------+------------+--------------+
- | Column 1 & 2 span | Column 3 | - Column 4 |
- +------------+------------+------------+ - Row 2 & 3 |
- | 1 | 2 | 3 | - span |
- +------------+------------+------------+--------------+
-
- Tables are described with a visual outline made up of the
- characters '-', '=', '|', and '+':
-
- - The hyphen ('-') is used for horizontal lines (row separators).
- - The equals sign ('=') is optionally used as a header separator
- (as of version 1.5.24, this is not supported by the Emacs table
- mode).
- - The vertical bar ('|') is used for for vertical lines (column
- separators).
- - The plus sign ('+') is used for intersections of horizontal and
- vertical lines.
-
- Row and column spans are possible simply by omitting the column or
- row separators, respectively. The header row separator must be
- complete; in other words, a header cell may not span into the table
- body. Each cell contains body elements, and may have multiple
- paragraphs, lists, etc. Initial spaces for a left margin are
- allowed; the first line of text in a cell determines its left
- margin.
-
-2. Below is a simpler table structure. It may be better suited to
- manual input than alternative #1, but there is no Emacs editing
- mode available. One disadvantage is that it resembles section
- titles; a one-column table would look exactly like section &
- subsection titles. ::
-
- ============ ============ ============ ==============
- Header 1 Header 2 Header 3 Header 4
- ============ ============ ============ ==============
- Column 1 Column 2 Column 3 & 4 span (Row 1)
- ------------ ------------ ---------------------------
- Column 1 & 2 span Column 3 - Column 4
- ------------------------- ------------ - Row 2 & 3
- 1 2 3 - span
- ============ ============ ============ ==============
-
- The table begins with a top border of equals signs with a space at
- each column boundary (regardless of spans). Each row is
- underlined. Internal row separators are underlines of '-', with
- spaces at column boundaries. The last of the optional head rows is
- underlined with '=', again with spaces at column boundaries.
- Column spans have no spaces in their underline. Row spans simply
- lack an underline at the row boundary. The bottom boundary of the
- table consists of '=' underlines. A blank line is required
- following a table.
-
-3. A minimalist alternative is as follows::
-
- ==== ===== ======== ======== ======= ==== ===== =====
- Old State Input Action New State Notes
- ----------- -------- ----------------- -----------
- ids types new type sys.msg. dupname ids types
- ==== ===== ======== ======== ======= ==== ===== =====
- -- -- explicit -- -- new True
- -- -- implicit -- -- new False
- None False explicit -- -- new True
- old False explicit implicit old new True
- None True explicit explicit new None True
- old True explicit explicit new,old None True [1]
- None False implicit implicit new None False
- old False implicit implicit new,old None False
- None True implicit implicit new None True
- old True implicit implicit new old True
- ==== ===== ======== ======== ======= ==== ===== =====
-
- The table begins with a top border of equals signs with one or more
- spaces at each column boundary (regardless of spans). There must
- be at least two columns in the table (to differentiate it from
- section headers). Each line starts a new row. The rightmost
- column is unbounded; text may continue past the edge of the table.
- Each row/line must contain spaces at column boundaries, except for
- explicit column spans. Underlines of '-' can be used to indicate
- column spans, but should be used sparingly if at all. Lines
- containing column span underlines may not contain any other text.
- The last of the optional head rows is underlined with '=', again
- with spaces at column boundaries. The bottom boundary of the table
- consists of '=' underlines. A blank line is required following a
- table.
-
- This table sums up the features. Using all the features in such a
- small space is not pretty though::
-
- ======== ======== ========
- Header 2 & 3 Span
- ------------------
- Header 1 Header 2 Header 3
- ======== ======== ========
- Each line is a new row.
- Each row consists of one line only.
- Row spans are not possible.
- The last column may spill over to the right.
- Column spans are possible with an underline joining columns.
- ----------------------------
- The span is limited to the row above the underline.
- ======== ======== ========
-
-4. As a variation of alternative 3, bullet list syntax in the first
- column could be used to indicate row starts. Multi-line rows are
- possible, but row spans are not. For example::
-
- ===== =====
- col 1 col 2
- ===== =====
- - 1 Second column of row 1.
- - 2 Second column of row 2.
- Second line of paragraph.
- - 3 Second column of row 3.
-
- Second paragraph of row 3,
- column 2
- ===== =====
-
- Column spans would be indicated on the line after the last line of
- the row. To indicate a real bullet list within a first-column
- cell, simply nest the bullets.
-
-5. In a further variation, we could simply assume that whitespace in
- the first column implies a multi-line row; the text in other
- columns is continuation text. For example::
-
- ===== =====
- col 1 col 2
- ===== =====
- 1 Second column of row 1.
- 2 Second column of row 2.
- Second line of paragraph.
- 3 Second column of row 3.
-
- Second paragraph of row 3,
- column 2
- ===== =====
-
- Limitations of this approach:
-
- - Cells in the first column are limited to one line of text.
-
- - Cells in the first column *must* contain some text; blank cells
- would lead to a misinterpretation. An empty comment ("..") is
- sufficient.
-
-6. Combining alternative 3 and 4, a bullet list in the first column
- could mean multi-line rows, and no bullet list means single-line
- rows only.
-
-Alternatives 1 and 5 has been adopted by reStructuredText.
-
-
-Delimitation of Inline Markup
-=============================
-
-StructuredText specifies that inline markup must begin with
-whitespace, precluding such constructs as parenthesized or quoted
-emphatic text::
-
- "**What?**" she cried. (*exit stage left*)
-
-The `reStructuredText markup specification`_ allows for such
-constructs and disambiguates inline markup through a set of
-recognition rules. These recognition rules define the context of
-markup start-strings and end-strings, allowing markup characters to be
-used in most non-markup contexts without a problem (or a backslash).
-So we can say, "Use asterisks (*) around words or phrases to
-*emphasisze* them." The '(*)' will not be recognized as markup. This
-reduces the need for markup escaping to the point where an escape
-character is *almost* (but not quite!) unnecessary.
-
-
-Underlining
-===========
-
-StructuredText uses '_text_' to indicate underlining. To quote David
-Ascher in his 2000-01-21 Doc-SIG mailing list post, "Docstring
-grammar: a very revised proposal":
-
- The tagging of underlined text with _'s is suboptimal. Underlines
- shouldn't be used from a typographic perspective (underlines were
- designed to be used in manuscripts to communicate to the
- typesetter that the text should be italicized -- no well-typeset
- book ever uses underlines), and conflict with double-underscored
- Python variable names (__init__ and the like), which would get
- truncated and underlined when that effect is not desired. Note
- that while *complete* markup would prevent that truncation
- ('__init__'), I think of docstring markups much like I think of
- type annotations -- they should be optional and above all do no
- harm. In this case the underline markup does harm.
-
-Underlining is not part of the reStructuredText specification.
-
-
-Inline Literals
-===============
-
-StructuredText's markup for inline literals (text left as-is,
-verbatim, usually in a monospaced font; as in HTML <TT>) is single
-quotes ('literals'). The problem with single quotes is that they are
-too often used for other purposes:
-
-- Apostrophes: "Don't blame me, 'cause it ain't mine, it's Chris'.";
-
-- Quoting text:
-
- First Bruce: "Well Bruce, I heard the prime minister use it.
- 'S'hot enough to boil a monkey's bum in 'ere your Majesty,' he
- said, and she smiled quietly to herself."
-
- In the UK, single quotes are used for dialogue in published works.
-
-- String literals: s = ''
-
-Alternatives::
-
- 'text' \'text\' ''text'' "text" \"text\" ""text""
- #text# @text@ `text` ^text^ ``text'' ``text``
-
-The examples below contain inline literals, quoted text, and
-apostrophes. Each example should evaluate to the following HTML::
-
- Some <TT>code</TT>, with a 'quote', "double", ain't it grand?
- Does <TT>a[b] = 'c' + "d" + `2^3`</TT> work?
-
- 0. Some code, with a quote, double, ain't it grand?
- Does a[b] = 'c' + "d" + `2^3` work?
- 1. Some 'code', with a \'quote\', "double", ain\'t it grand?
- Does 'a[b] = \'c\' + "d" + `2^3`' work?
- 2. Some \'code\', with a 'quote', "double", ain't it grand?
- Does \'a[b] = 'c' + "d" + `2^3`\' work?
- 3. Some ''code'', with a 'quote', "double", ain't it grand?
- Does ''a[b] = 'c' + "d" + `2^3`'' work?
- 4. Some "code", with a 'quote', \"double\", ain't it grand?
- Does "a[b] = 'c' + "d" + `2^3`" work?
- 5. Some \"code\", with a 'quote', "double", ain't it grand?
- Does \"a[b] = 'c' + "d" + `2^3`\" work?
- 6. Some ""code"", with a 'quote', "double", ain't it grand?
- Does ""a[b] = 'c' + "d" + `2^3`"" work?
- 7. Some #code#, with a 'quote', "double", ain't it grand?
- Does #a[b] = 'c' + "d" + `2^3`# work?
- 8. Some @code@, with a 'quote', "double", ain't it grand?
- Does @a[b] = 'c' + "d" + `2^3`@ work?
- 9. Some `code`, with a 'quote', "double", ain't it grand?
- Does `a[b] = 'c' + "d" + \`2^3\`` work?
- 10. Some ^code^, with a 'quote', "double", ain't it grand?
- Does ^a[b] = 'c' + "d" + `2\^3`^ work?
- 11. Some ``code'', with a 'quote', "double", ain't it grand?
- Does ``a[b] = 'c' + "d" + `2^3`'' work?
- 12. Some ``code``, with a 'quote', "double", ain't it grand?
- Does ``a[b] = 'c' + "d" + `2^3\``` work?
-
-Backquotes (#9 & #12) are the best choice. They are unobtrusive and
-relatviely rarely used (more rarely than ' or ", anyhow). Backquotes
-have the connotation of 'quotes', which other options (like carets,
-#10) don't.
-
-Analogously with ``*emph*`` & ``**strong**``, double-backquotes (#12)
-could be used for inline literals. If single-backquotes are used for
-'interpreted text' (context-sensitive domain-specific descriptive
-markup) such as function name hyperlinks in Python docstrings, then
-double-backquotes could be used for absolute-literals, wherein no
-processing whatsoever takes place. An advantage of double-backquotes
-would be that backslash-escaping would no longer be necessary for
-embedded single-backquotes; however, embedded double-backquotes (in an
-end-string context) would be illegal. See `Backquotes in
-Phrase-Links`__ in `Record of reStructuredText Syntax Alternatives`__.
-
-__ alternatives.html#backquotes-in-phrase-links
-__ alternatives.html
-
-Alternative choices are carets (#10) and TeX-style quotes (#11). For
-examples of TeX-style quoting, see
-http://www.zope.org/Members/jim/StructuredTextWiki/CustomizingTheDocumentProcessor.
-
-Some existing uses of backquotes:
-
-1. As a synonym for repr() in Python.
-2. For command-interpolation in shell scripts.
-3. Used as open-quotes in TeX code (and carried over into plaintext
- by TeXies).
-
-The inline markup start-string and end-string recognition rules
-defined by the `reStructuredText markup specification`_ would allow
-all of these cases inside inline literals, with very few exceptions.
-As a fallback, literal blocks could handle all cases.
-
-Outside of inline literals, the above uses of backquotes would require
-backslash-escaping. However, these are all prime examples of text
-that should be marked up with inline literals.
-
-If either backquotes or straight single-quotes are used as markup,
-TeX-quotes are too troublesome to support, so no special-casing of
-TeX-quotes should be done (at least at first). If TeX-quotes have to
-be used outside of literals, a single backslash-escaped would suffice:
-\``TeX quote''. Ugly, true, but very infrequently used.
-
-Using literal blocks is a fallback option which removes the need for
-backslash-escaping::
-
- like this::
-
- Here, we can do ``absolutely'' anything `'`'\|/|\ we like!
-
-No mechanism for inline literals is perfect, just as no escaping
-mechanism is perfect. No matter what we use, complicated inline
-expressions involving the inline literal quote and/or the backslash
-will end up looking ugly. We can only choose the least often ugly
-option.
-
-reStructuredText will use double backquotes for inline literals, and
-single backqoutes for interpreted text.
-
-
-Hyperlinks
-==========
-
-There are three forms of hyperlink currently in StructuredText_:
-
-1. (Absolute & relative URIs.) Text enclosed by double quotes
- followed by a colon, a URI, and concluded by punctuation plus white
- space, or just white space, is treated as a hyperlink::
-
- "Python":http://www.python.org/
-
-2. (Absolute URIs only.) Text enclosed by double quotes followed by a
- comma, one or more spaces, an absolute URI and concluded by
- punctuation plus white space, or just white space, is treated as a
- hyperlink::
-
- "mail me", mailto:me@mail.com
-
-3. (Endnotes.) Text enclosed by brackets link to an endnote at the
- end of the document: at the beginning of the line, two dots, a
- space, and the same text in brackets, followed by the end note
- itself::
-
- Please refer to the fine manual [GVR2001].
-
- .. [GVR2001] Python Documentation, Release 2.1, van Rossum,
- Drake, et al., http://www.python.org/doc/
-
-The problem with forms 1 and 2 is that they are neither intuitive nor
-unobtrusive (they break design goals 5 & 2). They overload
-double-quotes, which are too often used in ordinary text (potentially
-breaking design goal 4). The brackets in form 3 are also too common
-in ordinary text (such as [nested] asides and Python lists like [12]).
-
-Alternatives:
-
-1. Have no special markup for hyperlinks.
-
-2. A. Interpret and mark up hyperlinks as any contiguous text
- containing '://' or ':...@' (absolute URI) or '@' (email
- address) after an alphanumeric word. To de-emphasize the URI,
- simply enclose it in parentheses:
-
- Python (http://www.python.org/)
-
- B. Leave special hyperlink markup as a domain-specific extension.
- Hyperlinks in ordinary reStructuredText documents would be
- required to be standalone (i.e. the URI text inline in the
- document text). Processed hyperlinks (where the URI text is
- hidden behind the link) are important enough to warrant syntax.
-
-3. The original Setext_ introduced a mechanism of indirect hyperlinks.
- A source link word ('hot word') in the text was given a trailing
- underscore::
-
- Here is some text with a hyperlink_ built in.
-
- The hyperlink itself appeared at the end of the document on a line
- by itself, beginning with two dots, a space, the link word with a
- leading underscore, whitespace, and the URI itself::
-
- .. _hyperlink http://www.123.xyz
-
- Setext used ``underscores_instead_of_spaces_`` for phrase links.
-
-With some modification, alternative 3 best satisfies the design goals.
-It has the advantage of being readable and relatively unobtrusive.
-Since each source link must match up to a target, the odd variable
-ending in an underscore can be spared being marked up (although it
-should generate a "no such link target" warning). The only
-disadvantage is that phrase-links aren't possible without some
-obtrusive syntax.
-
-We could achieve phrase-links if we enclose the link text:
-
-1. in double quotes::
-
- "like this"_
-
-2. in brackets::
-
- [like this]_
-
-3. or in backquotes::
-
- `like this`_
-
-Each gives us somewhat obtrusive markup, but that is unavoidable. The
-bracketed syntax (#2) is reminiscent of links on many web pages
-(intuitive), although it is somewhat obtrusive. Alternative #3 is
-much less obtrusive, and is consistent with interpreted text: the
-trailing underscore indicates the interpretation of the phrase, as a
-hyperlink. #3 also disambiguates hyperlinks from footnote references.
-Alternative #3 wins.
-
-The same trailing underscore markup can also be used for footnote and
-citation references, removing the problem with ordinary bracketed text
-and Python lists::
-
- Please refer to the fine manual [GVR2000]_.
-
- .. [GVR2000] Python Documentation, van Rossum, Drake, et al.,
- http://www.python.org/doc/
-
-The two-dots-and-a-space syntax was generalized by Setext for
-comments, which are removed from the (visible) processed output.
-reStructuredText uses this syntax for comments, footnotes, and link
-target, collectively termed "explicit markup". For link targets, in
-order to eliminate ambiguity with comments and footnotes,
-reStructuredText specifies that a colon always follow the link target
-word/phrase. The colon denotes 'maps to'. There is no reason to
-restrict target links to the end of the document; they could just as
-easily be interspersed.
-
-Internal hyperlinks (links from one point to another within a single
-document) can be expressed by a source link as before, and a target
-link with a colon but no URI. In effect, these targets 'map to' the
-element immediately following.
-
-As an added bonus, we now have a perfect candidate for
-reStructuredText directives, a simple extension mechanism: explicit
-markup containing a single word followed by two colons and whitespace.
-The interpretation of subsequent data on the directive line or
-following is directive-dependent.
-
-To summarize::
-
- .. This is a comment.
-
- .. The line below is an example of a directive.
- .. version:: 1
-
- This is a footnote [1]_.
-
- This internal hyperlink will take us to the footnotes_ area below.
-
- Here is a one-word_ external hyperlink.
-
- Here is `a hyperlink phrase`_.
-
- .. _footnotes:
- .. [1] Footnote text goes here.
-
- .. external hyperlink target mappings:
- .. _one-word: http://www.123.xyz
- .. _a hyperlink phrase: http://www.123.xyz
-
-The presence or absence of a colon after the target link
-differentiates an indirect hyperlink from a footnote, respectively. A
-footnote requires brackets. Backquotes around a target link word or
-phrase are required if the phrase contains a colon, optional
-otherwise.
-
-Below are examples using no markup, the two StructuredText hypertext
-styles, and the reStructuredText hypertext style. Each example
-contains an indirect link, a direct link, a footnote/endnote, and
-bracketed text. In HTML, each example should evaluate to::
-
- <P>A <A HREF="http://spam.org">URI</A>, see <A HREF="#eggs2000">
- [eggs2000]</A> (in Bacon [Publisher]). Also see
- <A HREF="http://eggs.org">http://eggs.org</A>.</P>
-
- <P><A NAME="eggs2000">[eggs2000]</A> "Spam, Spam, Spam, Eggs,
- Bacon, and Spam"</P>
-
-1. No markup::
-
- A URI http://spam.org, see eggs2000 (in Bacon [Publisher]).
- Also see http://eggs.org.
-
- eggs2000 "Spam, Spam, Spam, Eggs, Bacon, and Spam"
-
-2. StructuredText absolute/relative URI syntax
- ("text":http://www.url.org)::
-
- A "URI":http://spam.org, see [eggs2000] (in Bacon [Publisher]).
- Also see "http://eggs.org":http://eggs.org.
-
- .. [eggs2000] "Spam, Spam, Spam, Eggs, Bacon, and Spam"
-
- Note that StructuredText does not recognize standalone URIs,
- forcing doubling up as shown in the second line of the example
- above.
-
-3. StructuredText absolute-only URI syntax
- ("text", mailto:you@your.com)::
-
- A "URI", http://spam.org, see [eggs2000] (in Bacon
- [Publisher]). Also see "http://eggs.org", http://eggs.org.
-
- .. [eggs2000] "Spam, Spam, Spam, Eggs, Bacon, and Spam"
-
-4. reStructuredText syntax::
-
- 4. A URI_, see [eggs2000]_ (in Bacon [Publisher]).
- Also see http://eggs.org.
-
- .. _URI: http:/spam.org
- .. [eggs2000] "Spam, Spam, Spam, Eggs, Bacon, and Spam"
-
-The bracketed text '[Publisher]' may be problematic with
-StructuredText (syntax 2 & 3).
-
-reStructuredText's syntax (#4) is definitely the most readable. The
-text is separated from the link URI and the footnote, resulting in
-cleanly readable text.
-
-.. _StructuredText:
- http://dev.zope.org/Members/jim/StructuredTextWiki/FrontPage
-.. _Setext: http://docutils.sourceforge.net/mirror/setext.html
-.. _reStructuredText: http://docutils.sourceforge.net/rst.html
-.. _detailed description:
- http://www.tibsnjoan.demon.co.uk/STNG-format.html
-.. _STMinus: http://www.cis.upenn.edu/~edloper/pydoc/stminus.html
-.. _StructuredTextNG:
- http://dev.zope.org/Members/jim/StructuredTextWiki/StructuredTextNG
-.. _README: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/~checkout~/
- python/python/dist/src/README
-.. _Emacs table mode: http://table.sourceforge.net/
-.. _reStructuredText Markup Specification: reStructuredText.html
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/dev/semantics.txt b/docutils/docs/dev/semantics.txt
deleted file mode 100644
index cd20e15f6..000000000
--- a/docutils/docs/dev/semantics.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-=====================
- Docstring Semantics
-=====================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-These are notes for a possible future PEP providing the final piece of
-the Python docstring puzzle: docstring semantics or documentation
-methodology. `PEP 257`_, Docstring Conventions, sketches out some
-guidelines, but does not get into methodology details.
-
-I haven't explored documentation methodology more because, in my
-opinion, it is a completely separate issue from syntax, and it's even
-more controversial than syntax. Nobody wants to be told how to lay
-out their documentation, a la JavaDoc_. I think the JavaDoc way is
-butt-ugly, but it *is* an established standard for the Java world.
-Any standard documentation methodology has to be formal enough to be
-useful but remain light enough to be usable. If the methodology is
-too strict, too heavy, or too ugly, many/most will not want to use it.
-
-I think a standard methodology could benefit the Python community, but
-it would be a hard sell. A PEP would be the place to start. For most
-human-readable documentation needs, the free-form text approach is
-adequate. We'd only need a formal methodology if we want to extract
-the parameters into a data dictionary, index, or summary of some kind.
-
-
-PythonDoc
-=========
-
-(Not to be confused with Daniel Larsson's pythondoc_ project.)
-
-A Python version of the JavaDoc_ semantics (not syntax). A set of
-conventions which are understood by the Docutils. What JavaDoc has
-done is to establish a syntax that enables a certain documentation
-methodology, or standard *semantics*. JavaDoc is not just syntax; it
-prescribes a methodology.
-
-- Use field lists or definition lists for "tagged blocks". By this I
- mean that field lists can be used similarly to JavaDoc's ``@tag``
- syntax. That's actually one of the motivators behind field lists.
- For example, we could have::
-
- """
- :Parameters:
- - `lines`: a list of one-line strings without newlines.
- - `until_blank`: Stop collecting at the first blank line if
- true (1).
- - `strip_indent`: Strip common leading indent if true (1,
- default).
-
- :Return:
- - a list of indented lines with mininum indent removed;
- - the amount of the indent;
- - whether or not the block finished with a blank line or at
- the end of `lines`.
- """
-
- This is taken straight out of docutils/statemachine.py, in which I
- experimented with a simple documentation methodology. Another
- variation I've thought of exploits the Grouch_-compatible
- "classifier" element of definition lists. For example::
-
- :Parameters:
- `lines` : [string]
- List of one-line strings without newlines.
- `until_blank` : boolean
- Stop collecting at the first blank line if true (1).
- `strip_indent` : boolean
- Strip common leading indent if true (1, default).
-
-- Field lists could even be used in a one-to-one correspondence with
- JavaDoc ``@tags``, although I doubt if I'd recommend it. Several
- ports of JavaDoc's ``@tag`` methodology exist in Python, most
- recently Ed Loper's "epydoc_".
-
-
-Other Ideas
-===========
-
-- Can we extract comments from parsed modules? Could be handy for
- documenting function/method parameters::
-
- def method(self,
- source, # path of input file
- dest # path of output file
- ):
-
- This would save having to repeat parameter names in the docstring.
-
- Idea from Mark Hammond's 1998-06-23 Doc-SIG post, "Re: [Doc-SIG]
- Documentation tool":
-
- it would be quite hard to add a new param to this method without
- realising you should document it
-
-- Frederic Giacometti's `iPhrase Python documentation conventions`_ is
- an attachment to his Doc-SIG post of 2001-05-30.
-
-
-.. _PEP 257: http://www.python.org/peps/pep-0257.html
-.. _JavaDoc: http://java.sun.com/j2se/javadoc/
-.. _pythondoc: http://starship.python.net/crew/danilo/pythondoc/
-.. _Grouch: http://www.mems-exchange.org/software/grouch/
-.. _epydoc: http://epydoc.sf.net/
-.. _iPhrase Python documentation conventions:
- http://mail.python.org/pipermail/doc-sig/2001-May/001840.html
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/dev/todo.txt b/docutils/docs/dev/todo.txt
deleted file mode 100644
index eab2208fe..000000000
--- a/docutils/docs/dev/todo.txt
+++ /dev/null
@@ -1,2114 +0,0 @@
-=================
- Docutils_ Notes
-=================
-:Author: David Goodger (with input from many)
-:Contact: goodger@users.sourceforge.net
-:Date: $Date$
-:Revision: $Revision$
-:Copyright: This document has been placed in the public domain.
-
-.. _Docutils: http://docutils.sourceforge.net/
-
-.. contents::
-
-
-To Do
-=====
-
-Priority items are marked with "@" symbols. The more @s, the higher
-the priority. Items in question form (containing "?") are ideas which
-require more thought and debate; they are potential to-do's.
-
-Many of these items are awaiting champions. If you see something
-you'd like to tackle, please do!
-
-
-Bugs
-----
-
-* The "contents" directive now automatically names the "topic"
- produced (using its title), so that it can be referred to by name.
- However, this naming happens late in the game, after most references
- have been resolved. So the following indirect target produces a
- warning because the name "contents" is not available when resolved::
-
- .. contents::
-
- .. _alternate name for contents: contents_
-
- Fixing this may be tricky, and isn't a high priority.
-
- Idea: two-pass hyperlink resolution, ignoring errors on the first
- pass?
-
- Perhaps the directive should do a bit more work up-front: create the
- "topic" and "title", and leave the "pending" node for contents.
-
-* The parser doesn't know anything about double-width characters such
- as Chinese hanza & Japanese kanji/kana. Also, it's dependent on
- whitespace and punctuation as markup delimiters, which may not be
- applicable in these languages.
-
-* In text inserted by the "include" directive, errors are often not
- reported with the correct "source" or "line" numbers. Perhaps all
- Reporter calls need a "base_node" parameter. There's a test in
- test/test_parsers/test_rst/test_directives/test_include.py
- (commented out, because the test fails).
-
-* tools/buildhtml.py needs a mechanism to skip directories
- (e.g. licenses, test). Perhaps a ".prune-buildhtml" file? A
- command-line option wouldn't work because it would require user
- action.
-
-
-General
--------
-
-* Refactor
-
- - Rename methods & variables according to the `Python coding
- conventions`_ below.
-
- - The name-to-id conversion and hyperlink resolution code needs to be
- checked for correctness and refactored. I'm afraid it's a bit of
- a spaghetti mess now.
-
-* Add validation? See http://pytrex.sourceforge.net, RELAX NG, pyRXP.
-
-* Ask Python-dev for opinions (GvR for a pronouncement) on special
- variables (__author__, __version__, etc.): convenience vs. namespace
- pollution. Ask opinions on whether or not Docutils should recognize
- & use them.
-
-* In ``docutils.readers.get_reader_class`` (& ``parsers`` &
- ``writers`` too), should we be importing "standalone" or
- "docutils.readers.standalone"? (This would avoid importing
- top-level modules if the module name is not in docutils/readers.
- Potential nastiness.)
-
-* Perhaps store a _`name-to-id mapping file`? This could be stored
- permanently, read by subsequent processing runs, and updated with
- new entries. ("Persistent ID mapping"?)
-
-* Need a Unicode to HTML entities codec for HTML writer?
-
-* Perhaps the ``Component.supports`` method should deal with
- individual features ("meta" etc.) instead of formats ("html" etc.)?
-
-* Standalone Reader: Implement an option to turn off the DocTitle
- transform?
-
-* Add /usr/etc/docutils.conf to config file list? System-wide,
- whereas /etc/docutils.conf is machine-specific.
- /usr/local/etc/docutils.conf too? See the `Filesystem Hierarchy
- Standard`_.
-
- .. _Filesystem Hierarchy Standard: http://www.pathname.com/fhs.
-
-* Add _`object numbering and object references` (tables & figures).
- These would be the equivalent of DocBook's "formal" elements.
-
- We may need _`persistent sequences`, such as chapter numbers. See
- `OpenOffice.org XML`_ "fields". Should the sequences be automatic
- or manual (user-specifyable)?
-
- We need to name the objects:
-
- - "name" option for the "figure" directive? ::
-
- .. figure:: image.png
- :name: image's name
-
- To name tables, we could use a "table" directive::
-
- .. table:: optional title here
- :name: table's name
-
- ===== =====
- x not x
- ===== =====
- True False
- False True
- ===== =====
-
- This would also allow other options to be set, like border
- styles. The same technique could be used for other objects.
-
- - The object could also be done this way::
-
- .. _figure name:
-
- .. figure:: image.png
-
- This may be a more general solution, equally applicable to tables.
- However, explicit naming using an option seems simpler to users.
-
- We'll also need syntax for object references. See `OpenOffice.org
- XML`_ "reference fields":
-
- - Parameterized substitutions? For example::
-
- See |figure (figure name)|, on |page (figure name)|.
-
- .. |figure (name)| figure-ref:: (name)
- .. |page (name)| page-ref:: (name)
-
- The result would be::
-
- See figure 3.11 on page 157.
-
- But this would require substitution directives to be processed at
- reference-time, not at definition-time as they are now. Or,
- perhaps the directives could just leave ``pending`` elements
- behind, and the transforms do the work? How to pass the data
- through? Too complicated.
-
- - An interpreted text approach is simpler and better::
-
- See :figure:`figure name` on :page:`figure name`.
-
- The "figure" and "page" roles could generate appropriate
- boilerplate text. The position of the role (prefix or suffix)
- could also be utilized.
-
- See `Interpreted Text`_ below.
-
- .. _OpenOffice.org XML: http://xml.openoffice.org/
-
-* Think about large documents made up of multiple subdocument files.
- Issues: continuity (`persistent sequences`_ above), cross-references
- (`name-to-id mapping file`_ above and `targets in other documents`_
- below).
-
- When writing a book, the author probably wants to split it up into
- files, perhaps one per chapter (but perhaps even more detailed).
- However, we'd like to be able to have references from one chapter to
- another, and have continuous numbering (pages and chapters, as
- applicable). Of course, none of this is implemented yet. There has
- been some thought put into some aspects; see `the "include"
- directive`__ and the `Reference Merging`_ transform below.
-
- When I was working with SGML in Japan, we had a system where there
- was a top-level coordinating file, book.sgml, which contained the
- top-level structure of a book: the <book> element, containing the
- book <title> and empty component elements (<preface>, <chapter>,
- <appendix>, etc.), each with filename attributes pointing to the
- actual source for the component. Something like this::
-
- <book id="bk01">
- <title>Title of the Book</title>
- <preface inrefid="pr01"></preface>
- <chapter inrefid="ch01"></chapter>
- <chapter inrefid="ch02"></chapter>
- <chapter inrefid="ch03"></chapter>
- <appendix inrefid="ap01"></appendix>
- </book>
-
- (The "inrefid" attribute stood for "insertion reference ID".)
-
- The processing system would process each component separately, but
- it would recognize and use the book file to coordinate chapter and
- page numbering, and keep a persistent ID to (title, page number)
- mapping database for cross-references. Docutils could use a similar
- system for large-scale, multipart documents.
-
- __ rst/directives.html#including-an-external-document-fragment
-
- Aahz's idea:
-
- First the ToC::
-
- .. ToC-list::
- Introduction.txt
- Objects.txt
- Data.txt
- Control.txt
-
- Then a sample use::
-
- .. include:: ToC.txt
-
- As I said earlier in chapter :chapter:`Objects.txt`, the
- reference count gets increased every time a binding is made.
-
- Which produces::
-
- As I said earlier in chapter 2, the
- reference count gets increased every time a binding is made.
-
- The ToC in this form doesn't even need to be references to actual
- reST documents; I'm simply doing it that way for a minimum of
- future-proofing, in case I do want to add the ability to pick up
- references within external chapters.
-
- Perhaps, instead of ToC (which would overload the "contents"
- directive concept already in use), we could use "manifest". A
- "manifest" directive might associate local reference names with
- files::
-
- .. manifest::
- intro: Introduction.txt
- objects: Objects.txt
- data: Data.txt
- control: Control.txt
-
- Then the sample becomes::
-
- .. include:: manifest.txt
-
- As I said earlier in chapter :chapter:`objects`, the
- reference count gets increased every time a binding is made.
-
-* Add functional testing to Docutils: Readers, Writers, front ends.
-
-* Changes to sandbox/davidg/infrastructure/docutils-update?
-
- - Modify the script to only update the snapshots if files have
- actually changed in CVS (saving some SourceForge server cycles).
-
- - Make passing the test suite a prerequisite to snapshot update,
- but only if the process is completely automatic.
-
- - Rewrite in Python?
-
-* Publisher: "Ordinary setup" shouldn't requre specific ordering; at
- the very least, there ought to be error checking higher up in the
- call chain. [Aahz]
-
- ``Publisher.get_settings`` requires that all components be set up
- before it's called. Perhaps the I/O *objects* shouldn't be set, but
- I/O *classes*. Then options are set up (``.set_options``), and
- ``Publisher.set_io`` (or equivalent code) is called with source &
- destination paths, creating the I/O objects.
-
- Perhaps I/O objects shouldn't be instantiated until required. For
- split output, the Writer may be called multiple times, once for each
- doctree, and each doctree should have a separate Output object (with
- a different path). Is the "Builder" pattern applicable here?
-
-* Perhaps I/O objects should become full-fledged components (i.e.
- subclasses of ``docutils.Component``, as are Readers, Parsers, and
- Writers now), and thus have associated option/setting specs and
- transforms.
-
-* Multiple file I/O suggestion from Michael Hudson: use a file-like
- object or something you can iterate over to get file-like objects.
-
-* Language modules: in accented languages it may be useful to have
- both accented and unaccented entries in the ``bibliographic_fields``
- mapping for versatility.
-
-* Add a "--strict-language" option & setting: no English fallback for
- language-dependent features.
-
-* Add an "--input-language" option & setting? Specify a different
- language module for input (bibliographic fields, directives) than
- for output. The "--language" option would set both input & output
- languages.
-
-* Auto-generate reference tables for language-dependent features?
- Could be generated from the source modules. A special command-line
- option could be added to Docutils front ends to do this. (Idea from
- Engelbert Gruber.)
-
-* Change the "class" attribute of elements (set with
- Element.set_class) to a list?
-
-* Enable feedback of some kind from internal decisions, such as
- reporting the successful input encoding. Modify runtime settings?
- System message? Simple stderr output?
-
-* Perhaps we need to re-evaluate the config file format, possibly
- enabling a section for each Docutils component so that (for example)
- HTML's and LaTeX's stylesheets don't interfere with each other.
-
- Idea: adopt sections in the config file corresponding to Docutils
- components, which define flat namespaces that can be applied in an
- overlay fashion defined by the components themselves. For example,
- if the "pep_html" writer defines itself as derivative of the
- "html4css1" writer, the "stylesheet" setting in the "[html4css1]"
- section will be used unless the "[pep_html]" section overrides it.
- In the absence of any "stylesheet" setting in either section, a
- "stylesheet" setting in "[general]" would be used. This would also
- allow component-specific definitions of general or
- other-component-specific settings, such as writer-specific overrides
- for the "trim_footnote_reference_space" parser setting.
-
-* The "docutils.conf" included with Docutils should become complete,
- with examples of every setting (possibly commented). It's currently
- sparse, requiring doc lookups.
-
-* Add internationalization to footer boilerplate text (resulting from
- "--generator", "--source-link", and "--date" etc.), allowing
- translations.
-
-
-Documentation
--------------
-
-* User docs. What's needed?
-
-
-Implementation Docs
-```````````````````
-
-* Internal module documentation (docstrings).
-
-* spec/doctree.txt: DTD element structural relationships, semantics,
- and attributes. In progress; element descriptions to be completed.
-
-* How-to docs: In spec/howto/.
-
- - How a Writer works & how to write one
-
- - Transforms
-
-* Document the ``pending`` elements, how they're generated and what
- they do.
-
-* Document the transforms (perhaps in docstrings?): how they're used,
- what they do, dependencies & order considerations.
-
-* Document the HTML classes used by html4css1.py.
-
-
-Specification
-`````````````
-
-* Complete PEP 258 Docutils Design Specification.
-
- - Fill in the blanks in API details.
-
- - Specify the nodes.py internal data structure implementation?
-
- [Tibs:] Eventually we need to have direct documentation in
- there on how it all hangs together - the DTD is not enough
- (indeed, is it still meant to be correct? [Yes, it is.
- --DG]).
-
-* Rework PEP 257, separating style from spec from tools, wrt Docutils?
- See Doc-SIG from 2001-06-19/20.
-
-
-Web Site
-````````
-
-* Add an "examples" directory, beside "tools" and "docs", for
- interesting examples of Docutils usage? Have a top-level README.txt
- file and a subdirectory for each example. (Martin Blais)
-
-
-Python Source Reader
---------------------
-
-General:
-
-* Analyze Tony Ibbs' PySource code.
-
-* Analyze Doug Hellmann's HappyDoc project.
-
-* Investigate how POD handles literate programming.
-
-* Take the best ideas and integrate them into Docutils 0.3.
-
-Miscellaneous ideas:
-
-* If we can detect that a comment block begins with ``##``, a la
- JavaDoc, it might be useful to indicate interspersed section headers
- & explanatory text in a module. For example::
-
- """Module docstring."""
-
- ##
- # Constants
- # =========
-
- a = 1
- b = 2
-
- ##
- # Exception Classes
- # =================
-
- class MyException(Exception): pass
-
- # etc.
-
-* Should standalone strings also become (module/class) docstrings?
- Under what conditions? We want to prevent arbitrary strings from
- becomming docstrings of prior attribute assignments etc. Assume
- that there must be no blank lines between attributes and attribute
- docstrings? (Use lineno of NEWLINE token.)
-
- Triple-quotes are sometimes used for multi-line comments (such as
- commenting out blocks of code). How to reconcile?
-
-* HappyDoc's idea of using comment blocks when there's no docstring
- may be useful to get around the conflict between `additional
- docstrings`_ and ``from __future__ import`` for module docstrings.
- A module could begin like this::
-
- #!/usr/bin/env python
- # :Author: Me
- # :Copyright: whatever
-
- """This is the public module docstring (``__doc__``)."""
-
- # More docs, in comments.
- # All comments at the beginning of a module could be
- # accumulated as docstrings.
- # We can't have another docstring here, because of the
- # ``__future__`` statement.
-
- from __future__ import division
-
- Using the JavaDoc convention of a doc-comment block beginning with
- ``##`` is useful though. It allows doc-comments and implementation
- comments.
-
- .. _additional docstrings: pep-0258.html#additional-docstrings
-
-* HappyDoc uses an initial comment block to set "parser configuration
- values". Do the same thing for Docutils, to set runtime settings on
- a per-module basis? I.e.::
-
- # Docutils:setting=value
-
- Could be used to turn on/off function parameter comment recognition
- & other marginal features. Could be used as a general mechanism to
- augment config files and command-line options (but which takes
- precedence?).
-
-* Multi-file output should be divisible at arbitrary level.
-
-* Support all forms of ``import`` statements:
-
- - ``import module``: listed as "module"
- - ``import module as alias``: "alias (module)"
- - ``from module import identifier``: "identifier (from module)"
- - ``from module import identifier as alias``: "alias (identifier
- from module)"
- - ``from module import *``: "all identifiers (``*``) from module"
-
-* Have links to colorized Python source files from API docs? And
- vice-versa: backlinks from the colorized source files to the API
- docs!
-
-* In summaries, use the first *sentence* of a docstring if the first
- line is not followed by a blank line.
-
-
-reStructuredText Parser
------------------------
-
-Also see the `... Or Not To Do?`__ list.
-
-__ rst/alternatives.html#or-not-to-do
-
-* Clean up the code; refactor as required.
-
-* Add motivation sections for constructs in spec.
-
-* Allow very long titles (on two or more lines)?
-
-* And for the sake of completeness, should definition list terms be
- allowed to be very long (two or more lines) also?
-
-* Support generic hyperlink references to _`targets in other
- documents`? Not in an HTML-centric way, though (it's trivial to say
- ``http://www.example.com/doc#name``, and useless in non-HTML
- contexts). XLink/XPointer? ``.. baseref::``? See Doc-SIG
- 2001-08-10.
-
-* .. _adaptable file extensions:
-
- In target URLs, it would be useful to not explicitly specify the
- file extension. If we're generating HTML, then ".html" is
- appropriate; if PDF, then ".pdf"; etc. How about using ".*" to
- indicate "choose the most appropriate filename extension? For
- example::
-
- .. _Another Document: another.*
-
- Should the choice be from among existing files only? Documents
- only, or objects (images, etc.) also? (How to differentiate?
- Element context [within "image"]?)
-
- This may not be just a parser issue though; it may need framework
- support.
-
-* Implement the header row separator modification to table.el. (Wrote
- to Takaaki Ota & the table.el mailing list on 2001-08-12, suggesting
- support for "=====" header rows. On 2001-08-17 he replied, saying
- he'd put it on his to-do list, but "don't hold your breath".)
-
-* Tony says inline markup rule 7 could do with a *little* more
- exposition in the spec, to make clear what is going on for people
- with head colds.
-
-* @@ Fix the parser's indentation handling to conform with the
- stricter definition in the spec. (Explicit markup blocks should be
- strict or forgiving?)
-
-* @@ Tighten up the spec for indentation of "constructs using complex
- markers": field lists and option lists? Bodies may begin on the
- same line as the marker or on a subsequent line (with blank lines
- optional). Require that for bodies beginning on the same line as
- the marker, all lines be in strict alignment. Currently, this is
- acceptable::
-
- :Field-name-of-medium-length: Field body beginning on the same
- line as the field name.
-
- This proposal would make the above example illegal, instead
- requiring strict alignment. A field body may either begin on the
- same line::
-
- :Field-name-of-medium-length: Field body beginning on the same
- line as the field name.
-
- Or it may begin on a subsequent line::
-
- :Field-name-of-medium-length:
- Field body beginning on a line subsequent to that of the
- field name.
-
- This would be especially relevant in degenerate cases like this::
-
- :Number-of-African-swallows-requried-to-carry-a-coconut:
- It would be very difficult to align the field body with
- the left edge of the first line if it began on the same
- line as the field name.
-
-* Allow for variant styles by interpreting indented lists as if they
- weren't indented? For example, currently the list below will be
- parsed as a list within a block quote::
-
- paragraph
-
- * list item 1
- * list item 2
-
- But a lot of people seem to write that way, and HTML browsers make
- it look as if that's the way it should be. The parser could check
- the contents of block quotes, and if they contain only a single
- list, remove the block quote wrapper. There would be two problems:
-
- 1. What if we actually *do* want a list inside a block quote?
-
- 2. What if such a list comes immediately after an indented
- construct, such as a literal block?
-
- Both could be solved using empty comments (problem 2 already exists
- for a block quote after a literal block). But that's a hack.
-
- Perhaps a runtime setting, allowing or disabling this convenience,
- would be appropriate. But that raises issues too:
-
- User A, who writes lists indented (and their config file is set
- up to allow it), sends a file to user B, who doesn't (and their
- config file disables indented lists). The result of processing
- by the two users will be different.
-
- It may seem minor, but it adds ambiguity to the parser, which is
- bad.
-
- See the Doc-SIG discussion starting 2001-04-18 with Ed Loper's
- "Structuring: a summary; and an attempt at EBNF", item 4. Also
- docutils-users, 2003-02-17.
-
-* Make the parser modular. Allow syntax constructs to be added or
- disabled at run-time. Or is subclassing enough?
-
-* Continue to report (info, level 1) enumerated lists whose start
- value is not ordinal-1?
-
-* Generalize the "doctest block" construct (which is overly
- Python-centric) to other interactive sessions? "Doctest block"
- could be renamed to "I/O block" or "interactive block", and each of
- these could also be recognized as such by the parser:
-
- - Shell sessions::
-
- $ cat example1.txt
- A block beginning with a "$ " prompt is interpreted as a shell
- session interactive block. As with Doctest blocks, the
- interactive block ends with the first blank line, and wouldn't
- have to be indented.
-
- - Root shell sessions::
-
- # cat example2.txt
- A block beginning with a "# " prompt is interpreted as a root
- shell session (the user is or has to be logged in as root)
- interactive block. Again, the block ends with a blank line.
-
- Other standard (and unambiguous) interactive session prompts could
- easily be added (such as "> " for WinDOS).
-
- Tony Ibbs spoke out against this idea (2002-06-14 Doc-SIG thread
- "docutils feedback").
-
-* Generalize the "literal block" construct to allow blocks with a
- per-line quoting to avoid indentation? For example, in this email
- reply quoting the original, the block quoted with "``>``" (and
- prefaced by "``::``") would be treated as a literal block::
-
- John Doe wrote::
-
- >> Great idea!
- >
- > Why didn't I think of that?
-
- You just did! ;-)
-
- The literal block would have to be a continuous text block (the
- first blank line ends it) where every line begins with the same
- non-alphanumeric non-whitespace character.
-
-* Should the "doctest" element go away, and the construct simply be a
- front-end to generic literal blocks?
-
-* Add support for pragma (syntax-altering) directives.
-
- Some pragma directives could be local-scope unless explicitly
- specified as global/pragma using ":global:" options.
-
-* Remove leading numbers from section titles for implicit link names?
- A section titled "3. Conclusion" could then be referred to by
- "``Conclusion_``" (i.e., without the "3.").
-
-* Syntax for the "line-block" directive? How about a
- literal-block-like prefix, perhaps "``;;``"? (It is, after all, a
- *semi-literal* literal block, no?) Example::
-
- 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...
-
- Another idea: in an ordinary paragraph, if the first line ends with
- a backslash (escaping the newline), interpret the entire paragraph
- as a verse block? For example::
-
- Add just one backslash\
- And this paragraph becomes
- An awful haiku
-
- (And arguably invalid, since in Japanese the word "haiku" contains
- three syllables.)
-
-* Implement auto-enumerated lists? See `Auto-Enumerated Lists`__.
-
- __ rst/alternatives.html#auto-enumerated-lists
-
-* Support whitespace in angle-bracketed standalone URLs according to
- Appendix E ("Recommendations for Delimiting URI in Context") of `RFC
- 2396`_.
-
- .. _RFC 2396: http://www.rfc-editor.org/rfc/rfc2396.txt
-
-* Use the vertical spacing of the source text to determine the
- corresponding vertical spacing of the output?
-
-* [From Mark Nodine] For cells in simple tables that comprise a
- single line, the justification can be inferred according to the
- following rules:
-
- 1. If the text begins at the leftmost column of the cell,
- then left justification, ELSE
- 2. If the text begins at the rightmost column of the cell,
- then right justification, ELSE
- 3. Center justification.
-
- The onus is on the author to make the text unambiguous by adding
- blank columns as necessary. There should be a parser setting to
- turn off justification-recognition (normally on would be fine).
-
- Decimal justification?
-
-* Make enumerated list parsing more strict, so that this would parse
- as a paragraph with an info message::
-
- 1. line one
- 3. line two
-
-* Line numbers in system messages are inconsistent in the parser.
- Fix?
-
-* Generalize the "target-notes" directive into a command-line option
- somehow? See docutils-develop 2003-02-13.
-
-* Include the _`character entity substitution definition files`
- `temporarily stored here <tmp/charents>`__, perhaps in a
- ``docutils/parsers/rst/includes/`` directory. See `misc.include`_
- below.
-
-* Should ^L (or something else in reST) be defined to mean
- force/suggest page breaks in whatever output we have?
-
- A "break" or "page-break" directive would be easy to add. A new
- doctree element would be required though (perhaps "break"). The
- final behavior would be up to the Writer. The directive argument
- could be one of page/column/recto/verso for added flexibility.
-
- Currently ^L (Python's "\f") characters are treated as whitespace.
- They're converted to single spaces, actually, as are vertical tabs
- (^K, Python's "\v"). It would be possible to recognize form feeds
- as markup, but it requires some thought and discussion first. Are
- there any downsides? Many editing environments do not allow the
- insertion of control characters. Will it cause any harm? It would
- be useful as a shorthand for the directive.
-
- It's common practice to use ^L before Emacs "Local Variables"
- lists::
-
- ^L
- ..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
-
- These are already present in many PEPs and Docutils project
- documents. From the Emacs manual (info):
-
- A "local variables list" goes near the end of the file, in the
- last page. (It is often best to put it on a page by itself.)
-
- It would be unfortunate if this construct caused a final blank page
- to be generated (for those Writers that recognize the page breaks).
- We'll have to add a transform that looks for a "break" plus zero or
- more comments at the end of a document, and removes them.
-
-* Could the "break" concept above be extended to inline forms?
- E.g. "^L" in the middle of a sentence could cause a line break.
- Only recognize it at the end of a line (i.e., "\f\n")?
-
- Or is formfeed inappropriate? Perhaps vertical tab ("\v"), but even
- that's a stretch. Can't use carriage returns, since they're
- commonly used for line endings.
-
-* Allow a "::"-only paragraph (first line, actually) to introduce a
- literal block without a blank line? (Idea from Paul Moore.) ::
-
- ::
- This is a literal block
-
- Is indentation enough to make the separation between a paragraph
- which contains just a ``::`` and the literal text unambiguous?
- There's one problem with this concession. What if one wants a
- definition list item which defines the term "::"? We'd have to
- escape it. Currenty, "\::" doesn't work (although it should;
- **bug**), and ":\:" is misinterpreted as a field name (name "\";
- also a **bug**). Assuming these bugs are squashed, I suppose it's a
- useful special case. It would only be reasonable to apply it to
- "::"-only paragraphs though. I think the blank line is visually
- necessary if there's text before the "::"::
-
- The text in this paragraph needs separation
- from the literal block following::
- This doesn't look right.
-
- Another idea. Would it be worthwhile to allow literal blocks to
- begin without a newline after the "::"? Example::
-
- :: while True:
- print 'hello world'
-
- Perhaps. Perhaps not.
-
-* Add new syntax for _`nested inline markup`? Or extend the parser to
- parse nested inline markup somehow? See the `collected notes
- <http://docutils.sf.net/spec/rst/alternatives.html#nested-inline-markup>`__.
-
-* Idea from Beni Cherniavsky::
-
- I'm writing a README document linking to all other interesting
- files in its directory. If these were full URLs I could just
- write them in the text but these are relative links that can't
- be auto-recognized. The shortest way to make such links that I
- found was `file_name <file_name>`_. Perhaps a shortcut for such
- usage could be added, e.g. `<file_name>`_ would take the target
- as the link name?
-
- IOW these would be equivalent::
-
- `<file_name>`_
- `file_name <file_name>`_
-
- Another possibility is to drop the backticks. Should the angle
- brackets be kept in the output or not? This syntax could be adopted
- in addition to the one above::
-
- <file_name>_
-
-
-Directives
-``````````
-
-Directives below are often referred to as "module.directive", the
-directive function. The "module." is not part of the directive name
-when used in a document.
-
-* Allow directives to be added at run-time?
-
-* Use the language module for directive option names?
-
-* Add "substitution_only" and "substitution_ok" function attributes,
- and automate context checking?
-
-* Implement options on existing directives:
-
- - Add a "name" option to directives, to set an author-supplied
- identifier?
-
- - _`images.image`: "border"? "link"?
-
- Units of measure? (See docutils-users, 2003-03-02.)
-
- - _`images.figure`: "title" and "number", to indicate a formal
- figure?
-
- - _`parts.sectnum`: "local"?, "start", "refnum"
-
- A "local" option could enable numbering for sections from a
- certain point down, and sections in the rest of the document are
- not numbered. For example, a reference section of a manual might
- be numbered, but not the rest. OTOH, an all-or-nothing approach
- would probably be enough.
-
- The "start" option will specify the sequence set to use at the
- same time as the starting value, for the first part of the section
- number (i.e., section, not subsection). For example::
-
- .. sectnum: :start: 1
-
- .. sectnum: :start: A
-
- .. sectnum: :start: 5
-
- .. sectnum: :start: I
-
- The first one is the default: start at 1, numbered. The second
- one specifies letters, and start at "A". The third specifies
- numbers, start at 5. The last example could signal Roman
- numerals, although I don't know if they'd be applicable here.
- Enumerated lists already do all this; perhaps that code could be
- reused.
-
- Here comes the tricky part. The "sectnum" directive should be
- usable multiple times in a single document. For example, in a
- long document with "chapter" and "appendix" sections, there could
- be a second "sectnum" before the first appendix, changing the
- sequence used (from 1,2,3... to A,B,C...). This is where the
- "local" concept comes in. This part of the implementation can be
- left for later.
-
- A "refnum" option (better name?) would insert reference names
- (targets) consisting of the reference number. Then a URL could be
- of the form ``http://host/document.html#2.5`` (or "2-5"?). Allow
- internal references by number? Allow name-based *and*
- number-based ids at the same time, or only one or the other (which
- would the table of contents use)? Usage issue: altering the
- section structure of a document could render hyperlinks invalid.
-
- - _`parts.contents`: Add a "suppress" or "prune" option? It would
- suppress contents display for sections in a branch from that point
- down. Or a new directive, like "prune-contents"?
-
- Add an option to include topics in the TOC? Another for sidebars?
- See docutils-develop 2003-01-29.
-
- - _`misc.include`:
-
- - "encoding" option? Take default from runtime settings. Use
- Input component to read it in?
-
- - Option to select a range of lines?
-
- - Option to label lines?
-
- - Default directory for "built-in includes", using the C syntax
- ``#include <name>``?
-
- Use C-preprocessor semantics for locating include files?
- E.g., ``.. include:: file.txt`` will read another file into
- the current one, relative to the current file's directory,
- and ``.. include:: <standard>`` will read a standard include
- file from ``docutils/include/``. (Should "quotes" be
- required around non-standard include files?)
-
- -- http://sf.net/mailarchive/message.php?msg_id=1938401
-
- I now think that ``docutils/parsers/rst/include/`` is a better
- place for these files, since they're reStructuredText-specific.
-
- Keeping standard data files together with the package code makes
- sense to me. It seems much less complex to implement than a
- separate system data directory, such as ``/usr/share/docutils``.
- Any reason a system data directory should be used? How does
- Distutils handle data files?
-
- How about an environment variable, say RSTINCLUDEPATH or
- RSTPATH? This could be combined with a setting/option to allow
- user-defined include directories.
-
- For a specific application, see the discussion of `character
- entity substitution definition files`_ above.
-
-* Implement directives. Each of the list items below begins with an
- identifier of the form, "module_name.directive_function_name". The
- directive name itself could be the same as the
- directive_function_name, or it could differ.
-
- - _`html.imagemap` (Useful outside of HTML? If not, replace with
- image only in non-HTML writers?)
-
- - _`parts.endnotes` (or "footnotes"): See `Footnote & Citation Gathering`_.
-
- - _`parts.citations`: See `Footnote & Citation Gathering`_.
-
- - _`misc.exec`: Execute Python code & insert the results. Perhaps
- dangerous? Call it "python" to allow for other languages?
-
- - _`misc.system`?: Execute an ``os.system()`` call, and insert the
- results (possibly as a literal block). Definitely dangerous! How
- to make it safe? Perhaps such processing should be left outside
- of the document, in the user's production system (a makefile or a
- script or whatever). Or, the directive could be disabled by
- default and only enabled with an explicit command-line option or
- config file setting. Even then, an interactive prompt may be
- useful, such as:
-
- The file.txt document you are processing contains a "system"
- directive requesting that the ``sudo rm -rf /`` command be
- executed. Allow it to execute? (y/N)
-
- - _`misc.eval`: Evaluate an expression & insert the text. At parse
- time or at substitution time? Dangerous? Perhaps limit to canned
- macros; see text.date_ below.
-
- - _`misc.encoding`: Specify the character encoding of the input
- data. But there are problems:
-
- - When it sees the directive, the parser will already have read
- the input data, and encoding determination will already have
- been done.
-
- - If a file with an "encoding" directive is edited and saved with
- a different encoding, the directive may cause data corruption.
-
- - _`misc.language`: Specify the language of a document. There is a
- problem similar to the first problem listed for misc.encoding_,
- although to a lesser degree.
-
- - _`misc.settings`: Set any Docutils runtime setting from within a
- document?
-
- - _`misc.charents`: Equivalent to::
-
- .. include:: {includepath}/charents.txt
-
- - Docutils already has the ability to say "use this content for
- Writer X" (via the "raw" directive), but it doesn't have the
- ability to say "use this content for any Writer other than X". It
- wouldn't be difficult to add this ability though.
-
- My first idea would be to add a set of conditional directives.
- Let's call them "writer-is" and "writer-is-not" for discussion
- purposes (don't worry about implemention details). We might
- have::
-
- .. writer-is:: text-only
-
- ::
-
- +----------+
- | SNMP |
- +----------+
- | UDP |
- +----------+
- | IP |
- +----------+
- | Ethernet |
- +----------+
-
- .. writer-is:: pdf
-
- .. figure:: protocol_stack.eps
-
- .. writer-is-not:: text-only pdf
-
- .. figure:: protocol_stack.png
-
- This could be an interface to the Filter transform
- (docutils.transforms.components.Filter).
-
- The ideas in `adaptable file extensions`_ above may also be
- applicable here.
-
- Here's an example of a directive that could produce multiple
- outputs (*both* raw troff pass-through *and* a GIF, for example)
- and allow the Writer to select. ::
-
- .. eqn::
-
- .EQ
- delim %%
- .EN
- %sum from i=o to inf c sup i~=~lim from {m -> inf}
- sum from i=0 to m sup i%
- .EQ
- delim off
- .EN
-
- - _`body.qa` (directive a.k.a. "faq", "questions"): Questions &
- Answers. Implement as a generic two-column marked list? As a
- standalone (non-directive) construct? (Is the markup ambiguous?)
- Add support to parts.contents.
-
- New elements would be required. Perhaps::
-
- <!ELEMENT question_list (question_list_item+)>
- <!ATTLIST question_list
- numbering (none | local | global)
- #IMPLIED
- start NUMBER #IMPLIED>
- <!ELEMENT question_list_item (question, answer*)>
- <!ELEMENT question %text.model;>
- <!ELEMENT answer (%body.elements;)+>
-
- Originally I thought of implementing a Q&A list with special
- syntax::
-
- Q: What am I?
-
- A: You are a question-and-answer
- list.
-
- Q: What are you?
-
- A: I am the omniscient "we".
-
- Where each "Q" and "A" could also be numbered (e.g., "Q1").
- However, a simple enumerated or bulleted list will do just fine
- for syntax. A directive could treat the list specially; e.g. the
- first paragraph could be treated as a question, the remainder as
- the answer (multiple answers could be represented by nested
- lists). Without special syntax, this directive becomes low
- priority.
-
- - _`body.example`: Examples; suggested by Simon Hefti. Semantics as
- per Docbook's "example"; admonition-style, numbered, reference,
- with a caption/title.
-
- - _`body.index`: Index targets.
-
- Were I writing a book with an index, I guess I'd need two
- different kinds of index targets: inline/implicit and
- out-of-line/explicit. For example::
-
- In this `paragraph`:index:, several words are being
- `marked`:index: inline as implicit `index`:index:
- entries.
-
- .. index:: markup
- .. index:: syntax
-
- The explicit index directives above would refer to
- this paragraph.
-
- The words "paragraph", "marked", and "index" would become index
- entries pointing at the words in the first paragraph. The index
- entry words appear verbatim in the text. (Don't worry about the
- ugly ":index:" part; if indexing is the only/main application of
- interpreted text in your documents, it can be implicit and
- omitted.) The two directives provide manual indexing, where the
- index entry words ("markup" and "syntax") do not appear in the
- main text. We could combine the two directives into one::
-
- .. index:: markup; syntax
-
- Semicolons instead of commas because commas could *be* part of the
- index target, like::
-
- .. index:: van Rossum, Guido
-
- Another reason for index directives is because other inline markup
- wouldn't be possible within inline index targets.
-
- Sometimes index entries have multiple levels. Given::
-
- .. index:: statement syntax: expression statements
-
- In a hypothetical index, combined with other entries, it might
- look like this::
-
- statement syntax
- expression statements ..... 56
- assignment ................ 57
- simple statements ......... 58
- compound statements ....... 60
-
- Inline multi-level index targets could be done too. Perhaps
- something like::
-
- When dealing with `expression statements <statement syntax:>`,
- we must remember ...
-
- The opposite sense could also be possible::
-
- When dealing with `index entries <:multi-level>`, there are
- many permutations to consider.
-
- Also "see / see also" index entries.
-
- Given::
-
- Here's a paragraph.
-
- .. index:: paragraph
-
- (The "index" directive above actually targets the *preceding*
- object.) The directive should produce something like this XML::
-
- <paragraph>
- <index_entry text="paragraph"/>
- Here's a paragraph.
- </paragraph>
-
- This kind of content model would also allow true inline
- index-entries::
-
- Here's a `paragraph`:index:.
-
- If the "index" role were the default for the application, it could be
- dropped::
-
- Here's a `paragraph`.
-
- Both of these would result in this XML::
-
- <paragraph>
- Here's a <index_entry>paragraph</index_entry>.
- </paragraph>
-
- - _`body.literal`: Literal block, possibly "formal" (see `object
- numbering and object references`_ above). Possible options:
-
- - "highlight" a range of lines
- - "number" or "line-numbers"
-
- See docutils-users 2003-03-03.
-
- - _`body.sidebar`: Add to the already implemented directive. Allow
- internal section structure, with adornment styles independent of
- the main document.
-
- - _`colorize.python`: Colorize Python code. Fine for HTML output,
- but what about other formats? Revert to a literal block? Do we
- need some kind of "alternate" mechanism? Perhaps use a "pending"
- transform, which could switch its output based on the "format" in
- use. Use a factory function "transformFF()" which returns either
- "HTMLTransform()" instance or "GenericTransform" instance?
-
- If we take a Python-to-HTML pretty-printer and make it output a
- Docutils internal doctree (as per nodes.py) instead of HTML, then
- each output format's stylesheet (or equivalent) mechanism could
- take care of the rest. The pretty-printer code could turn this
- doctree fragment::
-
- <literal_block xml:space="preserve">
- print 'This is Python code.'
- for i in range(10):
- print i
- </literal_block>
-
- into something like this ("</>" is end-tag shorthand)::
-
- <literal_block xml:space="preserve" class="python">
- <keyword>print</> <string>'This is Python code.'</>
- <keyword>for</> <identifier>i</> <keyword
- >in</> <expression>range(10)</>:
- <keyword>print</> <expression>i</>
- </literal_block>
-
- But I'm leaning toward adding a single new general-purpose
- element, "phrase", equivalent to HTML's <span>. Here's the
- example rewritten using the generic "phrase"::
-
- <literal_block xml:space="preserve" class="python">
- <phrase class="keyword">print</> <phrase
- class="string">'This is Python code.'</>
- <phrase class="keyword">for</> <phrase
- class="identifier">i</> <phrase class="keyword">in</> <phrase
- class="expression">range(10)</>:
- <phrase class="keyword">print</> <phrase
- class="expression">i</>
- </literal_block>
-
- It's more verbose but more easily extensible and more appropriate
- for the case at hand. It allows us to edit style sheets to add
- support for new formats, not the Docutils code itself.
-
- Perhaps a single directive with a format parameter would be
- better::
-
- .. colorize:: python
-
- print 'This is Python code.'
- for i in range(10):
- print i
-
- But directives can have synonyms for convenience. "format::
- python" was suggested, but "format" seems too generic.
-
- - _`text.date`: Datestamp. For substitutions. The directive could
- be followed by a formatting string, using strftime codes. Default
- is "%Y-%m-%d" (ISO 8601 date), but time fields can also be used.
-
- - Combined with the "include" directive, implement canned macros?
- E.g.::
-
- .. include:: <macros>
-
- Today's date is |date|.
-
- Where "macros" contains ``.. |date| date::``, among others.
-
- - _`text.time`: Timestamp. For substitutions. Shortcut for
- ``.. date:: %H:%M``. Date fields can also be used.
-
- - _`pysource.usage`: Extract a usage message from the program,
- either by running it at the command line with a ``--help`` option
- or through an exposed API. [Suggestion for Optik.]
-
-
-Interpreted Text
-````````````````
-
-Interpreted text is entirely a reStructuredText markup construct, a
-way to get around built-in limitations of the medium. Some roles are
-intended to introduce new doctree elements, such as "title-reference".
-Others are merely convenience features, like "RFC".
-
-All supported interpreted text roles must be known by the Parser.
-Adding a new role often involves adding a new element to the DTD and
-may require extensive support, therefore such additions should be well
-thought-out. There should be a limited number of roles.
-
-The only place where no limit is placed on variation is at the start,
-at the Reader/Parser interface. Transforms are inserted by the Reader
-into the Transformer's queue, where non-standard elements are
-converted. Once past the Transformer, no variation from the standard
-Docutils doctree is possible.
-
-An example is the Python Source Reader, which will use interpreted
-text extensively. The default role will be "Python identifier", which
-will be further interpreted by namespace context into <class>,
-<method>, <module>, <attribute>, etc. elements (see
-spec/pysource.dtd), which will be transformed into standard hyperlink
-references, which will be processed by the various Writers. No Writer
-will need to have any knowledge of the Python-Reader origin of these
-elements.
-
-* @@@ Add a test for language mappings of roles.
-
-* Alan Jaffray suggested (and I agree) that it would be sensible to:
-
- - have a directive and/or command-line option to specify a default
- role for interpreted text
- - allow the reST processor to take an argument for the default role
- (this will be subsumed by the above via the runtime settings
- mechanism)
- - issue a warning when processing documents with no default role
- which contain interpreted text with no explicitly specified role
- (there will always be a default role, so this won't happen)
-
-* Add a directive establishing a mapping of interpreted text role
- aliases? A set of default roles (index, acronym, etc.) could exist,
- and the directive could assign abbreviations (i, a, etc.) or other
- alternatives.
-
-* Add explicit interpreted text roles for the rest of the implicit
- inline markup constructs: named-reference, anonymous-reference,
- footnote-reference, citation-reference, substitution-reference,
- target, uri-riference (& synonyms).
-
-* Add directives for each role as well? This would allow indirect
- nested markup::
-
- This text contains |nested inline markup|.
-
- .. |nested inline markup| emphasis::
-
- nested ``inline`` markup
-
-* Add document-local _`role bindings`, associating directives with
- roles? ::
-
- ``She wore ribbons in her hair and it lay with streaks of
- grey``:rewrite:
-
- .. :rewrite: class:: rewrite
-
- The syntax is similar to that of substitution declarations, and the
- directive/role association may resolve implementation issues. The
- semantics, ramifications, and implementation details do need to be
- worked out though. Syntax idea from Jeffrey C. Jacobs.
-
- The example above would implement the "rewrite" role as adding a
- ``class="rewrite"`` attribute to the interpreted text ("inline"
- element). The stylesheet would then pick up on the "class"
- attribute to do the actual formatting.
-
- The same thing could be done with a directive, albeit a bit more
- verbosely::
-
- .. role:: rewrite
- :class: rewrite
-
- The advantage of the new syntax would be flexibility. Uses other
- than "class" may present themselves.
-
-* Perhaps a "role" directive can modify existing roles with
- attributes? ::
-
- .. :api-ti: role:: api
- :base: twisted.internet
-
- To start the reactor, use the :api-ti:`reactor.run` method. To
- stop it, use :api-ti:`reactor.stop`.
-
-* Implement roles:
-
- - "acronym" and "abbreviation": Associate the full text with a short
- form. Jason Diamond's description:
-
- I want to translate ```reST`:acronym:`` into ``<acronym
- title='reStructuredText'>reST</acronym>``. The value of the
- title attribute has to be defined out-of-band since you can't
- parameterize interpreted text. Right now I have them in a
- separate file but I'm experimenting with creating a directive
- that will use some form of reST syntax to let you define them.
-
- Should Docutils complain about undefined acronyms or
- abbreviations?
-
- What to do if there are multiple definitions? How to
- differentiate between CSS (Content Scrambling System) and CSS
- (Cascading Style Sheets) in a single document?
-
- How to define the full text? Possibilities:
-
- 1. With a directive and a definition list? ::
-
- .. acronyms::
-
- reST
- reStructuredText
- DPS
- Docstring Processing System
-
- Would this list remain in the document as a glossary, or would
- it simply build an internal lookup table? A "glossary"
- directive could be used to make the intention clear.
- Acronyms/abbreviations and glossaries could work together.
-
- Then again, a glossary could be formed by gathering individual
- definitions from around the document.
-
- 2. Some kind of `inline parameter syntax`__? ::
-
- `reST <reStructuredText>`:acronym: is `WYSIWYG <what you
- see is what you get>`:acronym: plaintext markup.
-
- __ rst/alternatives.html#parameterized-interpreted-text
-
- 3. A combination of 1 & 2?
-
- The multiple definitions issue could be handled by establishing
- rules of priority. For example, directive-based lookup tables
- have highest priority, followed by the first inline definition.
- Multiple definitions in directive-based lookup tables would
- trigger warnings, similar to the rules of `implicit hyperlink
- targets`__.
-
- __ rst/reStructuredText.html#implicit-hyperlink-targets
-
- - "annotation": The equivalent of the HTML "title" attribute. This
- is secondary information that may "pop up" when the pointer hovers
- over the main text. A corresponding directive would be required
- to associate annotations with the original text (by name, or
- positionally as in anonymous targets?).
-
- - "figure", "table", "listing", "chapter", "page", etc: See `object
- numbering and object references`_ above.
-
- - "term"?: Unfamiliar or specialized terminology.
-
- - "glossary-term": This would establish a link to a glossary. It
- would require an associated "glossary-entry" directive, whose
- contents could be a definition list::
-
- .. glossary-entry::
-
- term1
- definition1
- term2
- definition2
-
- This would allow entries to be defined anywhere in the document,
- and collected (via a "glossary" directive perhaps) at one point.
-
-
-Unimplemented Transforms
-------------------------
-
-Footnote & Citation Gathering
-`````````````````````````````
-
-Collect and move footnotes & citations to the end of a document.
-(Separate transforms.)
-
-
-Hyperlink Target Gathering
-``````````````````````````
-
-It probably comes in two phases, because in a Python context we need
-to *resolve* them on a per-docstring basis [do we? --DG], but if the
-user is trying to do the callout form of presentation, they would
-then want to group them all at the end of the document.
-
-
-Reference Merging
-`````````````````
-
-When merging two or more subdocuments (such as docstrings),
-conflicting references may need to be resolved. There may be:
-
-* duplicate reference and/or substitution names that need to be made
- unique; and/or
-* duplicate footnote numbers that need to be renumbered.
-
-Should this be done before or after reference-resolving transforms
-are applied? What about references from within one subdocument to
-inside another?
-
-
-Document Splitting
-``````````````````
-
-If the processed document is written to multiple files (possibly in a
-directory tree), it will need to be split up. Internal references
-will have to be adjusted.
-
-(HTML only? Initially, yes. Eventually, anything should be
-splittable.)
-
-Idea: insert a "split here" attribute into the root element of each
-split-out document, containing the path/filename. The Output object
-will recognize this attribute and split out the files accordingly.
-Must allow for common headers & footers, prev/next, breadcrumbs, etc.
-
-
-Navigation
-``````````
-
-If a document is split up, each segment will need navigation links:
-parent, children (small TOC), previous (preorder), next (preorder).
-Part of `Document Splitting`_?
-
-
-List of System Messages
-```````````````````````
-
-The ``system_message`` elements are inserted into the document tree,
-adjacent to the problems themselves where possible. Some (those
-generated post-parse) are kept until later, in ``document.messages``,
-and added as a special final section, "Docutils System Messages".
-
-Docutils could be made to generate hyperlinks to all known
-system_messages and add them to the document, perhaps to the end of
-the "Docutils System Messages" section.
-
-Fred L. Drake, Jr. wrote:
-
- I'd like to propose that both parse- and transformation-time
- messages are included in the "Docutils System Messages" section.
- If there are no objections, I can make the change.
-
-The advantage of the current way of doing things is that parse-time
-system messages don't require a transform; they're already in the
-document. This is valuable for testing (unit tests,
-tools/quicktest.py). So if we do decide to make a change, I think the
-insertion of parse-time system messages ought to remain as-is and the
-Messages transform ought to move all parse-time system messages
-(remove from their originally inserted positions, insert in System
-Messages section).
-
-
-Filtering System Messages
-`````````````````````````
-
-Currently the Writer is responsible for filtering out system messages
-that are below the current threshold. Should the filtering be in a
-separate transform? It would then happen regardless of the writer
-used. Perhaps some writers don't want system messages filtered?
-
-
-Others
-``````
-
-Index
-
-
-HTML Writer
------------
-
-* @@ Construct a _`templating system`, as in ht2html/yaptu, using
- directives and substitutions for dynamic stuff. Or a specialized
- writer to generate .ht & links.h files for ht2html?
-
-* Add a setting (or another writer) which produces just the contents
- of the <body> element. What about the rest; it should be accessible
- somehow, especially the docinfo fields. Part of the ht2html
- implementation? Generic component output?
-
- I think a separate writer which inherits from html4css1.py would be
- a good start. An "inline" or body-only HTML writer has to omit some
- of the information given by the full HTML writer. Some applications
- won't need this information, but others will; they'll want to deal
- with it in different ways. I envision such a writer returning a set
- of values: body html, and everything else (metadata). Perhaps a
- tuple of this form::
-
- (body_html, {'title': value,
- 'subtitle': value,
- 'docinfo': (tuple of (name, value) pairs),
- etc.})
-
- By having a separate writer, a different return data structure is
- possible. We may need to add support to all of docutils to allow
- for this variant output. Should the metadata values be simple text
- strings, or HTML snippets (they may contain markup), or both? There
- may be other issues to be worked out.
-
-* Add more support for <link> elements, especially for navigation
- bars.
-
-* Make the admonitions more distinctive and varied.
-
-* Make the "class" attributes optional? Implies no stylesheet?
-
-* Add a setting to customize the header tag levels, i.e. <h1>.
-
-* Base list compaction on the spacing of source list? Would require
- parser support. (Idea: fantasai, 16 Dec 2002, doc-sig.)
-
-* Add a tool tip ("title" attribute?) to footnote back-links
- identifying them as such. Text in Docutils language module.
-
-* Add an option to restrict the document title to <head><title> only,
- and not include it in the document body. Subtitle?
-
-
-Front-End Tools
----------------
-
-* What about if we don't know which Reader and/or Writer we are
- going to use? If the Reader/Writer is specified on the
- command-line? (Will this ever happen?)
-
- Perhaps have different types of front ends:
-
- a) _`Fully qualified`: Reader and Writer are hard-coded into the
- front end (e.g. ``pep2html [options]``, ``pysource2pdf
- [options]``).
-
- b) _`Partially qualified`: Reader is hard-coded, and the Writer is
- specified a sub-command (e.g. ``pep2 html [options]``,
- ``pysource2 pdf [options]``). The Writer is known before option
- processing happens, allowing the OptionParser to be built
- dynamically. Alternatively, the Writer could be hard-coded and
- the Reader specified as a sub-command (e.g. ``htmlfrom pep
- [options]``).
-
- c) _`Unqualified`: Reader and Writer are specified as subcommands
- (e.g. ``publish pep html [options]``, ``publish pysource pdf
- [options]``). A single front end would be sufficient, but
- probably only useful for testing purposes.
-
- d) _`Dynamic`: Reader and/or Writer are specified by options, with
- defaults if unspecified (e.g. ``publish --writer pdf
- [options]``). Is this possible? The option parser would have
- to be told about new options it needs to handle, on the fly.
- Component-specific options would have to be specified *after*
- the component-specifying option.
-
- Allow common options before subcommands, as in CVS? Or group all
- options together? In the case of the `fully qualified`_
- front ends, all the options will have to be grouped together
- anyway, so there's no advantage (we can't use it to avoid
- conflicts) to splitting common and component-specific options
- apart.
-
-* Parameterize help text & defaults somehow? Perhaps a callback? Or
- initialize ``settings_spec`` in ``__init__`` or ``init_options``?
-
-* Disable common options that don't apply?
-
-* Implement the "sectnum" directive as a command-line option also?
-
-* @@@ Come up with better names for the most-used tools, and install
- them as scripts.
-
-* Create a single dynamic_ or unqualified_ front end that can be
- installed?
-
-
-Project Policies
-================
-
-A few quotes sum up the policies of the Docutils project. The IETF's
-classic credo (by MIT professor Dave Clark) is an ideal we can aspire
-to:
-
- We reject: kings, presidents, and voting. We believe in: rough
- consensus and running code.
-
-As architect, chief cook and bottle-washer, I currently function as
-BDFN (Benevolent Dictator For Now), but I would happily abdicate the
-throne given a suitable candidate. Any takers?
-
-Eric S. Raymond, anthropologist of the hacker subculture, writes in
-his essay `The Magic Cauldron`_:
-
- The number of contributors [to] projects is strongly and inversely
- correlated with the number of hoops each project makes a user go
- through to contribute.
-
- .. _The Magic Cauldron:
- http://www.tuxedo.org/~esr/writings/magic-cauldron/
-
-Therefore, we will endeavour to keep the barrier to entry as low as
-possible. The policies below should not be thought of as barriers,
-but merely as a codification of experience to date. These are "best
-practices", not absolutes; exceptions are expected, tolerated, and
-used as a source of improvement.
-
-As for control issues, Emmett Plant (CEO of the Xiph.org Foundation,
-originators of Ogg Vorbis) put it well when he said:
-
- Open source dictates that you lose a certain amount of control
- over your codebase, and that's okay with us.
-
-
-Python Coding Conventions
--------------------------
-
-These are the conventions I use in my own code. Contributed code will
-not be refused merely because it does not strictly adhere to these
-conditions; as long as it's internally consistent, clean, and correct,
-it probably will be accepted. But don't be surprised if the
-"offending" code gets fiddled over time to conform to these
-conventions.
-
-The Docutils project shall follow the generic coding conventions as
-specified in the `Style Guide for Python Code`_ and `Docstring
-Conventions`_ PEPs, with the following clarifications (from most to
-least important):
-
-* 4 spaces per indentation level. No tabs. Indent continuation lines
- according to the Emacs python-mode standard.
-
-* Use only ASCII, no 8-bit strings. See `Docutils
- Internationalization`_.
-
-* No one-liner compound statements (i.e., no ``if x: return``: use two
- lines & indentation), except for degenerate class or method
- definitions (i.e., ``class X: pass`` is O.K.).
-
-* Lines should be no more than 78 characters long.
-
-* Use "StudlyCaps" for class names (except for element classes in
- docutils.nodes).
-
-* Use "lowercase" or "lowercase_with_underscores" for function,
- method, and variable names. For short names, maximum two words,
- joined lowercase may be used (e.g. "tagname"). For long names with
- three or more words, or where it's hard to parse the split between
- two words, use lowercase_with_underscores (e.g.,
- "note_explicit_target", "explicit_target"). If in doubt, use
- underscores.
-
-* Use 'single quotes' for string literals, and """triple double
- quotes""" for docstrings.
-
-.. _Style Guide for Python Code:
- http://www.python.org/peps/pep-0008.html
-.. _Docstring Conventions: http://www.python.org/peps/pep-0257.html
-.. _Docutils Internationalization: howto/i18n.html#python-code
-
-
-Copyrights and Licensing
-------------------------
-
-The majority of the Docutils project code and documentation has been
-placed in the public domain. Unless clearly and explicitly indicated
-otherwise, any patches (modifications to existing files) submitted to
-the project for inclusion (via CVS, SourceForge trackers, mailing
-lists, or private email) are assumed to be in the public domain as
-well.
-
-Any new files contributed to the project should clearly state their
-intentions regarding copyright, in one of the following ways:
-
-* Public domain (preferred): include the statement "This
- module/document has been placed in the public domain."
-
-* Copyright & open source license: include a copyright notice, along
- with either an embedded license statement, a reference to an
- accompanying license file, or a license URL.
-
-One of the goals of the Docutils project, once complete, is to be
-incorporated into the Python standard library. At that time copyright
-of the Docutils code will be assumed by or transferred to the Python
-Software Foundation (PSF), and will be released under Python's
-license. If the copyright/license option is chosen for new files, the
-license should be compatible with Python's current license, and the
-author(s) of the files should be willing to assign copyright to the
-PSF.
-
-
-CVS Check-ins
--------------
-
-Instructions for CVS access can be found at
-http://sourceforge.net/cvs/?group_id=38414. Anyone can access the CVS
-repository anonymously. Only project developers can make changes.
-
-Unless you really *really* know what you're doing, please limit your
-CVS commands to ``cvs checkout``, ``cvs commit/checkin``, and ``cvs
-add``. Do **NOT** use ``cvs import`` unless you're absolutely sure
-you know what you're doing. Even then, grab a copy of the `nightly
-CVS tarball <http://cvs.sf.net/cvstarballs/docutils-cvsroot.tar.gz>`_,
-set it up on your own machine, and experiment *there* first.
-
-The `main source tree`_ ("docutils" CVS module) should always be kept
-in a stable state (usable and as problem-free as possible). The
-Docutils project shall follow the `Python Check-in Policies`_ (as
-applicable), with particular emphasis as follows:
-
-* Before checking in any changes, run the entire Docutils test suite
- to be sure that you haven't broken anything. From a shell::
-
- cd docutils/test
- alltests.py
-
-* When adding new functionality (or fixing bugs), be sure to add test
- cases to the test suite. Practise test-first programming; it's fun,
- it's addictive, and it works!
-
-* The `sandbox CVS directory`_ is the place to put new, incomplete or
- experimental code. See `Additions to Docutils`_ and `The Sandbox`_
- below.
-
-* For bugs or omissions that have an obvious fix and can't possibly
- mess up anything else, go right ahead and check it in directly.
-
-* For larger changes, use your best judgement. If you're unsure of
- the impact, or feel that you require advice or approval, patches or
- `the sandbox`_ are the way to go.
-
-Docutils will pursue an open and trusting policy for as long as
-possible, and deal with any abberations if (and hopefully not when)
-they happen. I'd rather see a torrent of loose contributions than
-just a trickle of perfect-as-they-stand changes. The occasional
-mistake is easy to fix. That's what CVS is for.
-
-.. _main source tree:
- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docutils/docutils/
-.. _Python Check-in Policies: http://www.python.org/dev/tools.html
-.. _sandbox CVS directory:
- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docutils/sandbox/
-
-
-Additions to Docutils
-`````````````````````
-
-Additions to the project, such as new components, should be developed
-in the `sandbox CVS directory`_ until they're in `good shape`_,
-usable_, and `reasonably complete`_. Adding to the `main source
-tree`_ or to a `parallel project`_ implies a commitment to the
-Docutils user community.
-
-* Why the sandbox?
-
- Developers should be able to try out new components while they're
- being developed for addition to main source tree. See `The
- Sandbox`_ below.
-
-* _`Good shape` means that the component code is clean, readable, and
- free of junk code (unused legacy code; by analogy with "junk DNA").
-
-* _`Usable` means that the code does what it claims to do. An "XYZ
- Writer" should produce reasonable XYZ.
-
-* _`Reasonably complete` means that the code must handle all input.
- Here "handle" means that no input can cause the code to fail (cause
- an exception, or silently and incorrectly produce nothing).
- "Reasonably complete" does not mean "finished" (no work left to be
- done). For example, a writer must handle every standard element
- from the Docutils document model; for unimplemented elements, it
- must *at the very least* warn that "Output for element X is not yet
- implemented in writer Y".
-
-If you really want to check code into the main source tree, you can,
-but you'll have to be prepared to work on it intensively and complete
-it quickly. People will start to use it and they will expect it to
-work! If there are any issues with your code, or if you only have
-time for gradual development, you should put it in the sandbox first.
-It's easy to move code over to the main source tree once it's closer
-to completion.
-
-
-Mailing Lists
--------------
-
-Developers should subscribe to the mailing lists:
-
-* The `Python Documentation Special Interest Group (Doc-SIG) mailing
- list`__ for high-level discussions on syntax, strategy, and design
- (email to Doc-SIG@python.org).
-* Docutils-develop__, for implementation discussions
- (email to docutils-develop@lists.sourceforge.net).
-* Docutils-checkins__, to monitor CVS checkin messages (automatically
- generated; normally read-only).
-
-__ http://mail.python.org/mailman/listinfo/doc-sig
-__ http://lists.sourceforge.net/lists/listinfo/docutils-develop
-__ http://lists.sourceforge.net/lists/listinfo/docutils-checkins
-
-
-The Sandbox
------------
-
-The `sandbox CVS directory`_ is a place to play around, to try out and
-share ideas. It's a part of the CVS repository but it isn't
-distributed as part of Docutils releases. Feel free to check in code
-to the CVS sandbox; that way people can try it out but you won't have
-to worry about it working 100% error-free, as is the goal of the `main
-source tree`_. Each developer who wants to play in the sandbox should
-create their own subdirectory (suggested name: SourceForge ID,
-nickname, or given name + family initial). It's OK to make a mess!
-But please, play nice.
-
-Please update the `sandbox README`_ file with links and a brief
-description of your work.
-
-In order to minimize the work necessary for others to install and try
-out new, experimental components, the following sandbox directory
-structure is recommended::
-
- sandbox/
- userid/
- component_name/ # A verbose name is best.
- README.txt # Please explain requirements,
- # purpose/goals, and usage.
- docs/
- ...
- component.py # The component is a single module.
- # *OR* (but *not* both)
- component/ # The component is a package.
- __init__.py # Contains the Reader/Writer class.
- other1.py # Other modules and data files used
- data.txt # by this component.
- ...
- test/ # Test suite.
- ...
- tools/ # For front ends etc.
- ...
- setup.py # Use Distutils to install the component
- # code and tools/ files into the right
- # places in Docutils.
-
-Some sandbox projects are destined to become Docutils components once
-completed. Others, such as add-ons to Docutils or applications of
-Docutils, graduate to become `parallel projects`_.
-
-.. _sandbox README: http://docutils.sf.net/sandbox/README.html
-
-
-.. _parallel project:
-
-Parallel Projects
------------------
-
-Parallel projects contain useful code that is not central to the
-functioning of Docutils. Examples are specialized add-ons or
-plug-ins, and applications of Docutils. They use Docutils, but
-Docutils does not require their presence to function.
-
-An official parallel project will have its own CVS directory beside
-(or parallel to) the main Docutils CVS directory. It can have its own
-web page in the docutils.sourceforge.net domain, its own file releases
-and downloadable CVS snapshots, and even a mailing list if that proves
-useful. However, an official parallel project has implications: it is
-expected to be maintained and continue to work with changes to the
-core Docutils.
-
-A parallel project requires a project leader, who must commit to
-coordinate and maintain the implementation:
-
-* Answer questions from users and developers.
-* Review suggestions, bug reports, and patches.
-* Monitor changes and ensure the quality of the code and
- documentation.
-* Coordinate with Docutils to ensure interoperability.
-* Put together official project releases.
-
-Of course, related projects may be created independently of Docutils.
-The advantage of a parallel project is that the SourceForge
-environment and the developer and user communities are already
-established. Core Docutils developers are available for consultation
-and may contribute to the parallel project. It's easier to keep the
-projects in sync when there are changes made to the core Docutils
-code.
-
-
-Release Procedure
-=================
-
-1. Edit the version number in the following files:
-
- * docutils:
-
- - setup.py
- - HISTORY.txt
- - docutils/__init__.py
-
- * web: index.txt
-
-2. Run the test suite: ``cd test ; alltests.py``.
-
-3. Isolate from outside influence:
-
- (a) Remove the old installation from site-packages (including
- roman.py, and optparse.py, textwrap.py for pre-2.3
- installations).
-
- (b) Clear/unset the PYTHONPATH environment variable.
-
-4. Create the release tarball:
-
- (a) Create a new empty directory and ``cd`` into it.
-
- (b) Get a clean snapshot of the CVS files::
-
- cvs -z3 -d:pserver:anonymous@cvs.sf.net:/cvsroot/docutils \
- export -rHEAD docutils
-
- (c) Use Distutils to create the release tarball::
-
- cd docutils
- python setup.py sdist
-
-5. Expand and install the release tarball **in isolation** (as per
- step 3 above):
-
- (a) Expand the tarball in a new location, not over any existing
- files.
-
- (b) Install from expanded directory::
-
- cd docutils-X.Y
- python setup.py install
-
- The "install" command may require root permissions.
-
-6. Run the test suite from the expanded archive directory: ``cd test ;
- alltests.py``.
-
-7. Run ``cd tools ; buildhtml.py ..`` to confirm that there are no
- unexpected issues with the docs.
-
-8. Upload the release tarball::
-
- $ ftp upload.sourceforge.net
- Connected to osdn.dl.sourceforge.net.
- ...
- Name (upload.sourceforge.net:david): anonymous
- 331 Anonymous login ok, send your complete e-mail address as password.
- Password:
- ...
- 230 Anonymous access granted, restrictions apply.
- ftp> bin
- 200 Type set to I.
- ftp> cd /incoming
- 250 CWD command successful.
- ftp> put filename
-
-9. Log in to the SourceForge web interface.
-
-10. Access the file release system on SourceForge (Admin interface).
- Fill in the fields:
-
- :Package ID: docutils
- :Release Name: <use release number only, e.g. 0.3>
- :Release Date: <today's date>
- :Status: Active
- :File Name: <select the file just uploaded>
- :File Type: Source .gz
- :Processor Type: Platform-Independent
- :Release Notes: <insert README.txt file here>
- :Change Log: <insert summary from announcement>
-
- Also check the "Preserve my pre-formatted text" box.
-
-11. Wait up to 30 minutes for the file to become available on
- SourceForge.
-
-12. Download the release tarball and verify its integrity by walking
- through an installation, as outlined above (steps 5, 6, & 7).
-
-13. Add a SourceForge News item, with title "Docutils 0.x released"
- and containing the release tarball's download URL.
-
-14. Send announcement email to:
-
- * docutils-develop@lists.sourceforge.net
- * docutils-users@lists.sourceforge.net
- * doc-sig@python.org
- * python-list@python.org
- * python-announce@python.org
-
-15. Register
-
- (a) with PyPI (Fill in details. ``python setup.py register``?
- How to log in?)
- (b) with Vaults of Parnassus
- (c) with FreshMeat?
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/howto/i18n.txt b/docutils/docs/howto/i18n.txt
deleted file mode 100644
index 11a8d13bd..000000000
--- a/docutils/docs/howto/i18n.txt
+++ /dev/null
@@ -1,178 +0,0 @@
-================================
- Docutils_ Internationalization
-================================
-
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Date: $Date$
-:Revision: $Revision$
-:Copyright: This document has been placed in the public domain.
-
-
-.. contents::
-
-
-This document describes the internationalization facilities of the
-Docutils_ project. `Introduction to i18n`_ by Tomohiro KUBOTA is a
-good general reference. "Internationalization" is often abbreviated
-as "i18n": "i" + 18 letters + "n".
-
-.. Note::
-
- The i18n facilities of Docutils should be considered a "first
- draft". They work so far, but improvements are welcome.
- Specifically, standard i18n facilities like "gettext" have yet to
- be explored.
-
-Docutils is designed to work flexibly with text in multiple languages
-(one language at a time). Language-specific features are (or should
-be [#]_) fully parameterized. To enable a new language, two modules
-have to be added to the project: one for Docutils itself (the
-`Docutils Language Module`_) and one for the reStructuredText parser
-(the `reStructuredText Language Module`_).
-
-.. [#] If anything in Docutils is insufficiently parameterized, it
- should be considered a bug. Please report bugs to the Docutils
- project bug tracker on SourceForge at
- http://sourceforge.net/tracker/?group_id=38414&atid=422030.
-
-.. _Docutils: http://docutils.sourceforge.net/
-.. _Introduction to i18n:
- http://www.debian.org/doc/manuals/intro-i18n/
-
-
-Language Module Names
-=====================
-
-Language modules are named using a case-insensitive language
-identifier as defined in `RFC 1766`_. A typical language identifier
-consists of a 2-letter language code from `ISO 639`_ (3-letter codes
-can be used if no 2-letter code exists; RFC 1766 is currently being
-revised to allow 3-letter codes). The language identifier can have an
-optional subtag, typically for variations based on country (from `ISO
-3166`_ 2-letter country codes). If no language identifier is
-specified, the default is "en" for English. Examples of module names
-include ``en.py``, ``fr.py``, ``ja.py``, and ``pt-br.py``.
-
-.. _RFC 1766: http://www.faqs.org/rfcs/rfc1766.html
-.. _ISO 639: http://lcweb.loc.gov/standards/iso639-2/englangn.html
-.. _ISO 3166: http://www.iso.ch/iso/en/prods-services/iso3166ma/
- 02iso-3166-code-lists/index.html
-
-
-Python Code
-===========
-
-All Python code in Docutils will be ASCII-only. In language modules,
-Unicode-escapes will have to be used for non-ASCII characters.
-Although it may be possible for some developers to store non-ASCII
-characters directly in strings, it will cause problems for other
-developers whose locales are set up differently.
-
-`PEP 263`_ introduces source code encodings to Python modules,
-implemented beginning in Python 2.3. Until PEP 263 is fully
-implemented as a well-established convention, proven robust in daily
-use, and the tools (editors, CVS, email, etc.) recognize this
-convention, Docutils shall remain conservative.
-
-As mentioned in the note above, developers are invited to explore
-"gettext" and other i18n technologies.
-
-.. _PEP 263: http://www.python.org/peps/pep-0263.html
-
-
-Docutils Language Module
-========================
-
-Modules in ``docutils/languages`` contain language mappings for
-markup-independent language-specific features of Docutils. To make a
-new language module, just copy the ``en.py`` file, rename it with the
-code for your language (see `Language Module Names`_ above), and
-translate the terms as described below.
-
-Each Docutils language module contains three module attributes:
-
-``labels``
- This is a mapping of node class names to language-dependent
- boilerplate label text. The label text is used by Writer
- components when they encounter document tree elements whose class
- names are the mapping keys.
-
- The entry values (*not* the keys) should be translated to the
- target language.
-
-``bibliographic_fields``
- This is a mapping of language-dependent field names (converted to
- lower case) to canonical field names (keys of
- ``DocInfo.biblio_notes`` in ``docutils.transforms.frontmatter``).
- It is used when transforming bibliographic fields.
-
- The keys should be translated to the target language.
-
-``author_separators``
- This is a list of strings used to parse the 'Authors'
- bibliographic field. They separate individual authors' names, and
- are tried in order (i.e., earlier items take priority, and the
- first item that matches wins). The English-language module
- defines them as ``[';', ',']``; semi-colons can be used to
- separate names like "Arthur Pewtie, Esq.".
-
- Most languages won't have to "translate" this list.
-
-
-reStructuredText Language Module
-================================
-
-Modules in ``docutils/parsers/rst/languages`` contain language
-mappings for language-specific features of the reStructuredText
-parser. To make a new language module, just copy the ``en.py`` file,
-rename it with the code for your language (see `Language Module
-Names`_ above), and translate the terms as described below.
-
-Each reStructuredText language module contains just one module
-attribute:
-
-``directives``
- This is a mapping from language-dependent directive names to
- canonical directive names. The canonical directive names are
- registered in ``docutils/parsers/rst/directives/__init__.py``, in
- ``_directive_registry``.
-
- The keys should be translated to the target language. Synonyms
- (multiple keys with the same values) are allowed; this is useful
- for abbreviations.
-
-``roles``
- This is a mapping language-dependent role names to canonical role
- names for interpreted text. The canonical directive names are
- registered in ``docutils/parsers/rst/states.py``, in
- ``Inliner._interpreted_roles`` (this may change).
-
- The keys should be translated to the target language. Synonyms
- (multiple keys with the same values) are allowed; this is useful
- for abbreviations.
-
-
-Testing the Language Modules
-============================
-
-Whenever a new language module is added or an existing one modified,
-the unit tests should be run. The test modules can be found in the
-docutils/test directory from CVS_ or from the `latest CVS snapshot`_.
-
-The ``test_language.py`` module can be run as a script. With no
-arguments, it will test all language modules. With one or more
-language codes, it will test just those languages. For example::
-
- $ python test_language.py en
- ..
- ----------------------------------------
- Ran 2 tests in 0.095s
-
- OK
-
-Use the "alltests.py" script to run all test modules, exhaustively
-testing the parser and other parts of the Docutils system.
-
-.. _CVS: http://sourceforge.net/cvs/?group_id=38414
-.. _latest CVS snapshot: http://docutils.sf.net/docutils-snapshot.tgz
diff --git a/docutils/docs/howto/rst-directives.txt b/docutils/docs/howto/rst-directives.txt
deleted file mode 100644
index 377ca31ad..000000000
--- a/docutils/docs/howto/rst-directives.txt
+++ /dev/null
@@ -1,348 +0,0 @@
-======================================
- Creating reStructuredText Directives
-======================================
-
-:Authors: Dethe Elza, David Goodger
-:Contact: delza@enfoldingsystems.com
-:Date: $Date$
-:Revision: $Revision$
-:Copyright: This document has been placed in the public domain.
-
-Directives are the primary extension mechanism of reStructuredText.
-This document aims to make the creation of new directives as easy and
-understandable as possible. There are only a couple of
-reStructuredText-specific features the developer needs to know to
-create a basic directive.
-
-The syntax of directives is detailed in the `reStructuredText Markup
-Specification`_, and standard directives are described in
-`reStructuredText Directives`_.
-
-.. _reStructuredText Markup Specification:
- ../rst/reStructuredText.html#directives
-.. _reStructuredText Directives: ../rst/directives.html
-
-
-.. contents:: Table of Contents
-
-
-Define the Directive Function
-=============================
-
-The directive function does any processing that the directive
-requires. This may require the use of other parts of the
-reStructuredText parser. This is where the directive actually *does*
-something.
-
-The directive implementation itself is a callback function whose
-signature is as follows::
-
- def directive_fn(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- code...
-
- # Set function attributes:
- directive_fn.arguments = ...
- directive_fn.options = ...
- direcitve_fn.content = ...
-
-Function attributes are described below (see `Specify Directive
-Arguments, Options, and Content`_). The directive function parameters
-are as follows:
-
-- ``name`` is the directive type or name.
-
-- ``arguments`` is a list of positional arguments, as specified in the
- ``arguments`` function attribute.
-
-- ``options`` is a dictionary mapping option names to values. The
- options handled by a directive function are specified in the
- ``options`` function attribute.
-
-- ``content`` is a list of strings, the directive content. Use the
- ``content`` function attribute to allow directive content.
-
-- ``lineno`` is the line number of the first line of the directive.
-
-- ``content_offset`` is the line offset of the first line of the
- content from the beginning of the current input. Used when
- initiating a nested parse.
-
-- ``block_text`` is a string containing the entire directive. Include
- it as the content of a literal block in a system message if there is
- a problem.
-
-- ``state`` is the state which called the directive function.
-
-- ``state_machine`` is the state machine which controls the state
- which called the directive function.
-
-Directive functions return a list of nodes which will be inserted into
-the document tree at the point where the directive was encountered.
-This can be an empty list if there is nothing to insert. Directives
-have no corresponding element; choose the most appropriate elements
-from the existing Docutils elements. See `The Docutils Document
-Tree`_ and the ``docutils.nodes`` module.
-
-.. _The Docutils Document Tree: ../doctree.html
-
-
-Specify Directive Arguments, Options, and Content
-=================================================
-
-Function attributes are interpreted by the directive parser (the
-``docutils.parsers.rst.states.Body.parse_directive()`` method). If
-unspecified, directive function attributes are assumed to have the
-value ``None``. Three directive function attributes are recognized:
-
-- ``arguments``: A 3-tuple specifying the expected positional
- arguments, or ``None`` if the directive has no arguments. The 3
- items in the tuple are:
-
- 1. The number of required arguments.
- 2. The number of optional arguments.
- 3. A boolean, indicating if the final argument may contain whitespace.
-
- Arguments are normally single whitespace-separated words. The final
- argument may contain whitespace when indicated by the value 1 (True)
- for the third item in the argument spec tuple. In this case, the
- final argument in the ``arguments`` parameter to the directive
- function will contain spaces and/or newlines, preserved from the
- input text.
-
- If the form of the arguments is more complex, specify only one
- argument (either required or optional) and indicate that final
- whitespace is OK (1/True); the client code must do any
- context-sensitive parsing.
-
-- ``options``: The option specification. ``None`` or an empty dict
- implies no options to parse.
-
- An option specification must be defined detailing the options
- available to the directive. An option spec is a mapping of option
- name to conversion function; conversion functions are applied to
- each option value to check validity and convert them to the expected
- type. Python's built-in conversion functions are often usable for
- this, such as ``int``, ``float``, and ``bool`` (included in Python
- from version 2.2.1). Other useful conversion functions are included
- in the ``docutils.parsers.rst.directives`` package (in the
- ``__init__.py`` module):
-
- - ``flag``: For options with no option arguments. Checks for an
- argument (raises ``ValueError`` if found), returns ``None`` for
- valid flag options.
-
- - ``unchanged``: Returns the argument, unchanged. Raises
- ``ValueError`` if no argument is found.
-
- - ``path``: Returns the path argument unwrapped (with newlines
- removed). Raises ``ValueError`` if no argument is found or if the
- path contains internal whitespace.
-
- - ``nonnegative_int``: Checks for a nonnegative integer argument,
- and raises ``ValueError`` if not.
-
- A further utility function, ``choice``, is supplied to enable
- options whose argument must be a member of a finite set of possible
- values. A custom conversion function must be written to use it.
- For example::
-
- from docutils.parsers.rst import directives
-
- def yesno(argument):
- return directives.choice(argument, ('yes', 'no'))
-
- For example, here is an option spec for a directive which allows two
- options, "name" and "value", each with an option argument::
-
- directive_fn.options = {'name': unchanged, 'value': int}
-
-- ``content``: A boolean; true if content is allowed. Directive
- functions must handle the case where content is required but not
- present in the input text (an empty content list will be supplied).
-
-The final step of the ``parse_directive()`` method is to call the
-directive function itself.
-
-
-Register the Directive
-======================
-
-Register the new directive in
-``docutils/parsers/rst/directives/__init__.py``, in the
-``_directive_registry`` dictionary. This allows the reStructuredText
-parser to find and use the directive.
-
-Add an entry to ``docutils/parsers/rst/languages/en.py`` for the
-directive, mapping the English name to the canonical name (both
-lowercase). Usually the English name and the canonical name are the
-same.
-
-Please check for and update any other language modules for languages
-in which you are proficient.
-
-
-Examples
-========
-
-For the most direct and accurate information, "Use the Source, Luke!".
-All standard directives are documented in `reStructuredText
-Directives`_, and the source code implementing them is located in the
-``docutils/parsers/rst/directives`` package. The ``__init__.py``
-module contains a mapping of directive name to module & function name.
-Several representative directives are described below.
-
-
-Admonitions
------------
-
-Admonition directives, such as "note" and "caution", are quite simple.
-They have no directive arguments or options. Admonition directive
-content is interpreted as ordinary reStructuredText. The directive
-function simply hands off control to a generic directive function::
-
- def note(*args):
- return admonition(nodes.note, *args)
-
- attention.content = 1
-
-Note that the only thing distinguishing the various admonition
-directives is the element (node class) generated. In the code above,
-the node class is passed as the first argument to the generic
-directive function, where the actual processing takes place::
-
- def admonition(node_class, name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- text = '\n'.join(content)
- admonition_node = node_class(text)
- if text:
- state.nested_parse(content, content_offset, admonition_node)
- return [admonition_node]
- else:
- warning = state_machine.reporter.warning(
- 'The "%s" admonition is empty; content required.'
- % (name), '',
- nodes.literal_block(block_text, block_text), line=lineno)
- return [warning]
-
-Three things are noteworthy in the function above:
-
-1. The ``admonition_node = node_class(text)`` line creates the wrapper
- element, using the class passed in from the initial (stub)
- directive function.
-
-2. The call to ``state.nested_parse()`` is what does the actual
- processing. It parses the directive content and adds any generated
- elements as child elements of ``admonition_node``.
-
-3. If there was no directive content, a warning is generated and
- returned. The call to ``state_machine.reporter.warning()``
- includes a literal block containing the entire directive text
- (``block_text``) and the line (``lineno``) of the top of the
- directive.
-
-
-"image"
--------
-
-The "image" directive is used to insert a picture into a document.
-This directive has one argument, the path to the image file, and
-supports several options. There is no directive content. Here's the
-image directive function::
-
- def image(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- reference = ''.join(arguments[0].split('\n'))
- if reference.find(' ') != -1:
- error = state_machine.reporter.error(
- 'Image URI contains whitespace.', '',
- nodes.literal_block(block_text, block_text),
- line=lineno)
- return [error]
- options['uri'] = reference
- image_node = nodes.image(block_text, **options)
- return [image_node]
-
- image.arguments = (1, 0, 1)
- image.options = {'alt': directives.unchanged,
- 'height': directives.nonnegative_int,
- 'width': directives.nonnegative_int,
- 'scale': directives.nonnegative_int,
- 'align': align}
-
-Several things are noteworthy in the code above:
-
-1. The "image" directive requires a single argument, which is allowed
- to contain whitespace (see the argument spec above,
- ``image.arguments = (1, 0, 1)``). This is to allow for long URLs
- which may span multiple lines. The first line of the ``image``
- function joins the URL, discarding any embedded newlines. Then the
- result is checked for embedded spaces, which are *not* allowed.
-
-2. The reference is added to the ``options`` dictionary under the
- "uri" key; this becomes an attribute of the ``nodes.image`` element
- object. Any other attributes have already been set explicitly in
- the source text.
-
-3. The "align" option depends on the following definitions (which
- actually occur earlier in the source code)::
-
- align_values = ('top', 'middle', 'bottom', 'left', 'center',
- 'right')
-
- def align(argument):
- return directives.choice(argument, align_values)
-
-
-"contents"
-----------
-
-The "contents" directive is used to insert an auto-generated table of
-contents (TOC) into a document. It takes one optional argument, a
-title for the TOC. If no title is specified, a default title is used
-instead. The directive also handles several options. Here's the
-code::
-
- def contents(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- """Table of contents."""
- if arguments:
- title_text = arguments[0]
- text_nodes, messages = state.inline_text(title_text, lineno)
- title = nodes.title(title_text, '', *text_nodes)
- else:
- messages = []
- title = None
- pending = nodes.pending(parts.Contents, {'title': title},
- block_text)
- pending.details.update(options)
- state_machine.document.note_pending(pending)
- return [pending] + messages
-
- contents.arguments = (0, 1, 1)
- contents.options = {'depth': directives.nonnegative_int,
- 'local': directives.flag,
- 'backlinks': backlinks}
-
-Aspects of note include:
-
-1. The ``contents.arguments = (0, 1, 1)`` function attribute specifies
- a single, *optional* argument. If no argument is present, the
- ``arguments`` parameter to the directive function will be an empty
- list.
-
-2. If an argument *is* present, its text is passed to
- ``state.inline_text()`` for parsing. Titles may contain inline
- markup, such as emphasis or inline literals.
-
-3. The table of contents is not generated right away. Typically, a
- TOC is placed near the beginning of a document, and is a summary or
- outline of the section structure of the document. The entire
- document must already be processed before a summary can be made.
- This directive leaves a ``nodes.pending`` placeholder element in
- the document tree, marking the position of the TOC and including a
- ``details`` internal attribute containing all the directive
- options, effectively communicating the options forward. The actual
- table of contents processing is performed by a transform,
- ``docutils.transforms.parts.Contents``, after the rest of the
- document has been parsed.
diff --git a/docutils/docs/peps/pep-0256.txt b/docutils/docs/peps/pep-0256.txt
deleted file mode 100644
index bad386391..000000000
--- a/docutils/docs/peps/pep-0256.txt
+++ /dev/null
@@ -1,299 +0,0 @@
-PEP: 256
-Title: Docstring Processing System Framework
-Version: $Revision$
-Last-Modified: $Date$
-Author: David Goodger <goodger@users.sourceforge.net>
-Discussions-To: <doc-sig@python.org>
-Status: Draft
-Type: Standards Track
-Content-Type: text/x-rst
-Created: 01-Jun-2001
-Post-History: 13-Jun-2001
-
-
-Abstract
-========
-
-Python lends itself to inline documentation. With its built-in
-docstring syntax, a limited form of `Literate Programming`_ is easy to
-do in Python. However, there are no satisfactory standard tools for
-extracting and processing Python docstrings. The lack of a standard
-toolset is a significant gap in Python's infrastructure; this PEP aims
-to fill the gap.
-
-The issues surrounding docstring processing have been contentious and
-difficult to resolve. This PEP proposes a generic Docstring
-Processing System (DPS) framework, which separates out the components
-(program and conceptual), enabling the resolution of individual issues
-either through consensus (one solution) or through divergence (many).
-It promotes standard interfaces which will allow a variety of plug-in
-components (input context readers, markup parsers, and output format
-writers) to be used.
-
-The concepts of a DPS framework are presented independently of
-implementation details.
-
-
-Road Map to the Docstring PEPs
-==============================
-
-There are many aspects to docstring processing. The "Docstring PEPs"
-have broken up the issues in order to deal with each of them in
-isolation, or as close as possible. The individual aspects and
-associated PEPs are as follows:
-
-* Docstring syntax. PEP 287, "reStructuredText Docstring Format"
- [#PEP-287]_, proposes a syntax for Python docstrings, PEPs, and
- other uses.
-
-* Docstring semantics consist of at least two aspects:
-
- - Conventions: the high-level structure of docstrings. Dealt with
- in PEP 257, "Docstring Conventions" [#PEP-257]_.
-
- - Methodology: rules for the informational content of docstrings.
- Not addressed.
-
-* Processing mechanisms. This PEP (PEP 256) outlines the high-level
- issues and specification of an abstract docstring processing system
- (DPS). PEP 258, "Docutils Design Specification" [#PEP-258]_, is an
- overview of the design and implementation of one DPS under
- development.
-
-* Output styles: developers want the documentation generated from
- their source code to look good, and there are many different ideas
- about what that means. PEP 258 touches on "Stylist Transforms".
- This aspect of docstring processing has yet to be fully explored.
-
-By separating out the issues, we can form consensus more easily
-(smaller fights ;-), and accept divergence more readily.
-
-
-Rationale
-=========
-
-There are standard inline documentation systems for some other
-languages. For example, Perl has POD_ ("Plain Old Documentation") and
-Java has Javadoc_, but neither of these mesh with the Pythonic way.
-POD syntax is very explicit, but takes after Perl in terms of
-readability. Javadoc is HTML-centric; except for "``@field``" tags,
-raw HTML is used for markup. There are also general tools such as
-Autoduck_ and Web_ (Tangle & Weave), useful for multiple languages.
-
-There have been many attempts to write auto-documentation systems
-for Python (not an exhaustive list):
-
-- Marc-Andre Lemburg's doc.py_
-
-- Daniel Larsson's pythondoc_ & gendoc_
-
-- Doug Hellmann's HappyDoc_
-
-- Laurence Tratt's Crystal_
-
-- Ka-Ping Yee's pydoc_ (pydoc.py is now part of the Python standard
- library; see below)
-
-- Tony Ibbs' docutils_ (Tony has donated this name to the `Docutils
- project`_)
-
-- Edward Loper's STminus_ formalization and related efforts
-
-These systems, each with different goals, have had varying degrees of
-success. A problem with many of the above systems was over-ambition
-combined with inflexibility. They provided a self-contained set of
-components: a docstring extraction system, a markup parser, an
-internal processing system and one or more output format writers with
-a fixed style. Inevitably, one or more aspects of each system had
-serious shortcomings, and they were not easily extended or modified,
-preventing them from being adopted as standard tools.
-
-It has become clear (to this author, at least) that the "all or
-nothing" approach cannot succeed, since no monolithic self-contained
-system could possibly be agreed upon by all interested parties. A
-modular component approach designed for extension, where components
-may be multiply implemented, may be the only chance for success.
-Standard inter-component APIs will make the DPS components
-comprehensible without requiring detailed knowledge of the whole,
-lowering the barrier for contributions, and ultimately resulting in a
-rich and varied system.
-
-Each of the components of a docstring processing system should be
-developed independently. A "best of breed" system should be chosen,
-either merged from existing systems, and/or developed anew. This
-system should be included in Python's standard library.
-
-
-PyDoc & Other Existing Systems
-------------------------------
-
-PyDoc became part of the Python standard library as of release 2.1.
-It extracts and displays docstrings from within the Python interactive
-interpreter, from the shell command line, and from a GUI window into a
-web browser (HTML). Although a very useful tool, PyDoc has several
-deficiencies, including:
-
-- In the case of the GUI/HTML, except for some heuristic hyperlinking
- of identifier names, no formatting of the docstrings is done. They
- are presented within ``<p><small><tt>`` tags to avoid unwanted line
- wrapping. Unfortunately, the result is not attractive.
-
-- PyDoc extracts docstrings and structural information (class
- identifiers, method signatures, etc.) from imported module objects.
- There are security issues involved with importing untrusted code.
- Also, information from the source is lost when importing, such as
- comments, "additional docstrings" (string literals in non-docstring
- contexts; see PEP 258 [#PEP-258]_), and the order of definitions.
-
-The functionality proposed in this PEP could be added to or used by
-PyDoc when serving HTML pages. The proposed docstring processing
-system's functionality is much more than PyDoc needs in its current
-form. Either an independent tool will be developed (which PyDoc may
-or may not use), or PyDoc could be expanded to encompass this
-functionality and *become* the docstring processing system (or one
-such system). That decision is beyond the scope of this PEP.
-
-Similarly for other existing docstring processing systems, their
-authors may or may not choose compatibility with this framework.
-However, if this framework is accepted and adopted as the Python
-standard, compatibility will become an important consideration in
-these systems' future.
-
-
-Specification
-=============
-
-The docstring processing system framework is broken up as follows:
-
-1. Docstring conventions. Documents issues such as:
-
- - What should be documented where.
-
- - First line is a one-line synopsis.
-
- PEP 257 [#PEP-257]_ documents some of these issues.
-
-2. Docstring processing system design specification. Documents
- issues such as:
-
- - High-level spec: what a DPS does.
-
- - Command-line interface for executable script.
-
- - System Python API.
-
- - Docstring extraction rules.
-
- - Readers, which encapsulate the input context.
-
- - Parsers.
-
- - Document tree: the intermediate internal data structure. The
- output of the Parser and Reader, and the input to the Writer all
- share the same data structure.
-
- - Transforms, which modify the document tree.
-
- - Writers for output formats.
-
- - Distributors, which handle output management (one file, many
- files, or objects in memory).
-
- These issues are applicable to any docstring processing system
- implementation. PEP 258 [#PEP-258]_ documents these issues.
-
-3. Docstring processing system implementation.
-
-4. Input markup specifications: docstring syntax. PEP 287 [#PEP-287]_
- proposes a standard syntax.
-
-5. Input parser implementations.
-
-6. Input context readers ("modes": Python source code, PEP, standalone
- text file, email, etc.) and implementations.
-
-7. Stylists: certain input context readers may have associated
- stylists which allow for a variety of output document styles.
-
-8. Output formats (HTML, XML, TeX, DocBook, info, etc.) and writer
- implementations.
-
-Components 1, 2/3/5, and 4 are the subject of individual companion
-PEPs. If there is another implementation of the framework or
-syntax/parser, additional PEPs may be required. Multiple
-implementations of each of components 6 and 7 will be required; the
-PEP mechanism may be overkill for these components.
-
-
-Project Web Site
-================
-
-A SourceForge project has been set up for this work at
-http://docutils.sourceforge.net/.
-
-
-References and Footnotes
-========================
-
-.. [#PEP-287] PEP 287, reStructuredText Docstring Format, Goodger
- (http://www.python.org/peps/pep-0287.html)
-
-.. [#PEP-257] PEP 257, Docstring Conventions, Goodger, Van Rossum
- (http://www.python.org/peps/pep-0257.html)
-
-.. [#PEP-258] PEP 258, Docutils Design Specification, Goodger
- (http://www.python.org/peps/pep-0258.html)
-
-.. _Literate Programming: http://www.literateprogramming.com/
-
-.. _POD: http://www.perldoc.com/perl5.6/pod/perlpod.html
-
-.. _Javadoc: http://java.sun.com/j2se/javadoc/
-
-.. _Autoduck:
- http://www.helpmaster.com/hlp-developmentaids-autoduck.htm
-
-.. _Web: http://www-cs-faculty.stanford.edu/~knuth/cweb.html
-
-.. _doc.py:
- http://www.lemburg.com/files/python/SoftwareDescriptions.html#doc.py
-
-.. _pythondoc:
-.. _gendoc: http://starship.python.net/crew/danilo/pythondoc/
-
-.. _HappyDoc: http://happydoc.sourceforge.net/
-
-.. _Crystal: http://www.btinternet.com/~tratt/comp/python/crystal/
-
-.. _pydoc: http://www.python.org/doc/current/lib/module-pydoc.html
-
-.. _docutils: http://homepage.ntlworld.com/tibsnjoan/docutils/
-
-.. _Docutils project: http://docutils.sourceforge.net/
-
-.. _STMinus: http://www.cis.upenn.edu/~edloper/pydoc/
-
-.. _Python Doc-SIG: http://www.python.org/sigs/doc-sig/
-
-
-Copyright
-=========
-
-This document has been placed in the public domain.
-
-
-Acknowledgements
-================
-
-This document borrows ideas from the archives of the `Python
-Doc-SIG`_. Thanks to all members past & present.
-
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/peps/pep-0257.txt b/docutils/docs/peps/pep-0257.txt
deleted file mode 100644
index 23094c56a..000000000
--- a/docutils/docs/peps/pep-0257.txt
+++ /dev/null
@@ -1,328 +0,0 @@
-PEP: 257
-Title: Docstring Conventions
-Version: $Revision$
-Last-Modified: $Date$
-Author: David Goodger <goodger@users.sourceforge.net>,
- Guido van Rossum <guido@python.org>
-Discussions-To: doc-sig@python.org
-Status: Active
-Type: Informational
-Content-Type: text/x-rst
-Created: 29-May-2001
-Post-History: 13-Jun-2001
-
-
-Abstract
-========
-
-This PEP documents the semantics and conventions associated with
-Python docstrings.
-
-
-Rationale
-=========
-
-The aim of this PEP is to standardize the high-level structure of
-docstrings: what they should contain, and how to say it (without
-touching on any markup syntax within docstrings). The PEP contains
-conventions, not laws or syntax.
-
- "A universal convention supplies all of maintainability, clarity,
- consistency, and a foundation for good programming habits too.
- What it doesn't do is insist that you follow it against your will.
- That's Python!"
-
- -- Tim Peters on comp.lang.python, 2001-06-16
-
-If you violate these conventions, the worst you'll get is some dirty
-looks. But some software (such as the Docutils_ docstring processing
-system [1]_ [2]_) will be aware of the conventions, so following them
-will get you the best results.
-
-
-Specification
-=============
-
-What is a Docstring?
---------------------
-
-A docstring is a string literal that occurs as the first statement in
-a module, function, class, or method definition. Such a docstring
-becomes the ``__doc__`` special attribute of that object.
-
-All modules should normally have docstrings, and all functions and
-classes exported by a module should also have docstrings. Public
-methods (including the ``__init__`` constructor) should also have
-docstrings. A package may be documented in the module docstring of
-the ``__init__.py`` file in the package directory.
-
-String literals occurring elsewhere in Python code may also act as
-documentation. They are not recognized by the Python bytecode
-compiler and are not accessible as runtime object attributes (i.e. not
-assigned to ``__doc__``), but two types of extra docstrings may be
-extracted by software tools:
-
-1. String literals occurring immediately after a simple assignment at
- the top level of a module, class, or ``__init__`` method are called
- "attribute docstrings".
-
-2. String literals occurring immediately after another docstring are
- called "additional docstrings".
-
-Please see PEP 258, "Docutils Design Specification" [2]_, for a
-detailed description of attribute and additional docstrings.
-
-XXX Mention docstrings of 2.2 properties.
-
-For consistency, always use ``"""triple double quotes"""`` around
-docstrings. Use ``r"""raw triple double quotes"""`` if you use any
-backslashes in your docstrings. For Unicode docstrings, use
-``u"""Unicode triple-quoted strings"""``.
-
-There are two forms of docstrings: one-liners and multi-line
-docstrings.
-
-
-One-line Docstrings
---------------------
-
-One-liners are for really obvious cases. They should really fit on
-one line. For example::
-
- def kos_root():
- """Return the pathname of the KOS root directory."""
- global _kos_root
- if _kos_root: return _kos_root
- ...
-
-Notes:
-
-- Triple quotes are used even though the string fits on one line.
- This makes it easy to later expand it.
-
-- The closing quotes are on the same line as the opening quotes. This
- looks better for one-liners.
-
-- There's no blank line either before or after the docstring.
-
-- The docstring is a phrase ending in a period. It prescribes the
- function or method's effect as a command ("Do this", "Return that"),
- not as a description; e.g. don't write "Returns the pathname ...".
-
-- The one-line docstring should NOT be a "signature" reiterating the
- function/method parameters (which can be obtained by introspection).
- Don't do::
-
- def function(a, b):
- """function(a, b) -> list"""
-
- This type of docstring is only appropriate for C functions (such as
- built-ins), where introspection is not possible. However, the
- nature of the *return value* cannot be determined by introspection,
- so it should be mentioned. The preferred form for such a docstring
- would be something like::
-
- def function(a, b):
- """Do X and return a list."""
-
- (Of course "Do X" should be replaced by a useful description!)
-
-
-Multi-line Docstrings
-----------------------
-
-Multi-line docstrings consist of a summary line just like a one-line
-docstring, followed by a blank line, followed by a more elaborate
-description. The summary line may be used by automatic indexing
-tools; it is important that it fits on one line and is separated from
-the rest of the docstring by a blank line. The summary line may be on
-the same line as the opening quotes or on the next line. The entire
-docstring is indented the same as the quotes at its first line (see
-example below).
-
-Insert a blank line before and after all docstrings (one-line or
-multi-line) that document a class -- generally speaking, the class's
-methods are separated from each other by a single blank line, and the
-docstring needs to be offset from the first method by a blank line;
-for symmetry, put a blank line between the class header and the
-docstring. Docstrings documenting functions or methods generally
-don't have this requirement, unless the function or method's body is
-written as a number of blank-line separated sections -- in this case,
-treat the docstring as another section, and precede it with a blank
-line.
-
-The docstring of a script (a stand-alone program) should be usable as
-its "usage" message, printed when the script is invoked with incorrect
-or missing arguments (or perhaps with a "-h" option, for "help").
-Such a docstring should document the script's function and command
-line syntax, environment variables, and files. Usage messages can be
-fairly elaborate (several screens full) and should be sufficient for a
-new user to use the command properly, as well as a complete quick
-reference to all options and arguments for the sophisticated user.
-
-The docstring for a module should generally list the classes,
-exceptions and functions (and any other objects) that are exported by
-the module, with a one-line summary of each. (These summaries
-generally give less detail than the summary line in the object's
-docstring.) The docstring for a package (i.e., the docstring of the
-package's ``__init__.py`` module) should also list the modules and
-subpackages exported by the package.
-
-The docstring for a function or method should summarize its behavior
-and document its arguments, return value(s), side effects, exceptions
-raised, and restrictions on when it can be called (all if applicable).
-Optional arguments should be indicated. It should be documented
-whether keyword arguments are part of the interface.
-
-The docstring for a class should summarize its behavior and list the
-public methods and instance variables. If the class is intended to be
-subclassed, and has an additional interface for subclasses, this
-interface should be listed separately (in the docstring). The class
-constructor should be documented in the docstring for its ``__init__``
-method. Individual methods should be documented by their own
-docstring.
-
-If a class subclasses another class and its behavior is mostly
-inherited from that class, its docstring should mention this and
-summarize the differences. Use the verb "override" to indicate that a
-subclass method replaces a superclass method and does not call the
-superclass method; use the verb "extend" to indicate that a subclass
-method calls the superclass method (in addition to its own behavior).
-
-*Do not* use the Emacs convention of mentioning the arguments of
-functions or methods in upper case in running text. Python is case
-sensitive and the argument names can be used for keyword arguments, so
-the docstring should document the correct argument names. It is best
-to list each argument on a separate line. For example::
-
- def complex(real=0.0, imag=0.0):
- """Form a complex number.
-
- Keyword arguments:
- real -- the real part (default 0.0)
- imag -- the imaginary part (default 0.0)
-
- """
- if imag == 0.0 and real == 0.0: return complex_zero
- ...
-
-The BDFL [3]_ recommends inserting a blank line between the last
-paragraph in a multi-line docstring and its closing quotes, placing
-the closing quotes on a line by themselves. This way, Emacs'
-``fill-paragraph`` command can be used on it.
-
-
-Handling Docstring Indentation
-------------------------------
-
-Docstring processing tools will strip a uniform amount of indentation
-from the second and further lines of the docstring, equal to the
-minimum indentation of all non-blank lines after the first line. Any
-indentation in the first line of the docstring (i.e., up to the first
-newline) is insignificant and removed. Relative indentation of later
-lines in the docstring is retained. Blank lines should be removed
-from the beginning and end of the docstring.
-
-Since code is much more precise than words, here is an implementation
-of the algorithm::
-
- def trim(docstring):
- if not docstring:
- return ''
- # Convert tabs to spaces (following the normal Python rules)
- # and split into a list of lines:
- lines = docstring.expandtabs().splitlines()
- # Determine minimum indentation (first line doesn't count):
- indent = sys.maxint
- for line in lines[1:]:
- stripped = line.lstrip()
- if stripped:
- indent = min(indent, len(line) - len(stripped))
- # Remove indentation (first line is special):
- trimmed = [lines[0].strip()]
- if indent < sys.maxint:
- for line in lines[1:]:
- trimmed.append(line[indent:].rstrip())
- # Strip off trailing and leading blank lines:
- while trimmed and not trimmed[-1]:
- trimmed.pop()
- while trimmed and not trimmed[0]:
- trimmed.pop(0)
- # Return a single string:
- return '\n'.join(trimmed)
-
-The docstring in this example contains two newline characters and is
-therefore 3 lines long. The first and last lines are blank::
-
- def foo():
- """
- This is the second line of the docstring.
- """
-
-To illustrate::
-
- >>> print repr(foo.__doc__)
- '\n This is the second line of the docstring.\n '
- >>> foo.__doc__.splitlines()
- ['', ' This is the second line of the docstring.', ' ']
- >>> trim(foo.__doc__)
- 'This is the second line of the docstring.'
-
-Once trimmed, these docstrings are equivalent::
-
- def foo():
- """A multi-line
- docstring.
- """
-
- def bar():
- """
- A multi-line
- docstring.
- """
-
-
-References and Footnotes
-========================
-
-.. [1] PEP 256, Docstring Processing System Framework, Goodger
- (http://www.python.org/peps/pep-0256.html)
-
-.. [2] PEP 258, Docutils Design Specification, Goodger
- (http://www.python.org/peps/pep-0258.html)
-
-.. [3] Guido van Rossum, Python's creator and Benevolent Dictator For
- Life.
-
-.. _Docutils: http://docutils.sourceforge.net/
-
-.. _Python Style Guide:
- http://www.python.org/doc/essays/styleguide.html
-
-.. _Doc-SIG: http://www.python.org/sigs/doc-sig/
-
-
-Copyright
-=========
-
-This document has been placed in the public domain.
-
-
-Acknowledgements
-================
-
-The "Specification" text comes mostly verbatim from the `Python Style
-Guide`_ essay by Guido van Rossum.
-
-This document borrows ideas from the archives of the Python Doc-SIG_.
-Thanks to all members past and present.
-
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- fill-column: 70
- sentence-end-double-space: t
- End:
diff --git a/docutils/docs/peps/pep-0258.txt b/docutils/docs/peps/pep-0258.txt
deleted file mode 100644
index 09bec5d88..000000000
--- a/docutils/docs/peps/pep-0258.txt
+++ /dev/null
@@ -1,999 +0,0 @@
-PEP: 258
-Title: Docutils Design Specification
-Version: $Revision$
-Last-Modified: $Date$
-Author: David Goodger <goodger@users.sourceforge.net>
-Discussions-To: <doc-sig@python.org>
-Status: Draft
-Type: Standards Track
-Content-Type: text/x-rst
-Requires: 256, 257
-Created: 31-May-2001
-Post-History: 13-Jun-2001
-
-
-==========
- Abstract
-==========
-
-This PEP documents design issues and implementation details for
-Docutils, a Python Docstring Processing System (DPS). The rationale
-and high-level concepts of a DPS are documented in PEP 256, "Docstring
-Processing System Framework" [#PEP-256]_. Also see PEP 256 for a
-"Road Map to the Docstring PEPs".
-
-Docutils is being designed modularly so that any of its components can
-be replaced easily. In addition, Docutils is not limited to the
-processing of Python docstrings; it processes standalone documents as
-well, in several contexts.
-
-No changes to the core Python language are required by this PEP. Its
-deliverables consist of a package for the standard library and its
-documentation.
-
-
-===============
- Specification
-===============
-
-Docutils Project Model
-======================
-
-Project components and data flow::
-
- +---------------------------+
- | Docutils: |
- | docutils.core.Publisher, |
- | docutils.core.publish_*() |
- +---------------------------+
- / | \
- / | \
- 1,3,5 / 6 | \ 7
- +--------+ +-------------+ +--------+
- | READER | ----> | TRANSFORMER | ====> | WRITER |
- +--------+ +-------------+ +--------+
- / \\ |
- / \\ |
- 2 / 4 \\ 8 |
- +-------+ +--------+ +--------+
- | INPUT | | PARSER | | OUTPUT |
- +-------+ +--------+ +--------+
-
-The numbers above each component indicate the path a document's data
-takes. Double-width lines between Reader & Parser and between
-Transformer & Writer indicate that data sent along these paths should
-be standard (pure & unextended) Docutils doc trees. Single-width
-lines signify that internal tree extensions or completely unrelated
-representations are possible, but they must be supported at both ends.
-
-
-Publisher
----------
-
-The ``docutils.core`` module contains a "Publisher" facade class and
-several convenience functions: "publish_cmdline()" (for command-line
-front ends), "publish_file()" (for programmatic use with file-like
-I/O), and "publish_string()" (for programmatic use with string I/O).
-The Publisher class encapsulates the high-level logic of a Docutils
-system. The Publisher class has overall responsibility for
-processing, controlled by the ``Publisher.publish()`` method:
-
-1. Set up internal settings (may include config files & command-line
- options) and I/O objects.
-
-2. Call the Reader object to read data from the source Input object
- and parse the data with the Parser object. A document object is
- returned.
-
-3. Set up and apply transforms via the Transformer object attached to
- the document.
-
-4. Call the Writer object which translates the document to the final
- output format and writes the formatted data to the destination
- Output object. Depending on the Output object, the output may be
- returned from the Writer, and then from the ``publish()`` method.
-
-Calling the "publish" function (or instantiating a "Publisher" object)
-with component names will result in default behavior. For custom
-behavior (customizing component settings), create custom component
-objects first, and pass *them* to the Publisher or ``publish_*``
-convenience functions.
-
-
-Readers
--------
-
-Readers understand the input context (where the data is coming from),
-send the whole input or discrete "chunks" to the parser, and provide
-the context to bind the chunks together back into a cohesive whole.
-
-Each reader is a module or package exporting a "Reader" class with a
-"read" method. The base "Reader" class can be found in the
-``docutils/readers/__init__.py`` module.
-
-Most Readers will have to be told what parser to use. So far (see the
-list of examples below), only the Python Source Reader ("PySource";
-still incomplete) will be able to determine the parser on its own.
-
-Responsibilities:
-
-* Get input text from the source I/O.
-
-* Pass the input text to the parser, along with a fresh `document
- tree`_ root.
-
-Examples:
-
-* Standalone (Raw/Plain): Just read a text file and process it.
- The reader needs to be told which parser to use.
-
- The "Standalone Reader" has been implemented in module
- ``docutils.readers.standalone``.
-
-* Python Source: See `Python Source Reader`_ below. This Reader is
- currently in development in the Docutils sandbox.
-
-* Email: RFC-822 headers, quoted excerpts, signatures, MIME parts.
-
-* PEP: RFC-822 headers, "PEP xxxx" and "RFC xxxx" conversion to URIs.
- The "PEP Reader" has been implemented in module
- ``docutils.readers.pep``; see PEP 287 and PEP 12.
-
-* Wiki: Global reference lookups of "wiki links" incorporated into
- transforms. (CamelCase only or unrestricted?) Lazy
- indentation?
-
-* Web Page: As standalone, but recognize meta fields as meta tags.
- Support for templates of some sort? (After ``<body>``, before
- ``</body>``?)
-
-* FAQ: Structured "question & answer(s)" constructs.
-
-* Compound document: Merge chapters into a book. Master manifest
- file?
-
-
-Parsers
--------
-
-Parsers analyze their input and produce a Docutils `document tree`_.
-They don't know or care anything about the source or destination of
-the data.
-
-Each input parser is a module or package exporting a "Parser" class
-with a "parse" method. The base "Parser" class can be found in the
-``docutils/parsers/__init__.py`` module.
-
-Responsibilities: Given raw input text and a doctree root node,
-populate the doctree by parsing the input text.
-
-Example: The only parser implemented so far is for the
-reStructuredText markup. It is implemented in the
-``docutils/parsers/rst/`` package.
-
-The development and integration of other parsers is possible and
-encouraged.
-
-
-.. _transforms:
-
-Transformer
------------
-
-The Transformer class, in ``docutils/transforms/__init__.py``, stores
-transforms and applies them to documents. A transformer object is
-attached to every new document tree. The Publisher_ calls
-``Transformer.apply_transforms()`` to apply all stored transforms to
-the document tree. Transforms change the document tree from one form
-to another, add to the tree, or prune it. Transforms resolve
-references and footnote numbers, process interpreted text, and do
-other context-sensitive processing.
-
-Some transforms are specific to components (Readers, Parser, Writers,
-Input, Output). Standard component-specific transforms are specified
-in the ``default_transforms`` attribute of component classes. After
-the Reader has finished processing, the Publisher_ calls
-``Transformer.populate_from_components()`` with a list of components
-and all default transforms are stored.
-
-Each transform is a class in a module in the ``docutils/transforms/``
-package, a subclass of ``docutils.tranforms.Transform``. Transform
-classes each have a ``default_priority`` attribute which is used by
-the Transformer to apply transforms in order (low to high). The
-default priority can be overridden when adding transforms to the
-Transformer object.
-
-Transformer responsibilities:
-
-* Apply transforms to the document tree, in priority order.
-
-* Store a mapping of component type name ('reader', 'writer', etc.) to
- component objects. These are used by certain transforms (such as
- "components.Filter") to determine suitability.
-
-Transform responsibilities:
-
-* Modify a doctree in-place, either purely transforming one structure
- into another, or adding new structures based on the doctree and/or
- external data.
-
-Examples of transforms (in the ``docutils/transforms/`` package):
-
-* frontmatter.DocInfo: Conversion of document metadata (bibliographic
- information).
-
-* references.AnonymousHyperlinks: Resolution of anonymous references
- to corresponding targets.
-
-* parts.Contents: Generates a table of contents for a document.
-
-* document.Merger: Combining multiple populated doctrees into one.
- (Not yet implemented or fully understood.)
-
-* document.Splitter: Splits a document into a tree-structure of
- subdocuments, perhaps by section. It will have to transform
- references appropriately. (Neither implemented not remotely
- understood.)
-
-* components.Filter: Includes or excludes elements which depend on a
- specific Docutils component.
-
-
-Writers
--------
-
-Writers produce the final output (HTML, XML, TeX, etc.). Writers
-translate the internal `document tree`_ structure into the final data
-format, possibly running Writer-specific transforms_ first.
-
-By the time the document gets to the Writer, it should be in final
-form. The Writer's job is simply (and only) to translate from the
-Docutils doctree structure to the target format. Some small
-transforms may be required, but they should be local and
-format-specific.
-
-Each writer is a module or package exporting a "Writer" class with a
-"write" method. The base "Writer" class can be found in the
-``docutils/writers/__init__.py`` module.
-
-Responsibilities:
-
-* Translate doctree(s) into specific output formats.
-
- - Transform references into format-native forms.
-
-* Write the translated output to the destination I/O.
-
-Examples:
-
-* XML: Various forms, such as:
-
- - Docutils XML (an expression of the internal document tree,
- implemented as ``docutils.writers.docutils_xml``).
-
- - DocBook (being implemented in the Docutils sandbox).
-
-* HTML (XHTML implemented as ``docutils.writers.html4css1``).
-
-* PDF (a ReportLabs interface is being developed in the Docutils
- sandbox).
-
-* TeX (a LaTeX Writer is being implemented in the sandbox).
-
-* Docutils-native pseudo-XML (implemented as
- ``docutils.writers.pseudoxml``, used for testing).
-
-* Plain text
-
-* reStructuredText?
-
-
-Input/Output
-------------
-
-I/O classes provide a uniform API for low-level input and output.
-Subclasses will exist for a variety of input/output mechanisms.
-However, they can be considered an implementation detail. Most
-applications should be satisfied using one of the convenience
-functions associated with the Publisher_.
-
-I/O classes are currently in the preliminary stages; there's a lot of
-work yet to be done. Issues:
-
-* How to represent multi-file input (files & directories) in the API?
-
-* How to represent multi-file output? Perhaps "Writer" variants, one
- for each output distribution type? Or Output objects with
- associated transforms?
-
-Responsibilities:
-
-* Read data from the input source (Input objects) or write data to the
- output destination (Output objects).
-
-Examples of input sources:
-
-* A single file on disk or a stream (implemented as
- ``docutils.io.FileInput``).
-
-* Multiple files on disk (``MultiFileInput``?).
-
-* Python source files: modules and packages.
-
-* Python strings, as received from a client application
- (implemented as ``docutils.io.StringInput``).
-
-Examples of output destinations:
-
-* A single file on disk or a stream (implemented as
- ``docutils.io.FileOutput``).
-
-* A tree of directories and files on disk.
-
-* A Python string, returned to a client application (implemented as
- ``docutils.io.StringOutput``).
-
-* No output; useful for programmatic applications where only a portion
- of the normal output is to be used (implemented as
- ``docutils.io.NullOutput``).
-
-* A single tree-shaped data structure in memory.
-
-* Some other set of data structures in memory.
-
-
-Docutils Package Structure
-==========================
-
-* Package "docutils".
-
- - Module "__init__.py" contains: class "Component", a base class for
- Docutils components; class "SettingsSpec", a base class for
- specifying runtime settings (used by docutils.frontend); and class
- "TransformSpec", a base class for specifying transforms.
-
- - Module "docutils.core" contains facade class "Publisher" and
- convenience functions. See `Publisher`_ above.
-
- - Module "docutils.frontend" provides runtime settings support, for
- programmatic use and front-end tools (including configuration file
- support, and command-line argument and option processing).
-
- - Module "docutils.io" provides a uniform API for low-level input
- and output. See `Input/Output`_ above.
-
- - Module "docutils.nodes" contains the Docutils document tree
- element class library plus tree-traversal Visitor pattern base
- classes. See `Document Tree`_ below.
-
- - Module "docutils.statemachine" contains a finite state machine
- specialized for regular-expression-based text filters and parsers.
- The reStructuredText parser implementation is based on this
- module.
-
- - Module "docutils.urischemes" contains a mapping of known URI
- schemes ("http", "ftp", "mail", etc.).
-
- - Module "docutils.utils" contains utility functions and classes,
- including a logger class ("Reporter"; see `Error Handling`_
- below).
-
- - Package "docutils.parsers": markup parsers_.
-
- - Function "get_parser_class(parser_name)" returns a parser module
- by name. Class "Parser" is the base class of specific parsers.
- (``docutils/parsers/__init__.py``)
-
- - Package "docutils.parsers.rst": the reStructuredText parser.
-
- - Alternate markup parsers may be added.
-
- See `Parsers`_ above.
-
- - Package "docutils.readers": context-aware input readers.
-
- - Function "get_reader_class(reader_name)" returns a reader module
- by name or alias. Class "Reader" is the base class of specific
- readers. (``docutils/readers/__init__.py``)
-
- - Module "docutils.readers.standalone" reads independent document
- files.
-
- - Module "docutils.readers.pep" reads PEPs (Python Enhancement
- Proposals).
-
- - Readers to be added for: Python source code (structure &
- docstrings), email, FAQ, and perhaps Wiki and others.
-
- See `Readers`_ above.
-
- - Package "docutils.writers": output format writers.
-
- - Function "get_writer_class(writer_name)" returns a writer module
- by name. Class "Writer" is the base class of specific writers.
- (``docutils/writers/__init__.py``)
-
- - Module "docutils.writers.html4css1" is a simple HyperText Markup
- Language document tree writer for HTML 4.01 and CSS1.
-
- - Module "docutils.writers.docutils_xml" writes the internal
- document tree in XML form.
-
- - Module "docutils.writers.pseudoxml" is a simple internal
- document tree writer; it writes indented pseudo-XML.
-
- - Writers to be added: HTML 3.2 or 4.01-loose, XML (various forms,
- such as DocBook), PDF, TeX, plaintext, reStructuredText, and
- perhaps others.
-
- See `Writers`_ above.
-
- - Package "docutils.transforms": tree transform classes.
-
- - Class "Transformer" stores transforms and applies them to
- document trees. (``docutils/transforms/__init__.py``)
-
- - Class "Transform" is the base class of specific transforms.
- (``docutils/transforms/__init__.py``)
-
- - Each module contains related transform classes.
-
- See `Transforms`_ above.
-
- - Package "docutils.languages": Language modules contain
- language-dependent strings and mappings. They are named for their
- language identifier (as defined in `Choice of Docstring Format`_
- below), converting dashes to underscores.
-
- - Function "get_language(language_code)", returns matching
- language module. (``docutils/languages/__init__.py``)
-
- - Modules: en.py (English), de.py (German), fr.py (French), it.py
- (Italian), sk.py (Slovak), sv.py (Swedish).
-
- - Other languages to be added.
-
-* Third-party modules: "extras" directory. These modules are
- installed only if they're not already present in the Python
- installation.
-
- - ``extras/optparse.py`` and ``extras/textwrap.py`` provide
- option parsing and command-line help; from Greg Ward's
- http://optik.sf.net/ project, included for convenience.
-
- - ``extras/roman.py`` contains Roman numeral conversion routines.
-
-
-Front-End Tools
-===============
-
-The ``tools/`` directory contains several front ends for common
-Docutils processing. See `Docutils Front-End Tools`_ for details.
-
-.. _Docutils Front-End Tools: http://docutils.sf.net/docs/tools.html
-
-
-Document Tree
-=============
-
-A single intermediate data structure is used internally by Docutils,
-in the interfaces between components; it is defined in the
-``docutils.nodes`` module. It is not required that this data
-structure be used *internally* by any of the components, just
-*between* components as outlined in the diagram in the `Docutils
-Project Model`_ above.
-
-Custom node types are allowed, provided that either (a) a transform
-converts them to standard Docutils nodes before they reach the Writer
-proper, or (b) the custom node is explicitly supported by certain
-Writers, and is wrapped in a filtered "pending" node. An example of
-condition (a) is the `Python Source Reader`_ (see below), where a
-"stylist" transform converts custom nodes. The HTML ``<meta>`` tag is
-an example of condition (b); it is supported by the HTML Writer but
-not by others. The reStructuredText "meta" directive creates a
-"pending" node, which contains knowledge that the embedded "meta" node
-can only be handled by HTML-compatible writers. The "pending" node is
-resolved by the ``docutils.transforms.components.Filter`` transform,
-which checks that the calling writer supports HTML; if it doesn't, the
-"pending" node (and enclosed "meta" node) is removed from the
-document.
-
-The document tree data structure is similar to a DOM tree, but with
-specific node names (classes) instead of DOM's generic nodes. The
-schema is documented in an XML DTD (eXtensible Markup Language
-Document Type Definition), which comes in two parts:
-
-* the Docutils Generic DTD, docutils.dtd_, and
-
-* the OASIS Exchange Table Model, soextbl.dtd_.
-
-The DTD defines a rich set of elements, suitable for many input and
-output formats. The DTD retains all information necessary to
-reconstruct the original input text, or a reasonable facsimile
-thereof.
-
-See `The Docutils Document Tree`_ for details (incomplete).
-
-
-Error Handling
-==============
-
-When the parser encounters an error in markup, it inserts a system
-message (DTD element "system_message"). There are five levels of
-system messages:
-
-* Level-0, "DEBUG": an internal reporting issue. There is no effect
- on the processing. Level-0 system messages are handled separately
- from the others.
-
-* Level-1, "INFO": a minor issue that can be ignored. There is little
- or no effect on the processing. Typically level-1 system messages
- are not reported.
-
-* Level-2, "WARNING": an issue that should be addressed. If ignored,
- there may be minor problems with the output. Typically level-2
- system messages are reported but do not halt processing
-
-* Level-3, "ERROR": a major issue that should be addressed. If
- ignored, the output will contain unpredictable errors. Typically
- level-3 system messages are reported but do not halt processing
-
-* Level-4, "SEVERE": a critical error that must be addressed.
- Typically level-4 system messages are turned into exceptions which
- halt processing. If ignored, the output will contain severe errors.
-
-Although the initial message levels were devised independently, they
-have a strong correspondence to `VMS error condition severity
-levels`_; the names in quotes for levels 1 through 4 were borrowed
-from VMS. Error handling has since been influenced by the `log4j
-project`_.
-
-
-Python Source Reader
-====================
-
-The Python Source Reader ("PySource") is the Docutils component that
-reads Python source files, extracts docstrings in context, then
-parses, links, and assembles the docstrings into a cohesive whole. It
-is a major and non-trivial component, currently under experimental
-development in the Docutils sandbox. High-level design issues are
-presented here.
-
-
-Processing Model
-----------------
-
-This model will evolve over time, incorporating experience and
-discoveries.
-
-1. The PySource Reader uses an Input class to read in Python packages
- and modules, into a tree of strings.
-
-2. The Python modules are parsed, converting the tree of strings into
- a tree of abstract syntax trees with docstring nodes.
-
-3. The abstract syntax trees are converted into an internal
- representation of the packages/modules. Docstrings are extracted,
- as well as code structure details. See `AST Mining`_ below.
- Namespaces are constructed for lookup in step 6.
-
-4. One at a time, the docstrings are parsed, producing standard
- Docutils doctrees.
-
-5. PySource assembles all the individual docstrings' doctrees into a
- Python-specific custom Docutils tree paralleling the
- package/module/class structure; this is a custom Reader-specific
- internal representation (see the `Docutils Python Source DTD`_).
- Namespaces must be merged: Python identifiers, hyperlink targets.
-
-6. Cross-references from docstrings (interpreted text) to Python
- identifiers are resolved according to the Python namespace lookup
- rules. See `Identifier Cross-References`_ below.
-
-7. A "Stylist" transform is applied to the custom doctree (by the
- Transformer_), custom nodes are rendered using standard nodes as
- primitives, and a standard document tree is emitted. See `Stylist
- Transforms`_ below.
-
-8. Other transforms are applied to the standard doctree by the
- Transformer_.
-
-9. The standard doctree is sent to a Writer, which translates the
- document into a concrete format (HTML, PDF, etc.).
-
-10. The Writer uses an Output class to write the resulting data to its
- destination (disk file, directories and files, etc.).
-
-
-AST Mining
-----------
-
-Abstract Syntax Tree mining code will be written (or adapted) that
-scans a parsed Python module, and returns an ordered tree containing
-the names, docstrings (including attribute and additional docstrings;
-see below), and additional info (in parentheses below) of all of the
-following objects:
-
-* packages
-* modules
-* module attributes (+ initial values)
-* classes (+ inheritance)
-* class attributes (+ initial values)
-* instance attributes (+ initial values)
-* methods (+ parameters & defaults)
-* functions (+ parameters & defaults)
-
-(Extract comments too? For example, comments at the start of a module
-would be a good place for bibliographic field lists.)
-
-In order to evaluate interpreted text cross-references, namespaces for
-each of the above will also be required.
-
-See the python-dev/docstring-develop thread "AST mining", started on
-2001-08-14.
-
-
-Docstring Extraction Rules
---------------------------
-
-1. What to examine:
-
- a) If the "``__all__``" variable is present in the module being
- documented, only identifiers listed in "``__all__``" are
- examined for docstrings.
-
- b) In the absence of "``__all__``", all identifiers are examined,
- except those whose names are private (names begin with "_" but
- don't begin and end with "__").
-
- c) 1a and 1b can be overridden by runtime settings.
-
-2. Where:
-
- Docstrings are string literal expressions, and are recognized in
- the following places within Python modules:
-
- a) At the beginning of a module, function definition, class
- definition, or method definition, after any comments. This is
- the standard for Python ``__doc__`` attributes.
-
- b) Immediately following a simple assignment at the top level of a
- module, class definition, or ``__init__`` method definition,
- after any comments. See `Attribute Docstrings`_ below.
-
- c) Additional string literals found immediately after the
- docstrings in (a) and (b) will be recognized, extracted, and
- concatenated. See `Additional Docstrings`_ below.
-
- d) @@@ 2.2-style "properties" with attribute docstrings? Wait for
- syntax?
-
-3. How:
-
- Whenever possible, Python modules should be parsed by Docutils, not
- imported. There are several reasons:
-
- - Importing untrusted code is inherently insecure.
-
- - Information from the source is lost when using introspection to
- examine an imported module, such as comments and the order of
- definitions.
-
- - Docstrings are to be recognized in places where the byte-code
- compiler ignores string literal expressions (2b and 2c above),
- meaning importing the module will lose these docstrings.
-
- Of course, standard Python parsing tools such as the "parser"
- library module should be used.
-
- When the Python source code for a module is not available
- (i.e. only the ``.pyc`` file exists) or for C extension modules, to
- access docstrings the module can only be imported, and any
- limitations must be lived with.
-
-Since attribute docstrings and additional docstrings are ignored by
-the Python byte-code compiler, no namespace pollution or runtime bloat
-will result from their use. They are not assigned to ``__doc__`` or
-to any other attribute. The initial parsing of a module may take a
-slight performance hit.
-
-
-Attribute Docstrings
-''''''''''''''''''''
-
-(This is a simplified version of PEP 224 [#PEP-224]_.)
-
-A string literal immediately following an assignment statement is
-interpreted by the docstring extraction machinery as the docstring of
-the target of the assignment statement, under the following
-conditions:
-
-1. The assignment must be in one of the following contexts:
-
- a) At the top level of a module (i.e., not nested inside a compound
- statement such as a loop or conditional): a module attribute.
-
- b) At the top level of a class definition: a class attribute.
-
- c) At the top level of the "``__init__``" method definition of a
- class: an instance attribute. Instance attributes assigned in
- other methods are assumed to be implementation details. (@@@
- ``__new__`` methods?)
-
- d) A function attribute assignment at the top level of a module or
- class definition.
-
- Since each of the above contexts are at the top level (i.e., in the
- outermost suite of a definition), it may be necessary to place
- dummy assignments for attributes assigned conditionally or in a
- loop.
-
-2. The assignment must be to a single target, not to a list or a tuple
- of targets.
-
-3. The form of the target:
-
- a) For contexts 1a and 1b above, the target must be a simple
- identifier (not a dotted identifier, a subscripted expression,
- or a sliced expression).
-
- b) For context 1c above, the target must be of the form
- "``self.attrib``", where "``self``" matches the "``__init__``"
- method's first parameter (the instance parameter) and "attrib"
- is a simple identifier as in 3a.
-
- c) For context 1d above, the target must be of the form
- "``name.attrib``", where "``name``" matches an already-defined
- function or method name and "attrib" is a simple identifier as
- in 3a.
-
-Blank lines may be used after attribute docstrings to emphasize the
-connection between the assignment and the docstring.
-
-Examples::
-
- g = 'module attribute (module-global variable)'
- """This is g's docstring."""
-
- class AClass:
-
- c = 'class attribute'
- """This is AClass.c's docstring."""
-
- def __init__(self):
- """Method __init__'s docstring."""
-
- self.i = 'instance attribute'
- """This is self.i's docstring."""
-
- def f(x):
- """Function f's docstring."""
- return x**2
-
- f.a = 1
- """Function attribute f.a's docstring."""
-
-
-Additional Docstrings
-'''''''''''''''''''''
-
-(This idea was adapted from PEP 216 [#PEP-216]_.)
-
-Many programmers would like to make extensive use of docstrings for
-API documentation. However, docstrings do take up space in the
-running program, so some programmers are reluctant to "bloat up" their
-code. Also, not all API documentation is applicable to interactive
-environments, where ``__doc__`` would be displayed.
-
-Docutils' docstring extraction tools will concatenate all string
-literal expressions which appear at the beginning of a definition or
-after a simple assignment. Only the first strings in definitions will
-be available as ``__doc__``, and can be used for brief usage text
-suitable for interactive sessions; subsequent string literals and all
-attribute docstrings are ignored by the Python byte-code compiler and
-may contain more extensive API information.
-
-Example::
-
- def function(arg):
- """This is __doc__, function's docstring."""
- """
- This is an additional docstring, ignored by the byte-code
- compiler, but extracted by Docutils.
- """
- pass
-
-.. topic:: Issue: ``from __future__ import``
-
- This would break "``from __future__ import``" statements introduced
- in Python 2.1 for multiple module docstrings (main docstring plus
- additional docstring(s)). The Python Reference Manual specifies:
-
- A future statement must appear near the top of the module. The
- only lines that can appear before a future statement are:
-
- * the module docstring (if any),
- * comments,
- * blank lines, and
- * other future statements.
-
- Resolution?
-
- 1. Should we search for docstrings after a ``__future__``
- statement? Very ugly.
-
- 2. Redefine ``__future__`` statements to allow multiple preceding
- string literals?
-
- 3. Or should we not even worry about this? There probably
- shouldn't be ``__future__`` statements in production code, after
- all. Perhaps modules with ``__future__`` statements will simply
- have to put up with the single-docstring limitation.
-
-
-Choice of Docstring Format
---------------------------
-
-Rather than force everyone to use a single docstring format, multiple
-input formats are allowed by the processing system. A special
-variable, ``__docformat__``, may appear at the top level of a module
-before any function or class definitions. Over time or through
-decree, a standard format or set of formats should emerge.
-
-The ``__docformat__`` variable is a string containing the name of the
-format being used, a case-insensitive string matching the input
-parser's module or package name (i.e., the same name as required to
-"import" the module or package), or a registered alias. If no
-``__docformat__`` is specified, the default format is "plaintext" for
-now; this may be changed to the standard format if one is ever
-established.
-
-The ``__docformat__`` string may contain an optional second field,
-separated from the format name (first field) by a single space: a
-case-insensitive language identifier as defined in RFC 1766. A
-typical language identifier consists of a 2-letter language code from
-`ISO 639`_ (3-letter codes used only if no 2-letter code exists; RFC
-1766 is currently being revised to allow 3-letter codes). If no
-language identifier is specified, the default is "en" for English.
-The language identifier is passed to the parser and can be used for
-language-dependent markup features.
-
-
-Identifier Cross-References
----------------------------
-
-In Python docstrings, interpreted text is used to classify and mark up
-program identifiers, such as the names of variables, functions,
-classes, and modules. If the identifier alone is given, its role is
-inferred implicitly according to the Python namespace lookup rules.
-For functions and methods (even when dynamically assigned),
-parentheses ('()') may be included::
-
- This function uses `another()` to do its work.
-
-For class, instance and module attributes, dotted identifiers are used
-when necessary. For example (using reStructuredText markup)::
-
- class Keeper(Storer):
-
- """
- Extend `Storer`. Class attribute `instances` keeps track
- of the number of `Keeper` objects instantiated.
- """
-
- instances = 0
- """How many `Keeper` objects are there?"""
-
- def __init__(self):
- """
- Extend `Storer.__init__()` to keep track of instances.
-
- Keep count in `Keeper.instances`, data in `self.data`.
- """
- Storer.__init__(self)
- Keeper.instances += 1
-
- self.data = []
- """Store data in a list, most recent last."""
-
- def store_data(self, data):
- """
- Extend `Storer.store_data()`; append new `data` to a
- list (in `self.data`).
- """
- self.data = data
-
-Each of the identifiers quoted with backquotes ("`") will become
-references to the definitions of the identifiers themselves.
-
-
-Stylist Transforms
-------------------
-
-Stylist transforms are specialized transforms specific to the PySource
-Reader. The PySource Reader doesn't have to make any decisions as to
-style; it just produces a logically constructed document tree, parsed
-and linked, including custom node types. Stylist transforms
-understand the custom nodes created by the Reader and convert them
-into standard Docutils nodes.
-
-Multiple Stylist transforms may be implemented and one can be chosen
-at runtime (through a "--style" or "--stylist" command-line option).
-Each Stylist transform implements a different layout or style; thus
-the name. They decouple the context-understanding part of the Reader
-from the layout-generating part of processing, resulting in a more
-flexible and robust system. This also serves to "separate style from
-content", the SGML/XML ideal.
-
-By keeping the piece of code that does the styling small and modular,
-it becomes much easier for people to roll their own styles. The
-"barrier to entry" is too high with existing tools; extracting the
-stylist code will lower the barrier considerably.
-
-
-==========================
- References and Footnotes
-==========================
-
-.. [#PEP-256] PEP 256, Docstring Processing System Framework, Goodger
- (http://www.python.org/peps/pep-0256.html)
-
-.. [#PEP-224] PEP 224, Attribute Docstrings, Lemburg
- (http://www.python.org/peps/pep-0224.html)
-
-.. [#PEP-216] PEP 216, Docstring Format, Zadka
- (http://www.python.org/peps/pep-0216.html)
-
-.. _docutils.dtd: http://docutils.sourceforge.net/spec/docutils.dtd
-
-.. _soextbl.dtd: http://docutils.sourceforge.net/spec/soextblx.dtd
-
-.. _The Docutils Document Tree:
- http://docutils.sourceforge.net/spec/doctree.html
-
-.. _VMS error condition severity levels:
- http://www.openvms.compaq.com:8000/73final/5841/841pro_027.html
- #error_cond_severity
-
-.. _log4j project: http://jakarta.apache.org/log4j/
-
-.. _Docutils Python Source DTD:
- http://docutils.sourceforge.net/spec/pysource.dtd
-
-.. _ISO 639: http://lcweb.loc.gov/standards/iso639-2/englangn.html
-
-.. _Python Doc-SIG: http://www.python.org/sigs/doc-sig/
-
-
-
-==================
- Project Web Site
-==================
-
-A SourceForge project has been set up for this work at
-http://docutils.sourceforge.net/.
-
-
-===========
- Copyright
-===========
-
-This document has been placed in the public domain.
-
-
-==================
- Acknowledgements
-==================
-
-This document borrows ideas from the archives of the `Python
-Doc-SIG`_. Thanks to all members past & present.
-
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/peps/pep-0287.txt b/docutils/docs/peps/pep-0287.txt
deleted file mode 100644
index c6e48901b..000000000
--- a/docutils/docs/peps/pep-0287.txt
+++ /dev/null
@@ -1,815 +0,0 @@
-PEP: 287
-Title: reStructuredText Docstring Format
-Version: $Revision$
-Last-Modified: $Date$
-Author: David Goodger <goodger@users.sourceforge.net>
-Discussions-To: <doc-sig@python.org>
-Status: Draft
-Type: Informational
-Content-Type: text/x-rst
-Created: 25-Mar-2002
-Post-History: 02-Apr-2002
-Replaces: 216
-
-
-Abstract
-========
-
-When plaintext hasn't been expressive enough for inline documentation,
-Python programmers have sought out a format for docstrings. This PEP
-proposes that the `reStructuredText markup`_ be adopted as a standard
-markup format for structured plaintext documentation in Python
-docstrings, and for PEPs and ancillary documents as well.
-reStructuredText is a rich and extensible yet easy-to-read,
-what-you-see-is-what-you-get plaintext markup syntax.
-
-Only the low-level syntax of docstrings is addressed here. This PEP
-is not concerned with docstring semantics or processing at all (see
-PEP 256 for a "Road Map to the Docstring PEPs"). Nor is it an attempt
-to deprecate pure plaintext docstrings, which are always going to be
-legitimate. The reStructuredText markup is an alternative for those
-who want more expressive docstrings.
-
-
-Benefits
-========
-
-Programmers are by nature a lazy breed. We reuse code with functions,
-classes, modules, and subsystems. Through its docstring syntax,
-Python allows us to document our code from within. The "holy grail"
-of the Python Documentation Special Interest Group (Doc-SIG_) has been
-a markup syntax and toolset to allow auto-documentation, where the
-docstrings of Python systems can be extracted in context and processed
-into useful, high-quality documentation for multiple purposes.
-
-Document markup languages have three groups of customers: the authors
-who write the documents, the software systems that process the data,
-and the readers, who are the final consumers and the most important
-group. Most markups are designed for the authors and software
-systems; readers are only meant to see the processed form, either on
-paper or via browser software. ReStructuredText is different: it is
-intended to be easily readable in source form, without prior knowledge
-of the markup. ReStructuredText is entirely readable in plaintext
-format, and many of the markup forms match common usage (e.g.,
-``*emphasis*``), so it reads quite naturally. Yet it is rich enough
-to produce complex documents, and extensible so that there are few
-limits. Of course, to write reStructuredText documents some prior
-knowledge is required.
-
-The markup offers functionality and expressivity, while maintaining
-easy readability in the source text. The processed form (HTML etc.)
-makes it all accessible to readers: inline live hyperlinks; live links
-to and from footnotes; automatic tables of contents (with live
-links!); tables; images for diagrams etc.; pleasant, readable styled
-text.
-
-The reStructuredText parser is available now, part of the Docutils_
-project. Standalone reStructuredText documents and PEPs can be
-converted to HTML; other output format writers are being worked on and
-will become available over time. Work is progressing on a Python
-source "Reader" which will implement auto-documentation from
-docstrings. Authors of existing auto-documentation tools are
-encouraged to integrate the reStructuredText parser into their
-projects, or better yet, to join forces to produce a world-class
-toolset for the Python standard library.
-
-Tools will become available in the near future, which will allow
-programmers to generate HTML for online help, XML for multiple
-purposes, and eventually PDF, DocBook, and LaTeX for printed
-documentation, essentially "for free" from the existing docstrings.
-The adoption of a standard will, at the very least, benefit docstring
-processing tools by preventing further "reinventing the wheel".
-
-Eventually PyDoc, the one existing standard auto-documentation tool,
-could have reStructuredText support added. In the interim it will
-have no problem with reStructuredText markup, since it treats all
-docstrings as preformatted plaintext.
-
-
-Goals
-=====
-
-These are the generally accepted goals for a docstring format, as
-discussed in the Doc-SIG:
-
-1. It must be readable in source form by the casual observer.
-
-2. It must be easy to type with any standard text editor.
-
-3. It must not need to contain information which can be deduced from
- parsing the module.
-
-4. It must contain sufficient information (structure) so it can be
- converted to any reasonable markup format.
-
-5. It must be possible to write a module's entire documentation in
- docstrings, without feeling hampered by the markup language.
-
-reStructuredText meets and exceeds all of these goals, and sets its
-own goals as well, even more stringent. See `Docstring-Significant
-Features`_ below.
-
-The goals of this PEP are as follows:
-
-1. To establish reStructuredText as a standard structured plaintext
- format for docstrings (inline documentation of Python modules and
- packages), PEPs, README-type files and other standalone documents.
- "Accepted" status will be sought through Python community consensus
- and eventual BDFL pronouncement.
-
- Please note that reStructuredText is being proposed as *a*
- standard, not *the only* standard. Its use will be entirely
- optional. Those who don't want to use it need not.
-
-2. To solicit and address any related concerns raised by the Python
- community.
-
-3. To encourage community support. As long as multiple competing
- markups are out there, the development community remains fractured.
- Once a standard exists, people will start to use it, and momentum
- will inevitably gather.
-
-4. To consolidate efforts from related auto-documentation projects.
- It is hoped that interested developers will join forces and work on
- a joint/merged/common implementation.
-
-Once reStructuredText is a Python standard, effort can be focused on
-tools instead of arguing for a standard. Python needs a standard set
-of documentation tools.
-
-With regard to PEPs, one or both of the following strategies may be
-applied:
-
-a) Keep the existing PEP section structure constructs (one-line
- section headers, indented body text). Subsections can either be
- forbidden, or supported with reStructuredText-style underlined
- headers in the indented body text.
-
-b) Replace the PEP section structure constructs with the
- reStructuredText syntax. Section headers will require underlines,
- subsections will be supported out of the box, and body text need
- not be indented (except for block quotes).
-
-Strategy (b) is recommended, and its implementation is complete.
-
-Support for RFC 2822 headers has been added to the reStructuredText
-parser for PEPs (unambiguous given a specific context: the first
-contiguous block of the document). It may be desired to concretely
-specify what over/underline styles are allowed for PEP section
-headers, for uniformity.
-
-
-Rationale
-=========
-
-The lack of a standard syntax for docstrings has hampered the
-development of standard tools for extracting and converting docstrings
-into documentation in standard formats (e.g., HTML, DocBook, TeX).
-There have been a number of proposed markup formats and variations,
-and many tools tied to these proposals, but without a standard
-docstring format they have failed to gain a strong following and/or
-floundered half-finished.
-
-Throughout the existence of the Doc-SIG, consensus on a single
-standard docstring format has never been reached. A lightweight,
-implicit markup has been sought, for the following reasons (among
-others):
-
-1. Docstrings written within Python code are available from within the
- interactive interpreter, and can be "print"ed. Thus the use of
- plaintext for easy readability.
-
-2. Programmers want to add structure to their docstrings, without
- sacrificing raw docstring readability. Unadorned plaintext cannot
- be transformed ("up-translated") into useful structured formats.
-
-3. Explicit markup (like XML or TeX) is widely considered unreadable
- by the uninitiated.
-
-4. Implicit markup is aesthetically compatible with the clean and
- minimalist Python syntax.
-
-Many alternative markups for docstrings have been proposed on the
-Doc-SIG over the years; a representative sample is listed below. Each
-is briefly analyzed in terms of the goals stated above. Please note
-that this is *not* intended to be an exclusive list of all existing
-markup systems; there are many other markups (Texinfo, Doxygen, TIM,
-YODL, AFT, ...) which are not mentioned.
-
-- XML_, SGML_, DocBook_, HTML_, XHTML_
-
- XML and SGML are explicit, well-formed meta-languages suitable for
- all kinds of documentation. XML is a variant of SGML. They are
- best used behind the scenes, because to untrained eyes they are
- verbose, difficult to type, and too cluttered to read comfortably as
- source. DocBook, HTML, and XHTML are all applications of SGML
- and/or XML, and all share the same basic syntax and the same
- shortcomings.
-
-- TeX_
-
- TeX is similar to XML/SGML in that it's explicit, but not very easy
- to write, and not easy for the uninitiated to read.
-
-- `Perl POD`_
-
- Most Perl modules are documented in a format called POD (Plain Old
- Documentation). This is an easy-to-type, very low level format with
- strong integration with the Perl parser. Many tools exist to turn
- POD documentation into other formats: info, HTML and man pages,
- among others. However, the POD syntax takes after Perl itself in
- terms of readability.
-
-- JavaDoc_
-
- Special comments before Java classes and functions serve to document
- the code. A program to extract these, and turn them into HTML
- documentation is called javadoc, and is part of the standard Java
- distribution. However, JavaDoc has a very intimate relationship
- with HTML, using HTML tags for most markup. Thus it shares the
- readability problems of HTML.
-
-- Setext_, StructuredText_
-
- Early on, variants of Setext (Structure Enhanced Text), including
- Zope Corp's StructuredText, were proposed for Python docstring
- formatting. Hereafter these variants will collectively be called
- "STexts". STexts have the advantage of being easy to read without
- special knowledge, and relatively easy to write.
-
- Although used by some (including in most existing Python
- auto-documentation tools), until now STexts have failed to become
- standard because:
-
- - STexts have been incomplete. Lacking "essential" constructs that
- people want to use in their docstrings, STexts are rendered less
- than ideal. Note that these "essential" constructs are not
- universal; everyone has their own requirements.
-
- - STexts have been sometimes surprising. Bits of text are
- unexpectedly interpreted as being marked up, leading to user
- frustration.
-
- - SText implementations have been buggy.
-
- - Most STexts have have had no formal specification except for the
- implementation itself. A buggy implementation meant a buggy spec,
- and vice-versa.
-
- - There has been no mechanism to get around the SText markup rules
- when a markup character is used in a non-markup context. In other
- words, no way to escape markup.
-
-Proponents of implicit STexts have vigorously opposed proposals for
-explicit markup (XML, HTML, TeX, POD, etc.), and the debates have
-continued off and on since 1996 or earlier.
-
-reStructuredText is a complete revision and reinterpretation of the
-SText idea, addressing all of the problems listed above.
-
-
-Specification
-=============
-
-The specification and user documentaton for reStructuredText is
-quite extensive. Rather than repeating or summarizing it all
-here, links to the originals are provided.
-
-Please first take a look at `A ReStructuredText Primer`_, a short and
-gentle introduction. The `Quick reStructuredText`_ user reference
-quickly summarizes all of the markup constructs. For complete and
-extensive details, please refer to the following documents:
-
-- `An Introduction to reStructuredText`_
-
-- `reStructuredText Markup Specification`_
-
-- `reStructuredText Directives`_
-
-In addition, `Problems With StructuredText`_ explains many markup
-decisions made with regards to StructuredText, and `A Record of
-reStructuredText Syntax Alternatives`_ records markup decisions made
-independently.
-
-
-Docstring-Significant Features
-==============================
-
-- A markup escaping mechanism.
-
- Backslashes (``\``) are used to escape markup characters when needed
- for non-markup purposes. However, the inline markup recognition
- rules have been constructed in order to minimize the need for
- backslash-escapes. For example, although asterisks are used for
- *emphasis*, in non-markup contexts such as "*" or "(*)" or "x * y",
- the asterisks are not interpreted as markup and are left unchanged.
- For many non-markup uses of backslashes (e.g., describing regular
- expressions), inline literals or literal blocks are applicable; see
- the next item.
-
-- Markup to include Python source code and Python interactive
- sessions: inline literals, literal blocks, and doctest blocks.
-
- Inline literals use ``double-backquotes`` to indicate program I/O or
- code snippets. No markup interpretation (including backslash-escape
- [``\``] interpretation) is done within inline literals.
-
- Literal blocks (block-level literal text, such as code excerpts or
- ASCII graphics) are indented, and indicated with a double-colon
- ("::") at the end of the preceding paragraph (right here -->)::
-
- if literal_block:
- text = 'is left as-is'
- spaces_and_linebreaks = 'are preserved'
- markup_processing = None
-
- Doctest blocks begin with ">>> " and end with a blank line. Neither
- indentation nor literal block double-colons are required. For
- example::
-
- Here's a doctest block:
-
- >>> print 'Python-specific usage examples; begun with ">>>"'
- Python-specific usage examples; begun with ">>>"
- >>> print '(cut and pasted from interactive sessions)'
- (cut and pasted from interactive sessions)
-
-- Markup that isolates a Python identifier: interpreted text.
-
- Text enclosed in single backquotes is recognized as "interpreted
- text", whose interpretation is application-dependent. In the
- context of a Python docstring, the default interpretation of
- interpreted text is as Python identifiers. The text will be marked
- up with a hyperlink connected to the documentation for the
- identifier given. Lookup rules are the same as in Python itself:
- LGB namespace lookups (local, global, builtin). The "role" of the
- interpreted text (identifying a class, module, function, etc.) is
- determined implicitly from the namespace lookup. For example::
-
- class Keeper(Storer):
-
- """
- Keep data fresher longer.
-
- Extend `Storer`. Class attribute `instances` keeps track
- of the number of `Keeper` objects instantiated.
- """
-
- instances = 0
- """How many `Keeper` objects are there?"""
-
- def __init__(self):
- """
- Extend `Storer.__init__()` to keep track of
- instances. Keep count in `self.instances` and data
- in `self.data`.
- """
- Storer.__init__(self)
- self.instances += 1
-
- self.data = []
- """Store data in a list, most recent last."""
-
- def storedata(self, data):
- """
- Extend `Storer.storedata()`; append new `data` to a
- list (in `self.data`).
- """
- self.data = data
-
- Each piece of interpreted text is looked up according to the local
- namespace of the block containing its docstring.
-
-- Markup that isolates a Python identifier and specifies its type:
- interpreted text with roles.
-
- Although the Python source context reader is designed not to require
- explicit roles, they may be used. To classify identifiers
- explicitly, the role is given along with the identifier in either
- prefix or suffix form::
-
- Use :method:`Keeper.storedata` to store the object's data in
- `Keeper.data`:instance_attribute:.
-
- The syntax chosen for roles is verbose, but necessarily so (if
- anyone has a better alternative, please post it to the Doc-SIG_).
- The intention of the markup is that there should be little need to
- use explicit roles; their use is to be kept to an absolute minimum.
-
-- Markup for "tagged lists" or "label lists": field lists.
-
- Field lists represent a mapping from field name to field body.
- These are mostly used for extension syntax, such as "bibliographic
- field lists" (representing document metadata such as author, date,
- and version) and extension attributes for directives (see below).
- They may be used to implement methodologies (docstring semantics),
- such as identifying parameters, exceptions raised, etc.; such usage
- is beyond the scope of this PEP.
-
- A modified RFC 2822 syntax is used, with a colon *before* as well as
- *after* the field name. Field bodies are more versatile as well;
- they may contain multiple field bodies (even nested field lists).
- For example::
-
- :Date: 2002-03-22
- :Version: 1
- :Authors:
- - Me
- - Myself
- - I
-
- Standard RFC 2822 header syntax cannot be used for this construct
- because it is ambiguous. A word followed by a colon at the
- beginning of a line is common in written text.
-
-- Markup extensibility: directives and substitutions.
-
- Directives are used as an extension mechanism for reStructuredText,
- a way of adding support for new block-level constructs without
- adding new syntax. Directives for images, admonitions (note,
- caution, etc.), and tables of contents generation (among others)
- have been implemented. For example, here's how to place an image::
-
- .. image:: mylogo.png
-
- Substitution definitions allow the power and flexibility of
- block-level directives to be shared by inline text. For example::
-
- The |biohazard| symbol must be used on containers used to
- dispose of medical waste.
-
- .. |biohazard| image:: biohazard.png
-
-- Section structure markup.
-
- Section headers in reStructuredText use adornment via underlines
- (and possibly overlines) rather than indentation. For example::
-
- This is a Section Title
- =======================
-
- This is a Subsection Title
- --------------------------
-
- This paragraph is in the subsection.
-
- This is Another Section Title
- =============================
-
- This paragraph is in the second section.
-
-
-Questions & Answers
-===================
-
-1. Is reStructuredText rich enough?
-
- Yes, it is for most people. If it lacks some construct that is
- required for a specific application, it can be added via the
- directive mechanism. If a useful and common construct has been
- overlooked and a suitably readable syntax can be found, it can be
- added to the specification and parser.
-
-2. Is reStructuredText *too* rich?
-
- For specific applications or individuals, perhaps. In general, no.
-
- Since the very beginning, whenever a docstring markup syntax has
- been proposed on the Doc-SIG_, someone has complained about the
- lack of support for some construct or other. The reply was often
- something like, "These are docstrings we're talking about, and
- docstrings shouldn't have complex markup." The problem is that a
- construct that seems superfluous to one person may be absolutely
- essential to another.
-
- reStructuredText takes the opposite approach: it provides a rich
- set of implicit markup constructs (plus a generic extension
- mechanism for explicit markup), allowing for all kinds of
- documents. If the set of constructs is too rich for a particular
- application, the unused constructs can either be removed from the
- parser (via application-specific overrides) or simply omitted by
- convention.
-
-3. Why not use indentation for section structure, like StructuredText
- does? Isn't it more "Pythonic"?
-
- Guido van Rossum wrote the following in a 2001-06-13 Doc-SIG post:
-
- I still think that using indentation to indicate sectioning is
- wrong. If you look at how real books and other print
- publications are laid out, you'll notice that indentation is
- used frequently, but mostly at the intra-section level.
- Indentation can be used to offset lists, tables, quotations,
- examples, and the like. (The argument that docstrings are
- different because they are input for a text formatter is wrong:
- the whole point is that they are also readable without
- processing.)
-
- I reject the argument that using indentation is Pythonic: text
- is not code, and different traditions and conventions hold.
- People have been presenting text for readability for over 30
- centuries. Let's not innovate needlessly.
-
- See `Section Structure via Indentation`__ in `Problems With
- StructuredText`_ for further elaboration.
-
- __ http://docutils.sourceforge.net/spec/rst/problems.html
- #section-structure-via-indentation
-
-4. Why use reStructuredText for PEPs? What's wrong with the existing
- standard?
-
- The existing standard for PEPs is very limited in terms of general
- expressibility, and referencing is especially lacking for such a
- reference-rich document type. PEPs are currently converted into
- HTML, but the results (mostly monospaced text) are less than
- attractive, and most of the value-added potential of HTML
- (especially inline hyperlinks) is untapped.
-
- Making reStructuredText a standard markup for PEPs will enable much
- richer expression, including support for section structure, inline
- markup, graphics, and tables. In several PEPs there are ASCII
- graphics diagrams, which are all that plaintext documents can
- support. Since PEPs are made available in HTML form, the ability
- to include proper diagrams would be immediately useful.
-
- Current PEP practices allow for reference markers in the form "[1]"
- in the text, and the footnotes/references themselves are listed in
- a section toward the end of the document. There is currently no
- hyperlinking between the reference marker and the
- footnote/reference itself (it would be possible to add this to
- pep2html.py, but the "markup" as it stands is ambiguous and
- mistakes would be inevitable). A PEP with many references (such as
- this one ;-) requires a lot of flipping back and forth. When
- revising a PEP, often new references are added or unused references
- deleted. It is painful to renumber the references, since it has to
- be done in two places and can have a cascading effect (insert a
- single new reference 1, and every other reference has to be
- renumbered; always adding new references to the end is suboptimal).
- It is easy for references to go out of sync.
-
- PEPs use references for two purposes: simple URL references and
- footnotes. reStructuredText differentiates between the two. A PEP
- might contain references like this::
-
- Abstract
-
- This PEP proposes adding frungible doodads [1] to the core.
- It extends PEP 9876 [2] via the BCA [3] mechanism.
-
- ...
-
- References and Footnotes
-
- [1] http://www.example.org/
-
- [2] PEP 9876, Let's Hope We Never Get Here
- http://www.python.org/peps/pep-9876.html
-
- [3] "Bogus Complexity Addition"
-
- Reference 1 is a simple URL reference. Reference 2 is a footnote
- containing text and a URL. Reference 3 is a footnote containing
- text only. Rewritten using reStructuredText, this PEP could look
- like this::
-
- Abstract
- ========
-
- This PEP proposes adding `frungible doodads`_ to the core. It
- extends PEP 9876 [#pep9876]_ via the BCA [#]_ mechanism.
-
- ...
-
- References & Footnotes
- ======================
-
- .. _frungible doodads: http://www.example.org/
-
- .. [#pep9876] PEP 9876, Let's Hope We Never Get Here
-
- .. [#] "Bogus Complexity Addition"
-
- URLs and footnotes can be defined close to their references if
- desired, making them easier to read in the source text, and making
- the PEPs easier to revise. The "References and Footnotes" section
- can be auto-generated with a document tree transform. Footnotes
- from throughout the PEP would be gathered and displayed under a
- standard header. If URL references should likewise be written out
- explicitly (in citation form), another tree transform could be
- used.
-
- URL references can be named ("frungible doodads"), and can be
- referenced from multiple places in the document without additional
- definitions. When converted to HTML, references will be replaced
- with inline hyperlinks (HTML <a> tags). The two footnotes are
- automatically numbered, so they will always stay in sync. The
- first footnote also contains an internal reference name, "pep9876",
- so it's easier to see the connection between reference and footnote
- in the source text. Named footnotes can be referenced multiple
- times, maintaining consistent numbering.
-
- The "#pep9876" footnote could also be written in the form of a
- citation::
-
- It extends PEP 9876 [PEP9876]_ ...
-
- .. [PEP9876] PEP 9876, Let's Hope We Never Get Here
-
- Footnotes are numbered, whereas citations use text for their
- references.
-
-5. Wouldn't it be better to keep the docstring and PEP proposals
- separate?
-
- The PEP markup proposal may be removed if it is deemed that there
- is no need for PEP markup, or it could be made into a separate PEP.
- If accepted, PEP 1, PEP Purpose and Guidelines [#PEP-1]_, and PEP
- 9, Sample PEP Template [#PEP-9]_ will be updated.
-
- It seems natural to adopt a single consistent markup standard for
- all uses of structured plaintext in Python, and to propose it all
- in one place.
-
-6. The existing pep2html.py script converts the existing PEP format to
- HTML. How will the new-format PEPs be converted to HTML?
-
- A new version of pep2html.py with integrated reStructuredText
- parsing has been completed. The Docutils project supports PEPs
- with a "PEP Reader" component, including all functionality
- currently in pep2html.py (auto-recognition of PEP & RFC references,
- email masking, etc.).
-
-7. Who's going to convert the existing PEPs to reStructuredText?
-
- PEP authors or volunteers may convert existing PEPs if they like,
- but there is no requirement to do so. The reStructuredText-based
- PEPs will coexist with the old PEP standard. The pep2html.py
- mentioned in answer 6 processes both old and new standards.
-
-8. Why use reStructuredText for README and other ancillary files?
-
- The reasoning given for PEPs in answer 4 above also applies to
- README and other ancillary files. By adopting a standard markup,
- these files can be converted to attractive cross-referenced HTML
- and put up on python.org. Developers of other projects can also
- take advantage of this facility for their own documentation.
-
-9. Won't the superficial similarity to existing markup conventions
- cause problems, and result in people writing invalid markup (and
- not noticing, because the plaintext looks natural)? How forgiving
- is reStructuredText of "not quite right" markup?
-
- There will be some mis-steps, as there would be when moving from
- one programming language to another. As with any language,
- proficiency grows with experience. Luckily, reStructuredText is a
- very little language indeed.
-
- As with any syntax, there is the possibility of syntax errors. It
- is expected that a user will run the processing system over their
- input and check the output for correctness.
-
- In a strict sense, the reStructuredText parser is very unforgiving
- (as it should be; "In the face of ambiguity, refuse the temptation
- to guess" [#Zen]_ applies to parsing markup as well as computer
- languages). Here's design goal 3 from `An Introduction to
- reStructuredText`_:
-
- Unambiguous. The rules for markup must not be open for
- interpretation. For any given input, there should be one and
- only one possible output (including error output).
-
- While unforgiving, at the same time the parser does try to be
- helpful by producing useful diagnostic output ("system messages").
- The parser reports problems, indicating their level of severity
- (from least to most: debug, info, warning, error, severe). The
- user or the client software can decide on reporting thresholds;
- they can ignore low-level problems or cause high-level problems to
- bring processing to an immediate halt. Problems are reported
- during the parse as well as included in the output, often with
- two-way links between the source of the problem and the system
- message explaining it.
-
-10. Will the docstrings in the Python standard library modules be
- converted to reStructuredText?
-
- No. Python's library reference documentation is maintained
- separately from the source. Docstrings in the Python standard
- library should not try to duplicate the library reference
- documentation. The current policy for docstrings in the Python
- standard library is that they should be no more than concise
- hints, simple and markup-free (although many *do* contain ad-hoc
- implicit markup).
-
-11. I want to write all my strings in Unicode. Will anything
- break?
-
- The parser fully supports Unicode. Docutils supports arbitrary
- input and output encodings.
-
-12. Why does the community need a new structured text design?
-
- The existing structured text designs are deficient, for the
- reasons given in "Rationale" above. reStructuredText aims to be a
- complete markup syntax, within the limitations of the "readable
- plaintext" medium.
-
-13. What is wrong with existing documentation methodologies?
-
- What existing methodologies? For Python docstrings, there is
- **no** official standard markup format, let alone a documentation
- methodology akin to JavaDoc. The question of methodology is at a
- much higher level than syntax (which this PEP addresses). It is
- potentially much more controversial and difficult to resolve, and
- is intentionally left out of this discussion.
-
-
-References & Footnotes
-======================
-
-.. [#PEP-1] PEP 1, PEP Guidelines, Warsaw, Hylton
- (http://www.python.org/peps/pep-0001.html)
-
-.. [#PEP-9] PEP 9, Sample PEP Template, Warsaw
- (http://www.python.org/peps/pep-0009.html)
-
-.. [#Zen] From `The Zen of Python (by Tim Peters)`__ (or just
- "``import this``" in Python)
-
-__ http://www.python.org/doc/Humor.html#zen
-
-.. [#PEP-216] PEP 216, Docstring Format, Zadka
- (http://www.python.org/peps/pep-0216.html)
-
-.. _reStructuredText markup: http://docutils.sourceforge.net/spec/rst.html
-
-.. _Doc-SIG: http://www.python.org/sigs/doc-sig/
-
-.. _XML: http://www.w3.org/XML/
-
-.. _SGML: http://www.oasis-open.org/cover/general.html
-
-.. _DocBook: http://docbook.org/tdg/en/html/docbook.html
-
-.. _HTML: http://www.w3.org/MarkUp/
-
-.. _XHTML: http://www.w3.org/MarkUp/#xhtml1
-
-.. _TeX: http://www.tug.org/interest.html
-
-.. _Perl POD: http://www.perldoc.com/perl5.6/pod/perlpod.html
-
-.. _JavaDoc: http://java.sun.com/j2se/javadoc/
-
-.. _Setext: http://docutils.sourceforge.net/mirror/setext.html
-
-.. _StructuredText:
- http://dev.zope.org/Members/jim/StructuredTextWiki/FrontPage
-
-.. _A ReStructuredText Primer:
- http://docutils.sourceforge.net/docs/rst/quickstart.html
-
-.. _Quick reStructuredText:
- http://docutils.sourceforge.net/docs/rst/quickref.html
-
-.. _An Introduction to reStructuredText:
- http://docutils.sourceforge.net/spec/rst/introduction.html
-
-.. _reStructuredText Markup Specification:
- http://docutils.sourceforge.net/spec/rst/reStructuredText.html
-
-.. _reStructuredText Directives:
- http://docutils.sourceforge.net/spec/rst/directives.html
-
-.. _Problems with StructuredText:
- http://docutils.sourceforge.net/spec/rst/problems.html
-
-.. _A Record of reStructuredText Syntax Alternatives:
- http://docutils.sourceforge.net/spec/rst/alternatives.html
-
-.. _Docutils: http://docutils.sourceforge.net/
-
-
-Copyright
-=========
-
-This document has been placed in the public domain.
-
-
-Acknowledgements
-================
-
-Some text is borrowed from PEP 216, Docstring Format [#PEP-216]_, by
-Moshe Zadka.
-
-Special thanks to all members past & present of the Python Doc-SIG_.
-
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/ref/doctree.txt b/docutils/docs/ref/doctree.txt
deleted file mode 100644
index 7f0c6cd6d..000000000
--- a/docutils/docs/ref/doctree.txt
+++ /dev/null
@@ -1,4840 +0,0 @@
-============================
- The Docutils Document Tree
-============================
-
-A Guide to the Docutils DTD
-***************************
-
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-
-.. contents:: :depth: 1
-
-
-This document describes the XML data structure of Docutils_ documents:
-the relationships and semantics of elements and attributes. The
-Docutils document structure is formally defined by the `Docutils
-Generic DTD`_ XML document type definition, docutils.dtd_, which is
-the definitive source for details of element structural relationships.
-
-This document does not discuss implementation details. Those can be
-found in internal documentation (docstrings) for the
-``docutils.nodes`` module, where the document tree data structure is
-implemented in a class library.
-
-The reader is assumed to have some familiarity with XML or SGML, and
-an understanding of the data structure meaning of "tree". For a list
-of introductory articles, see `Introducing the Extensible Markup
-Language (XML)`_.
-
-The reStructuredText_ markup is used for illustrative examples
-throughout this document. For a gentle introduction, see `A
-ReStructuredText Primer`_. For complete technical details, see the
-`reStructuredText Markup Specification`_.
-
-
-.. _Docutils: http://docutils.sourceforge.net/
-.. _Docutils Generic DTD:
-.. _Docutils DTD:
-.. _docutils.dtd: docutils.dtd
-.. _Introducing the Extensible Markup Language (XML):
- http://xml.coverpages.org/xmlIntro.html
-.. _reStructuredText: http://docutils.sourceforge.net/rst.html
-.. _A ReStructuredText Primer: ../docs/rst/quickstart.html
-.. _reStructuredText Markup Specification: rst/reStructuredText.html
-
-
--------------------
- Element Hierarchy
--------------------
-
-.. contents:: :local:
-
-Below is a simplified diagram of the hierarchy of elements in the
-Docutils document tree structure. An element may contain any other
-elements immediately below it in the diagram. Notes are written in
-square brackets. Element types in parentheses indicate recursive or
-one-to-many relationships; sections may contain (sub)sections, tables
-contain further body elements, etc. ::
-
- +--------------------------------------------------------------------+
- | document [may begin with a title, subtitle, docinfo, decoration] |
- | +--------------------------------------+
- | | sections [each begins with a title] |
- +-----------------------------+-------------------------+------------+
- | [body elements:] | (sections) |
- | | - literal | - lists | | - hyperlink +------------+
- | | blocks | - tables | | targets |
- | para- | - doctest | - block | foot- | - sub. defs |
- | graphs | blocks | quotes | notes | - comments |
- +---------+-----------+----------+-------+--------------+
- | [text]+ | [text] | (body elements) | [text] |
- | (inline +-----------+------------------+--------------+
- | markup) |
- +---------+
-
-The Docutils document model uses a simple, recursive model for section
-structure. A document_ node may contain body elements and section_
-elements. Sections in turn may contain body elements and sections.
-The level (depth) of a section element is determined from its physical
-nesting level; unlike other document models (``<h1>`` in HTML_,
-``<sect1>`` in DocBook_, ``<div1>`` in XMLSpec_) the level is not
-incorporated into the element name.
-
-The Docutils document model uses strict element content models. Every
-element has a unique structure and semantics, but elements may be
-classified into general categories (below). Only elements which are
-meant to directly contain text data have a mixed content model, where
-text data and inline elements may be intermixed. This is unlike the
-much looser HTML_ document model, where paragraphs and text data may
-occur at the same level.
-
-
-Structural Elements
-===================
-
-Structural elements may only contain child elements; they do not
-directly contain text data. Structural elements may contain body
-elements or further structural elements. Structural elements can only
-be child elements of other structural elements.
-
-Category members: document_, section_, topic_, sidebar_
-
-
-Structural Subelements
-----------------------
-
-Structural subelements are child elements of structural elements.
-
-Category members: title_, subtitle_, docinfo_, decoration_,
-transition_
-
-
-Bibliographic Elements
-``````````````````````
-
-The docinfo_ element is an optional child of document_. It groups
-bibliographic elements together.
-
-Category members: address_, author_, authors_, contact_, copyright_,
-date_, field_, organization_, revision_, status_, version_
-
-
-Decorative Elements
-```````````````````
-
-The decoration_ element is also an optional child of document_. It
-groups together elements used to generate page headers and footers.
-
-Category members: footer_, header_
-
-
-Body Elements
-=============
-
-Body elements are contained within structural elements and compound
-body elements. There are two subcategories of body elements: simple
-and compound.
-
-Category members: admonition_, attention_, block_quote_, bullet_list_,
-caution_, citation_, comment_, danger_, definition_list_,
-doctest_block_, enumerated_list_, error_, field_list_, figure_,
-footnote_, hint_, image_, important_, line_block_, literal_block_,
-note_, option_list_, paragraph_, pending_, raw_, rubric_,
-substitution_definition_, system_message_, table_, target_, tip_,
-warning_
-
-
-Simple Body Elements
---------------------
-
-Simple body elements directly are empty or contain text data. Those
-that contain text data may also contain inline elements. Such
-elements therefore have a "mixed content model".
-
-Category members: comment_, doctest_block_, image_, line_block_,
-literal_block_, paragraph_, pending_, raw_, rubric_,
-substitution_definition_, target_
-
-
-Compound Body Elements
-----------------------
-
-Compound body elements contain local substructure (body subelements)
-and further body elements. They do not directly contain text data.
-
-Category members: admonition_, attention_, block_quote_, bullet_list_,
-caution_, citation_, danger_, definition_list_, enumerated_list_,
-error_, field_list_, figure_, footnote_, hint_, important_, note_,
-option_list_, system_message_, table_, tip_, warning_
-
-
-Body Subelements
-````````````````
-
-Compound body elements contain specific subelements (e.g. bullet_list_
-contains list_item_). Subelements may themselves be compound elements
-(containing further child elements, like field_) or simple data
-elements (containing text data, like field_name_). These subelements
-always occur within specific parent elements, never at the body
-element level (beside paragraphs, etc.).
-
-Category members (simple): attribution_, caption_, classifier_,
-colspec_, field_name_, label_, option_argument_, option_string_, term_
-
-Category members (compound): definition_, definition_list_item_,
-description_, entry_, field_, field_body_, legend_, list_item_,
-option_, option_group_, option_list_item_, row_, tbody_, tgroup_,
-thead_
-
-
-Inline Elements
-===============
-
-Inline elements directly contain text data, and may also contain
-further inline elements. Inline elements are contained within simple
-body elements. Most inline elements have a "mixed content model".
-
-Category members: abbreviation_, acronym_, citation_reference_,
-emphasis_, footnote_reference_, generated_, image_, inline_, literal_,
-problematic_, reference_, strong_, subscript_,
-substitution_reference_, superscript_, target_, title_reference_, raw_
-
-
-.. _HTML: http://www.w3.org/MarkUp/
-.. _DocBook: http://docbook.org/tdg/en/html/docbook.html
-.. _XMLSpec: http://www.w3.org/XML/1998/06/xmlspec-report.htm
-
-
--------------------
- Element Reference
--------------------
-
-.. contents:: :local:
- :depth: 1
-
-Each element in the DTD (document type definition) is described in its
-own section below. Each section contains an introduction plus the
-following subsections:
-
-* Details (of element relationships and semantics):
-
- - Category: One or more references to the element categories in
- `Element Hierarchy`_ above. Some elements belong to more than one
- category.
-
- - Parents: A list of elements which may contain the element.
-
- - Children: A list of elements which may occur within the element.
-
- - Analogues: Describes analogous elements in well-known document
- models such as HTML_ or DocBook_. Lists similarities and
- differences.
-
- - Processing: Lists formatting or rendering recommendations for the
- element.
-
-* Content Model:
-
- The formal XML content model from the `Docutils DTD`_, followed by:
-
- - Attributes: Describes (or refers to descriptions of) the possible
- values and semantics of each attribute.
-
- - Parameter Entities: Lists the parameter entities which directly or
- indirectly include the element.
-
-* Examples: reStructuredText_ examples are shown along with
- fragments of the document trees resulting from parsing.
- _`Pseudo-XML` is used for the results of parsing and processing.
- Pseudo-XML is a representation of XML where nesting is indicated by
- indentation and end-tags are not shown. Some of the precision of
- real XML is given up in exchange for easier readability. For
- example, the following are equivalent:
-
- - Real XML::
-
- <document>
- <section id="a-title" name="a title">
- <title>A Title</title>
- <paragraph>A paragraph.</paragraph>
- </section>
- </document>
-
- - Pseudo-XML::
-
- <document>
- <section id="a-title" name="a title">
- <title>
- A Title
- <paragraph>
- A paragraph.
-
---------------------
-
-Many of the element reference sections below are marked "_`to be
-completed`". Please help complete this document by contributing to
-its writing.
-
-
-``abbreviation``
-================
-
-`To be completed`_.
-
-
-``acronym``
-===========
-
-`To be completed`_.
-
-
-``address``
-===========
-
-The ``address`` element holds the surface mailing address information
-for the author (individual or group) of the document, or a third-party
-contact address. Its structure is identical to that of the
-line_block_ element: whitespace is significant, especially newlines.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- The following elements may contain ``address``: docinfo_, authors_
-
-:Children:
- ``address`` elements contain text data plus `inline elements`_.
-
-:Analogues:
- ``address`` is analogous to the DocBook "address" element.
-
-:Processing:
- As with the line_block_ element, newlines and other whitespace is
- significant and must be preserved. However, a monospaced typeface
- need not be used.
-
- See also docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``address`` element contains the `common attributes`_ (id_,
- name_, dupname_, source_, and class_), plus `xml:space`_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``address``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Address: 123 Example Ave.
- Example, EX
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <address>
- 123 Example Ave.
- Example, EX
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``admonition``
-==============
-
-This element is a generic, titled admonition. Also see the specific
-admonition elements Docutils offers (in alphabetical order): caution_,
-danger_, error_, hint_, important_, note_, tip_, warning_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``admonition``.
-
-:Children:
- ``admonition`` elements begin with a title_ and may contain one or
- more `body elements`_.
-
-:Analogues:
- ``admonition`` has no direct analogues in common DTDs. It can be
- emulated with primitives and type effects.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (title_, (`%body.elements;`_)+)
-
-:Attributes:
- The ``admonition`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``admonition``. The `%structure.model;`_ parameter entity
- indirectly includes ``admonition``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. admonition:: And, by the way...
-
- You can make up your own admonition too.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <admonition class="admonition-and-by-the-way">
- <title>
- And, by the way...
- <paragraph>
- You can make up your own admonition too.
-
-
-``attention``
-=============
-
-The ``attention`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): caution_, danger_, error_,
-hint_, important_, note_, tip_, warning_, and the generic admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``attention``.
-
-:Children:
- ``attention`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``attention`` has no direct analogues in common DTDs. It can be
- emulated with primitives and type effects.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Attention!" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``attention`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``attention``. The `%structure.model;`_ parameter entity
- indirectly includes ``attention``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Attention:: All your base are belong to us.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <attention>
- <paragraph>
- All your base are belong to us.
-
-
-``attribution``
-===============
-
-`To be completed`_.
-
-
-``author``
-==========
-
-The ``author`` element holds the name of the author of the document.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- The following elements may contain ``author``: docinfo_, authors_
-
-:Children:
- ``author`` elements may contain text data plus `inline elements`_.
-
-:Analogues:
- ``author`` is analogous to the DocBook "author" element.
-
-:Processing:
- See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``author`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``author``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Author: J. Random Hacker
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <author>
- J. Random Hacker
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``authors``
-===========
-
-The ``authors`` element is a container for author information for
-documents with multiple authors.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``authors``.
-
-:Children:
- ``authors`` elements may contain the following elements: author_,
- organization_, address_, contact_
-
-:Analogues:
- ``authors`` is analogous to the DocBook "authors" element.
-
-:Processing:
- See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- ((author_, organization_?, address_?, contact_?)+)
-
-:Attributes:
- The ``authors`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``authors``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Authors: J. Random Hacker; Jane Doe
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <authors>
- <author>
- J. Random Hacker
- <author>
- Jane Doe
-
-In reStructuredText, multiple author's names are separated with
-semicolons (";") or commas (","); semicolons take precedence. There
-is currently no way to represent the author's organization, address,
-or contact in a reStructuredText "Authors" field.
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``block_quote``
-===============
-
-The ``block_quote`` element is used for quotations set off from the
-main text (standalone).
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``block_quote``.
-
-:Children:
- ``block_quote`` elements contain `body elements`_ followed by an
- optional attribution_ element.
-
-:Analogues:
- ``block_quote`` is analogous to the "blockquote" element in both
- HTML and DocBook.
-
-:Processing:
- ``block_quote`` elements serve to set their contents off from the
- main text, typically with indentation and/or other decoration.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- ((`%body.elements;`_)+, attribution_?)
-
-:Attributes:
- The ``block_quote`` element contains only the `common
- attributes`_: id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``block_quote``. The `%structure.model;`_ parameter entity
- indirectly includes ``block_quote``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- As a great paleontologist once said,
-
- This theory, that is mine, is mine.
-
- -- Anne Elk (Miss)
-
-Pseudo-XML_ fragment from simple parsing::
-
- <paragraph>
- As a great paleontologist once said,
- <block_quote>
- <paragraph>
- This theory, that is mine, is mine.
- <attribution>
- Anne Elk (Miss)
-
-
-``bullet_list``
-===============
-
-The ``bullet_list`` element contains list_item_ elements which are
-uniformly marked with bullets. Bullets are typically simple dingbats
-(symbols) such as circles and squares.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``bullet_list``.
-
-:Children:
- ``bullet_list`` elements contain one or more list_item_ elements.
-
-:Analogues:
- ``bullet_list`` is analogous to the HTML "ul" element and to the
- DocBook "itemizedlist" element. HTML's "ul" is short for
- "unordered list", which we consider to be a misnomer. "Unordered"
- implies that the list items may be randomly rearranged without
- affecting the meaning of the list. Bullet lists *are* often
- ordered; the ordering is simply left implicit.
-
-:Processing:
- Each list item should begin a new vertical block, prefaced by a
- bullet/dingbat.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (list_item_ +)
-
-:Attributes:
- The ``bullet_list`` element contains the `common attributes`_
- (id_, name_, dupname_, source_, and class_), plus bullet_.
-
- ``bullet`` is used to record the style of bullet from the input
- data. In documents processed from reStructuredText_, it contains
- one of "-", "+", or "*". It may be ignored in processing.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``bullet_list``. The `%structure.model;`_ parameter entity
- indirectly includes ``bullet_list``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- - Item 1, paragraph 1.
-
- Item 1, paragraph 2.
-
- - Item 2.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <bullet_list bullet="-">
- <list_item>
- <paragraph>
- Item 1, paragraph 1.
- <paragraph>
- Item 1, paragraph 2.
- <list_item>
- <paragraph>
- Item 2.
-
-See list_item_ for another example.
-
-
-``caption``
-===========
-
-`To be completed`_.
-
-
-``caution``
-===========
-
-The ``caution`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, danger_, error_,
-hint_, important_, note_, tip_, warning_, and the generic admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``caution``.
-
-:Children:
- ``caution`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``caution`` is analogous to the DocBook "caution" element.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Caution" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``caution`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``caution``. The `%structure.model;`_ parameter entity
- indirectly includes ``caution``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Caution:: Don't take any wooden nickels.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <caution>
- <paragraph>
- Don't take any wooden nickels.
-
-
-``citation``
-============
-
-`To be completed`_.
-
-
-``citation_reference``
-======================
-
-`To be completed`_.
-
-
-``classifier``
-==============
-
-The ``classifier`` element contains the classification or type of the
-term_ being defined in a definition_list_. For example, it can be
-used to indicate the type of a variable.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_ (simple)
-
-:Parents:
- Only the definition_list_item_ element contains ``classifier``.
-
-:Children:
- ``classifier`` elements may contain text data plus `inline elements`_.
-
-:Analogues:
- ``classifier`` has no direct analogues in common DTDs. It can be
- emulated with primitives or type effects.
-
-:Processing:
- See definition_list_item_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``classifier`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-Here is a hypothetical data dictionary. reStructuredText_ source::
-
- name : string
- Customer name.
- i : int
- Temporary index variable.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <definition_list>
- <definition_list_item>
- <term>
- name
- <classifier>
- string
- <definition>
- <paragraph>
- Customer name.
- <definition_list_item>
- <term>
- i
- <classifier>
- int
- <definition>
- <paragraph>
- Temporary index variable.
-
-
-``colspec``
-===========
-
-`To be completed`_.
-
-
-``comment``
-===========
-
-`To be completed`_.
-
-
-``contact``
-===========
-
-The ``contact`` element holds contact information for the author
-(individual or group) of the document, or a third-party contact. It
-is typically used for an email or web address.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- The following elements may contain ``contact``: docinfo_, authors_
-
-:Children:
- ``contact`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``contact`` is analogous to the DocBook "email" element. The HTML
- "address" element serves a similar purpose.
-
-:Processing:
- See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``contact`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``contact``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Contact: jrh@example.com
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <contact>
- <reference refuri="mailto:jrh@example.com">
- jrh@example.com
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``copyright``
-=============
-
-The ``copyright`` element contains the document's copyright statement.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``copyright``.
-
-:Children:
- ``copyright`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``copyright`` is analogous to the DocBook "copyright" element.
-
-:Processing:
- See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``copyright`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``copyright``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Copyright: This document has been placed in the public domain.
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <copyright>
- This document has been placed in the public domain.
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``danger``
-==========
-
-The ``danger`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, caution_, error_,
-hint_, important_, note_, tip_, warning_, and the generic admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``danger``.
-
-:Children:
- ``danger`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``danger`` has no direct analogues in common DTDs. It can be
- emulated with primitives and type effects.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "!DANGER!" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``danger`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``danger``. The `%structure.model;`_ parameter entity
- indirectly includes ``danger``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. DANGER:: Mad scientist at work!
-
-Pseudo-XML_ fragment from simple parsing::
-
- <danger>
- <paragraph>
- Mad scientist at work!
-
-
-``date``
-========
-
-The ``date`` element contains the date of publication, release, or
-last modification of the document.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``date``.
-
-:Children:
- ``date`` elements may contain text data plus `inline elements`_.
-
-:Analogues:
- ``date`` is analogous to the DocBook "date" element.
-
-:Processing:
- Often used with the RCS/CVS keyword "Date". See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``date`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``date``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Date: 2002-08-20
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <date>
- 2002-08-20
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``decoration``
-==============
-
-The ``decoration`` element is a container for header_ and footer_
-elements and potential future extensions. These elements are used for
-page navigation, notes, time/datestamp, etc. Currently only the
-footer_ element is implemented, populated with processing information
-(datestamp, a link to Docutils_, etc.).
-
-
-Details
--------
-
-:Category:
- `Structural Subelements`_
-
-:Parents:
- Only the document_ element contains ``decoration``.
-
-:Children:
- ``decoration`` elements may contain `decorative elements`_.
-
-:Analogues:
- There are no direct analogies to ``decoration`` in HTML or in
- DocBook. Equivalents are typically constructed from primitives
- and/or generated by the processing system.
-
-:Processing:
- See the individual `decorative elements`_.
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (header_?, footer_?)
-
-Although the content model doesn't specifically require contents, no
-empty ``decoration`` elements are ever created.
-
-:Attributes:
- The ``decoration`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- A paragraph.
-
-Complete pseudo-XML_ result after parsing and applying transforms,
-assuming that the datestamp command-line option or configuration
-setting has been supplied::
-
- <document>
- <decoration>
- <footer>
- <paragraph>
- Generated on: 2002-08-20.
- <paragraph>
- A paragraph.
-
-
-``definition``
-==============
-
-The ``definition`` element is a container for the body elements used
-to define a term_ in a definition_list_.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_ (compound)
-
-:Parents:
- Only definition_list_item_ elements contain ``definition``.
-
-:Children:
- ``definition`` elements may contain `body elements`_.
-
-:Analogues:
- ``definition`` is analogous to the HTML "dd" element and to the
- DocBook "listitem" element (inside a "variablelistentry" element).
-
-:Processing:
- See definition_list_item_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``definition`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the definition_list_, definition_list_item_, and
-classifier_ elements.
-
-
-``definition_list``
-===================
-
-The ``definition_list`` element contains a list of terms and their
-definitions. It can be used for glossaries or dictionaries, to
-describe or classify things, for dialogues, or to itemize subtopics
-(such as in this reference).
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``definition_list``.
-
-:Children:
- ``definition_list`` elements contain one or more
- definition_list_item_ elements.
-
-:Analogues:
- ``definition_list`` is analogous to the HTML "dl" element and to
- the DocBook "variablelist" element.
-
-:Processing:
- See definition_list_item_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (definition_list_item_ +)
-
-:Attributes:
- The ``definition_list`` element contains only the `common
- attributes`_: id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``definition_list``. The `%structure.model;`_ parameter entity
- indirectly includes ``definition_list``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Term
- Definition.
-
- Term : classifier
- The ' : ' indicates a classifier in
- definition list item terms only.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <definition_list>
- <definition_list_item>
- <term>
- Term
- <definition>
- <paragraph>
- Definition.
- <definition_list_item>
- <term>
- Term
- <classifier>
- classifier
- <definition>
- <paragraph>
- The ' : ' indicates a classifier in
- definition list item terms only.
-
-See definition_list_item_ and classifier_ for further examples.
-
-
-``definition_list_item``
-========================
-
-The ``definition_list_item`` element contains a single
-term_/definition_ pair (with optional classifier_).
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_ (compound)
-
-:Parents:
- Only the definition_list_ element contains
- ``definition_list_item``.
-
-:Children:
- ``definition_list_item`` elements each contain a single term_,
- an optional classifier_, and a definition_.
-
-:Analogues:
- ``definition_list_item`` is analogous to the DocBook
- "variablelistentry" element.
-
-:Processing:
- The optional classifier_ can be rendered differently from the
- term_. They should be separated visually, typically by spaces
- plus a colon or dash.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (term_, classifier_?, definition_)
-
-:Attributes:
- The ``definition_list_item`` element contains only the `common
- attributes`_: id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Tyrannosaurus Rex : carnivore
- Big and scary; the "Tyrant King".
-
- Brontosaurus : herbivore
- All brontosauruses are thin at one end,
- much much thicker in the middle
- and then thin again at the far end.
-
- -- Anne Elk (Miss)
-
-Pseudo-XML_ fragment from simple parsing::
-
- <definition_list>
- <definition_list_item>
- <term>
- Tyrannosaurus Rex
- <classifier>
- carnivore
- <definition>
- <paragraph>
- Big and scary; the "Tyrant King".
- <definition_list_item>
- <term>
- Brontosaurus
- <classifier>
- herbivore
- <definition>
- <paragraph>
- All brontosauruses are thin at one end,
- much much thicker in the middle
- and then thin again at the far end.
- <paragraph>
- -- Anne Elk (Miss)
-
-See definition_list_ and classifier_ for further examples.
-
-
-``description``
-===============
-
-The ``description`` element contains body elements, describing the
-purpose or effect of a command-line option or group of options.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the option_list_item_ element contains ``description``.
-
-:Children:
- ``description`` elements may contain `body elements`_.
-
-:Analogues:
- ``description`` has no direct analogues in common DTDs.
-
-:Processing:
- See option_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``description`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the option_list_ element.
-
-
-``docinfo``
-===========
-
-The ``docinfo`` element is a container for document bibliographic
-data, or meta-data (data about the document). It corresponds to the
-front matter of a book, such as the title page and copyright page.
-
-
-Details
--------
-
-:Category:
- `Structural Subelements`_
-
-:Parents:
- Only the document_ element contains ``docinfo``.
-
-:Children:
- ``docinfo`` elements contain `bibliographic elements`_.
-
-:Analogues:
- ``docinfo`` is analogous to DocBook "info" elements ("bookinfo"
- etc.). There are no directly analogous HTML elements; the "meta"
- element carries some of the same information, albeit invisibly.
-
-:Processing:
- The ``docinfo`` element may be rendered as a two-column table or
- in other styles. It may even be invisible or omitted from the
- processed output. Meta-data may be extracted from ``docinfo``
- children; for example, HTML ``<meta>`` tags may be constructed.
-
- When Docutils_ transforms a reStructuredText_ field_list_ into a
- ``docinfo`` element (see the examples below), RCS/CVS keywords are
- normally stripped from simple (one paragraph) field bodies. For
- complete details, please see `RCS Keywords`_ in the
- `reStructuredText Markup Specification`_.
-
- .. _RCS Keywords: rst/reStructuredText.html#rcs-keywords
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%bibliographic.elements;`_)+
-
-:Attributes:
- The ``docinfo`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-Docinfo is represented in reStructuredText_ by a field_list_ in a
-bibliographic context: the first non-comment element of a document_,
-after any document title_/subtitle_. The field list is transformed
-into a ``docinfo`` element and its children by a transform. Source::
-
- Docinfo Example
- ===============
-
- :Author: J. Random Hacker
- :Contact: jrh@example.com
- :Date: 2002-08-18
- :Status: Work In Progress
- :Version: 1
- :Filename: $RCSfile$
- :Copyright: This document has been placed in the public domain.
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="docinfo-example" name="docinfo example">
- <title>
- Docinfo Example
- <docinfo>
- <author>
- J. Random Hacker
- <contact>
- <reference refuri="mailto:jrh@example.com">
- jrh@example.com
- <date>
- 2002-08-18
- <status>
- Work In Progress
- <version>
- 1
- <field>
- <field_name>
- Filename
- <field_body>
- <paragraph>
- doctree.txt
- <copyright>
- This document has been placed in the public domain.
-
-Note that "Filename" is a non-standard ``docinfo`` field, so becomes a
-generic ``field`` element. Also note that the "RCSfile" keyword
-syntax has been stripped from the "Filename" data.
-
-See field_list_ for an example in a non-bibliographic context. Also
-see the individual examples for the various `bibliographic elements`_.
-
-
-``doctest_block``
-=================
-
-The ``doctest_block`` element is a Python-specific variant of
-literal_block_. It is a block of text where line breaks and
-whitespace are significant and must be preserved. ``doctest_block``
-elements are used for interactive Python interpreter sessions, which
-are distinguished by their input prompt: ``>>>``. They are meant to
-illustrate usage by example, and provide an elegant and powerful
-testing environment via the `doctest module`_ in the Python standard
-library.
-
-.. _doctest module:
- http://www.python.org/doc/current/lib/module-doctest.html
-
-
-Details
--------
-
-:Category:
- `Simple Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``doctest_block``.
-
-:Children:
- ``doctest_block`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``doctest_block`` is analogous to the HTML "pre" element and to
- the DocBook "programlisting" and "screen" elements.
-
-:Processing:
- As with literal_block_, ``doctest_block`` elements are typically
- rendered in a monospaced typeface. It is crucial that all
- whitespace and line breaks are preserved in the rendered form.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``doctest_block`` element contains the `common attributes`_
- (id_, name_, dupname_, source_, and class_), plus `xml:space`_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``doctest_block``. The `%structure.model;`_ parameter entity
- indirectly includes ``doctest_block``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- This is an ordinary paragraph.
-
- >>> print 'this is a Doctest block'
- this is a Doctest block
-
-Pseudo-XML_ fragment from simple parsing::
-
- <paragraph>
- This is an ordinary paragraph.
- <doctest_block xml:space="preserve">
- >>> print 'this is a Doctest block'
- this is a Doctest block
-
-
-``document``
-============
-
-The ``document`` element is the root (topmost) element of the Docutils
-document tree. ``document`` is the direct or indirect ancestor of
-every other element in the tree. It encloses the entire document
-tree. It is the starting point for a document.
-
-
-Details
--------
-
-:Category:
- `Structural Elements`_
-
-:Parents:
- The ``document`` element has no parents.
-
-:Children:
- ``document`` elements may contain `structural subelements`_,
- `structural elements`_, and `body elements`_.
-
-:Analogues:
- ``document`` is analogous to the HTML "html" element and to
- several DocBook elements such as "book".
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- ((title_,
- subtitle_?)?,
- docinfo_?,
- decoration_?,
- `%structure.model;`_)
-
-Depending on the source of the data and the stage of processing, the
-"document" may not initially contain a "title". A document title is
-not directly representable in reStructuredText_. Instead, a lone
-top-level section may have its title promoted to become the document
-title_, and similarly for a lone second-level (sub)section's title to
-become the document subtitle_. The "docinfo_" may be transformed from
-an initial field_list_, and "decoration_" is usually constructed
-programmatically.
-
-See the `%structure.model;`_ parameter entity for details of the body
-of a ``document``.
-
-:Attributes:
- The ``document`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- A Title
- =======
-
- A paragraph.
-
-Complete pseudo-XML_ result from simple parsing::
-
- <document>
- <section id="a-title" name="a title">
- <title>
- A Title
- <paragraph>
- A paragraph.
-
-After applying transforms, the section title is promoted to become the
-document title::
-
- <document id="a-title" name="a title">
- <title>
- A Title
- <paragraph>
- A paragraph.
-
-
-``emphasis``
-============
-
-`To be completed`_.
-
-
-``entry``
-=========
-
-`To be completed`_.
-
-
-``enumerated_list``
-===================
-
-The ``enumerated_list`` element contains list_item_ elements which are
-uniformly marked with enumerator labels.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``enumerated_list``.
-
-:Children:
- ``enumerated_list`` elements contain one or more list_item_
- elements.
-
-:Analogues:
- ``enumerated_list`` is analogous to the HTML "ol" element and to
- the DocBook "orderedlist" element.
-
-:Processing:
- Each list item should begin a new vertical block, prefaced by a
- enumeration marker (such as "1.").
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (list_item_ +)
-
-:Attributes:
- The ``enumerated_list`` element contains the `common attributes`_
- (id_, name_, dupname_, source_, and class_), plus enumtype_,
- prefix_, suffix_, and start_.
-
- ``enumtype`` is used to record the intended enumeration sequence,
- one of "arabic" (1, 2, 3, ...), "loweralpha" (a, b, c, ..., z),
- "upperalpha" (A, B, C, ..., Z), "lowerroman" (i, ii, iii, iv, ...,
- mmmmcmxcix [4999]), or "upperroman" (I, II, III, IV, ...,
- MMMMCMXCIX [4999]).
-
- ``prefix`` stores the formatting characters used before the
- enumerator. In documents originating from reStructuredText_ data,
- it will contain either "" (empty string) or "(" (left
- parenthesis). It may or may not affect processing.
-
- ``suffix`` stores the formatting characters used after the
- enumerator. In documents originating from reStructuredText_ data,
- it will contain either "." (period) or ")" (right parenthesis).
- Depending on the capabilities of the output format, this attribute
- may or may not affect processing.
-
- ``start`` contains the ordinal value of the first item in the
- list, in decimal. For lists beginning at value 1 ("1", "a", "A",
- "i", or "I"), this attribute may be omitted.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``enumerated_list``. The `%structure.model;`_ parameter entity
- indirectly includes ``enumerated_list``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- 1. Item 1.
-
- (A) Item A.
- (B) Item B.
- (C) Item C.
-
- 2. Item 2.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <enumerated_list enumtype="arabic" prefix="" suffix=".">
- <list_item>
- <paragraph>
- Item 1.
- <enumerated_list enumtype="upperalpha" prefix="(" suffix=")">
- <list_item>
- <paragraph>
- Item A.
- <list_item>
- <paragraph>
- Item B.
- <list_item>
- <paragraph>
- Item C.
- <list_item>
- <paragraph>
- Item 2.
-
-See list_item_ for another example.
-
-
-``error``
-=========
-
-The ``error`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, caution_,
-danger_, hint_, important_, note_, tip_, warning_, and the generic
-admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``error``.
-
-:Children:
- ``error`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``error`` has no direct analogues in common DTDs. It can be
- emulated with primitives and type effects.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Error" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``error`` element contains only the `common attributes`_: id_,
- name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``error``. The `%structure.model;`_ parameter entity indirectly
- includes ``error``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Error:: Does not compute.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <error>
- <paragraph>
- Does not compute.
-
-
-``field``
-=========
-
-The ``field`` element contains a pair of field_name_ and field_body_
-elements.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- The following elements may contain ``field``: docinfo_,
- field_list_
-
-:Children:
- Each ``field`` element contains one field_name_ and one
- field_body_ element.
-
-:Analogues:
- ``field`` has no direct analogues in common DTDs.
-
-:Processing:
- See field_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (field_name_, field_body_)
-
-:Attributes:
- The ``field`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``field``.
-
-
-Examples
---------
-
-See the examples for the field_list_ and docinfo_ elements.
-
-
-``field_body``
-==============
-
-The ``field_body`` element contains body elements. It is analogous to
-a database field's data.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the field_ element contains ``field_body``.
-
-:Children:
- ``field_body`` elements may contain `body elements`_.
-
-:Analogues:
- ``field_body`` has no direct analogues in common DTDs.
-
-:Processing:
- See field_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)*
-
-:Attributes:
- The ``field_body`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the field_list_ and docinfo_ elements.
-
-
-``field_list``
-==============
-
-The ``field_list`` element contains two-column table-like structures
-resembling database records (label & data pairs). Field lists are
-often meant for further processing. In reStructuredText_, field lists
-are used to represent bibliographic fields (contents of the docinfo_
-element) and directive options.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``field_list``.
-
-:Children:
- ``field_list`` elements contain one or more field_ elements.
-
-:Analogues:
- ``field_list`` has no direct analogues in common DTDs. It can be
- emulated with primitives such as tables.
-
-:Processing:
- A ``field_list`` is typically rendered as a two-column list, where
- the first column contains "labels" (usually with a colon suffix).
- However, field lists are often used for extension syntax or
- special processing. Such structures do not survive as field lists
- to be rendered.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (field_ +)
-
-:Attributes:
- The ``field_list`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``field_list``. The `%structure.model;`_ parameter entity
- indirectly includes ``field_list``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- :Author: Me
- :Version: 1
- :Date: 2001-08-11
- :Parameter i: integer
-
-Pseudo-XML_ fragment from simple parsing::
-
- <field_list>
- <field>
- <field_name>
- Author
- <field_body>
- <paragraph>
- Me
- <field>
- <field_name>
- Version
- <field_body>
- <paragraph>
- 1
- <field>
- <field_name>
- Date
- <field_body>
- <paragraph>
- 2001-08-11
- <field>
- <field_name>
- Parameter i
- <field_body>
- <paragraph>
- integer
-
-
-``field_name``
-==============
-
-The ``field_name`` element contains text data only. It is analogous
-to a database field's name.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the field_ element contains ``field_name``.
-
-:Children:
- ``field_name`` elements have no children. They may contain text
- data only.
-
-:Analogues:
- ``field_name`` has no direct analogues in common DTDs.
-
-:Processing:
- See field_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (#PCDATA)
-
-:Attributes:
- The ``field_name`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the field_list_ and docinfo_ elements.
-
-
-``figure``
-==========
-
-`To be completed`_.
-
-
-``footer``
-==========
-
-The ``footer`` element is a container element whose contents are meant
-to appear at the bottom of a web page, or repeated at the bottom of
-every printed page. Currently the ``footer`` element may contain
-processing information (datestamp, a link to Docutils_, etc.).
-
-
-Details
--------
-
-:Category:
- `Decorative Elements`_
-
-:Parents:
- Only the decoration_ element contains ``footer``.
-
-:Children:
- ``footer`` elements may contain `body elements`_.
-
-:Analogues:
- There are no direct analogies to ``footer`` in HTML or DocBook.
- Equivalents are typically constructed from primitives and/or
- generated by the processing system.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``footer`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- A paragraph.
-
-Complete pseudo-XML_ result after parsing and applying transforms,
-assuming that the datestamp command-line option or configuration
-setting has been supplied::
-
- <document>
- <decoration>
- <footer>
- <paragraph>
- Generated on: 2002-08-20.
- <paragraph>
- A paragraph.
-
-
-``footnote``
-============
-
-`To be completed`_.
-
-
-``footnote_reference``
-======================
-
-`To be completed`_.
-
-
-``generated``
-=============
-
-`To be completed`_.
-
-
-``header``
-==========
-
-The ``header`` element is a container element whose contents are meant
-to appear at the top of a web page, or at the top of every printed
-page. Docutils does not yet make use of the ``header`` element.
-
-
-Details
--------
-
-:Category:
- `Decorative Elements`_
-
-:Parents:
- Only the decoration_ element contains ``header``.
-
-:Children:
- ``header`` elements may contain `body elements`_.
-
-:Analogues:
- There are no direct analogies to ``header`` in HTML or DocBook.
- Equivalents are typically constructed from primitives and/or
- generated by the processing system.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``header`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-None.
-
-
-``hint``
-========
-
-The ``hint`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, caution_,
-danger_, error_, important_, note_, tip_, warning_, and the generic
-admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``hint``.
-
-:Children:
- ``hint`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``hint`` has no direct analogues in common DTDs. It can be
- emulated with primitives and type effects.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Hint" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``hint`` element contains only the `common attributes`_: id_,
- name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``hint``. The `%structure.model;`_ parameter entity indirectly
- includes ``hint``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Hint:: It's bigger than a bread box.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <hint>
- <paragraph>
- It's bigger than a bread box.
-
-
-``image``
-=========
-
-`To be completed`_.
-
-
-``important``
-=============
-
-The ``important`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, caution_,
-danger_, error_, hint_, note_, tip_, warning_, and the generic
-admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``important``.
-
-:Children:
- ``important`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``important`` is analogous to the DocBook "important" element.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Important" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``important`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``important``. The `%structure.model;`_ parameter entity
- indirectly includes ``important``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Important::
-
- * Wash behind your ears.
- * Clean up your room.
- * Back up your data.
- * Call your mother.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <important>
- <bullet_list>
- <list_item>
- <paragraph>
- Wash behind your ears.
- <list_item>
- <paragraph>
- Clean up your room.
- <list_item>
- <paragraph>
- Back up your data.
- <list_item>
- <paragraph>
- Call your mother.
-
-
-``inline``
-==========
-
-`To be completed`_.
-
-
-``label``
-=========
-
-`To be completed`_.
-
-
-``legend``
-==========
-
-`To be completed`_.
-
-
-``line_block``
-==============
-
-The ``line_block`` element contains a block of text where line breaks
-and whitespace are significant and must be preserved. ``line_block``
-elements are commonly used for verse and addresses. See `line_block`_
-for an alternative useful for program listings and interactive
-computer sessions.
-
-
-Details
--------
-
-:Category:
- `Simple Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``line_block``.
-
-:Children:
- ``line_block`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``line_block`` is analogous to the DocBook "literallayout" element
- and to the HTML "pre" element (with modifications to typeface
- styles).
-
-:Processing:
- Unline ``literal_block``, ``line_block`` elements are typically
- rendered in an ordinary text typeface. It is crucial that all
- whitespace and line breaks are preserved in the rendered form.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``line_block`` element contains the `common attributes`_ (id_,
- name_, dupname_, source_, and class_), plus `xml:space`_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``line_block``. The `%structure.model;`_ parameter entity
- indirectly includes ``line_block``.
-
-
-Examples
---------
-
-reStructuredText uses a directive to indicate a ``line_block``.
-Example source::
-
- Take it away, Eric the Orchestra Leader!
-
- .. line-block::
-
- 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...
-
-Pseudo-XML_ fragment from simple parsing::
-
- <paragraph>
- Take it away, Eric the Orchestra Leader!
- <line_block xml:space="preserve">
- A one, two, a one two three four
-
- Half a bee, philosophically,
- must, <emphasis>ipso facto</emphasis>, half not be.
- But half the bee has got to be,
- <emphasis>vis a vis</emphasis>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...
-
-
-``list_item``
-=============
-
-The ``list_item`` element is a container for the elements of a list
-item.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_ (compound)
-
-:Parents:
- The bullet_list_ and enumerated_list_ elements contain
- ``list_item``.
-
-:Children:
- ``list_item`` elements may contain `body elements`_.
-
-:Analogues:
- ``list_item`` is analogous to the HTML "li" element and to the
- DocBook "listitem" element.
-
-:Processing:
- See bullet_list_ or enumerated_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``list_item`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- 1. Outer list, item 1.
-
- * Inner list, item 1.
- * Inner list, item 2.
-
- 2. Outer list, item 2.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <enumerated_list enumtype="arabic" prefix="" suffix=".">
- <list_item>
- <paragraph>
- Outer list, item 1.
- <bullet_list bullet="*">
- <list_item>
- <paragraph>
- Inner list, item 1.
- <list_item>
- <paragraph>
- Inner list, item 2.
- <list_item>
- <paragraph>
- Outer list, item 2.
-
-See bullet_list_ or enumerated_list_ for further examples.
-
-
-``literal``
-===========
-
-`To be completed`_.
-
-
-``literal_block``
-=================
-
-The ``literal_block`` element contains a block of text where line
-breaks and whitespace are significant and must be preserved.
-``literal_block`` elements are commonly used for program listings and
-interactive computer sessions. See `line_block`_ for an alternative
-useful for verse and addresses.
-
-
-Details
--------
-
-:Category:
- `Simple Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``literal_block``.
-
-:Children:
- ``literal_block`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``literal_block`` is analogous to the HTML "pre" element and to
- the DocBook "programlisting" and "screen" elements.
-
-:Processing:
- ``literal_block`` elements are typically rendered in a monospaced
- typeface. It is crucial that all whitespace and line breaks are
- preserved in the rendered form.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``literal_block`` element contains the `common attributes`_
- (id_, name_, dupname_, source_, and class_), plus `xml:space`_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``literal_block``. The `%structure.model;`_ parameter entity
- indirectly includes ``literal_block``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- Here is a literal block::
-
- if literal_block:
- text = 'is left as-is'
- spaces_and_linebreaks = 'are preserved'
- markup_processing = None
-
-Pseudo-XML_ fragment from simple parsing::
-
- <paragraph>
- Here is a literal block:
- <literal_block xml:space="preserve">
- if literal_block:
- text = 'is left as-is'
- spaces_and_linebreaks = 'are preserved'
- markup_processing = None
-
-
-``note``
-========
-
-The ``note`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, caution_,
-danger_, error_, hint_, important_, tip_, warning_, and the generic
-admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``note``.
-
-:Children:
- ``note`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``note`` is analogous to the DocBook "note" element.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Note" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``note`` element contains only the `common attributes`_: id_,
- name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``note``. The `%structure.model;`_ parameter entity indirectly
- includes ``note``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Note:: Admonitions can be handy to break up a
- long boring technical document.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <note>
- <paragraph>
- Admonitions can be handy to break up a
- long boring technical document.
-
-``option``
-==========
-
-The ``option`` element groups an option string together with zero or
-more option argument placeholders. Note that reStructuredText_
-currently supports only one argument per option.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the option_group_ element contains ``option``.
-
-:Children:
- Each ``option`` element contains one option_string_ and zero or
- more option_argument_ elements.
-
-:Analogues:
- ``option`` has no direct analogues in common DTDs.
-
-:Processing:
- See option_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (option_string_, option_argument_ \*)
-
-:Attributes:
- The ``option`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the option_list_ element.
-
-
-``option_argument``
-===================
-
-The ``option_argument`` element contains placeholder text for option
-arguments.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the option_ element contains ``option_argument``.
-
-:Children:
- ``option_argument`` elements contain text data only.
-
-:Analogues:
- ``option_argument`` has no direct analogues in common DTDs.
-
-:Processing:
- The value of the "delimiter" attribute is prefixed to the
- ``option_argument``, separating it from its option_string_ or a
- preceding ``option_argument``. The ``option_argument`` text is
- typically rendered in a monospaced typeface, possibly italicized
- or otherwise altered to indicate its placeholder nature.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (#PCDATA)
-
-:Attributes:
- The ``option_argument`` element contains the `common attributes`_ (id_,
- name_, dupname_, source_, and class_), plus delimiter_.
-
- ``delimiter`` contains the text preceding the ``option_argument``:
- either the text separating it from the option_string_ (typically
- either "=" or " ") or the text between option arguments (typically
- either "," or " ").
-
-
-Examples
---------
-
-See the examples for the option_list_ element.
-
-
-``option_group``
-================
-
-The ``option_group`` element groups together one or more option_
-elements, all synonyms.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the option_list_item_ element contains ``option_group``.
-
-:Children:
- ``option_group`` elements contain one or more option_ elements.
-
- ``option_group`` is an empty element and has no children.
-
- Each ``option_group`` element contains one _ and
- one _ element.
-
-:Analogues:
- ``option_group`` has no direct analogues in common DTDs.
-
-:Processing:
- Typically option_ elements within an ``option_group`` are joined
- together in a comma-separated list.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (option_group_, description_)
-
-:Attributes:
- The ``option_group`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the option_list_ element.
-
-
-``option_list``
-===============
-
-Each ``option_list`` element contains a two-column list of
-command-line options and descriptions, documenting a program's
-options.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``option_list``.
-
-:Children:
- ``option_list`` elements contain one or more option_list_item_
- elements.
-
-:Analogues:
- ``option_list`` has no direct analogues in common DTDs. It can be
- emulated with primitives such as tables.
-
-:Processing:
- An ``option_list`` is typically rendered as a two-column list,
- where the first column contains option strings and arguments, and
- the second column contains descriptions.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (option_list_item_ +)
-
-:Attributes:
- The ``option_list`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``option_list``. The `%structure.model;`_ parameter entity
- indirectly includes ``option_list``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- -a command-line option "a"
- -1 file, --one=file, --two file
- Multiple options with arguments.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <option_list>
- <option_list_item>
- <option_group>
- <option>
- <option_string>
- -a
- <description>
- <paragraph>
- command-line option "a"
- <option_list_item>
- <option_group>
- <option>
- <option_string>
- -1
- <option_argument delimiter=" ">
- file
- <option>
- <option_string>
- --one
- <option_argument delimiter="=">
- file
- <option>
- <option_string>
- --two
- <option_argument delimiter=" ">
- file
- <description>
- <paragraph>
- Multiple options with arguments.
-
-
-``option_list_item``
-====================
-
-The ``option_list_item`` element is a container for a pair of
-option_group_ and description_ elements.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the option_list_ element contains ``option_list_item``.
-
-:Children:
- Each ``option_list_item`` element contains one option_group_ and
- one description_ element.
-
-:Analogues:
- ``option_list_item`` has no direct analogues in common DTDs.
-
-:Processing:
- See option_list_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (option_group_, description_)
-
-:Attributes:
- The ``option_list_item`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the option_list_ element.
-
-
-``option_string``
-=================
-
-The ``option_string`` element contains the text of a command-line
-option.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_
-
-:Parents:
- Only the option_ element contains ``option_string``.
-
-:Children:
- ``option_string`` elements contain text data only.
-
-:Analogues:
- ``option_string`` has no direct analogues in common DTDs.
-
-:Processing:
- The ``option_string`` text is typically rendered in a monospaced
- typeface.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (#PCDATA)
-
-:Attributes:
- The ``option_string`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the option_list_ element.
-
-
-``organization``
-================
-
-The ``organization`` element contains the name of document author's
-organization, or the organization responsible for the document.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``organization``.
-
-:Children:
- ``organization`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``organization`` is analogous to the DocBook "orgname",
- "corpname", or "publishername" elements.
-
-:Processing:
- See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``organization`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``organization``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Organization: Humankind
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <organization>
- Humankind
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``paragraph``
-=============
-
-The ``paragraph`` element contains the text and inline elements of a
-single paragraph, a fundamental building block of documents.
-
-
-Details
--------
-
-:Category:
- `Simple Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``paragraph``.
-
-:Children:
- ``paragraph`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``paragraph`` is analogous to the HTML "p" element and to the
- DocBook "para" elements.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``paragraph`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``paragraph``. The `%structure.model;`_ parameter entity
- indirectly includes ``paragraph``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- A paragraph.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <paragraph>
- A paragraph.
-
-
-``pending``
-===========
-
-`To be completed`_.
-
-
-``problematic``
-===============
-
-`To be completed`_.
-
-
-``raw``
-=======
-
-`To be completed`_.
-
-
-``reference``
-=============
-
-`To be completed`_.
-
-
-``revision``
-============
-
-The ``revision`` element contains the revision number of the document.
-It can be used alone or in conjunction with version_.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``revision``.
-
-:Children:
- ``revision`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``revision`` is analogous to but simpler than the DocBook
- "revision" element. It closely matches the DocBook "revnumber"
- element, but in a simpler context.
-
-:Processing:
- Often used with the RCS/CVS keyword "Revision". See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``revision`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``revision``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Version: 1
- :Revision: b
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <version>
- 1
- <revision>
- b
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``row``
-=======
-
-`To be completed`_.
-
-
-``rubric``
-==========
-
- rubric n. 1. a title, heading, or the like, in a manuscript,
- book, statute, etc., written or printed in red or otherwise
- distinguished from the rest of the text. ...
-
- -- Random House Webster's College Dictionary, 1991
-
-A rubric is like an informal heading that doesn't correspond to the
-document's structure.
-
-`To be completed`_.
-
-
-``section``
-===========
-
-The ``section`` element is the main unit of hierarchy for Docutils
-documents. Docutils ``section`` elements are a recursive structure; a
-``section`` may contain other ``section`` elements, without limit.
-Paragraphs and other body elements may occur before a ``section``, but
-not after it.
-
-
-Details
--------
-
-:Category:
- `Structural Elements`_
-
-:Parents:
- The following elements may contain ``section``: document_,
- section_
-
-:Children:
- ``section`` elements begin with a title_, and may contain `body
- elements`_ as well as transition_, topic_, and sidebar_ elements.
-
-:Analogues:
- ``section`` is analogous to DocBook recursive "section" elements,
- and to HTML "div" elements combined with "h1" etc. title elements.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (title_,
- `%structure.model;`_)
-
-See the `%structure.model;`_ parameter entity for details of the body
-of a ``section``.
-
-:Attributes:
- The ``section`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%section.elements;`_ parameter entity directly includes
- ``section``. The `%structure.model;`_ parameter entity indirectly
- includes ``section``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Title 1
- =======
- Paragraph 1.
-
- Title 2
- -------
- Paragraph 2.
-
- Title 3
- =======
- Paragraph 3.
-
- Title 4
- -------
- Paragraph 4.
-
-Complete pseudo-XML_ result after parsing::
-
- <document>
- <section id="title-1" name="title 1">
- <title>
- Title 1
- <paragraph>
- Paragraph 1.
- <section id="title-2" name="title 2">
- <title>
- Title 2
- <paragraph>
- Paragraph 2.
- <section id="title-3" name="title 3">
- <title>
- Title 3
- <paragraph>
- Paragraph 3.
- <section id="title-4" name="title 4">
- <title>
- Title 4
- <paragraph>
- Paragraph 4.
-
-
-``sidebar``
-===========
-
-Sidebars are like miniature, parallel documents that occur inside
-other documents, providing related or reference material. A
-``sidebar`` is typically offset by a border and "floats" to the side
-of the page; the document's main text may flow around it. Sidebars
-can also be likened to super-footnotes; their content is outside of
-the flow of the document's main text.
-
-The ``sidebar`` element is a nonrecursive section_-like construct
-which may occur at the top level of a section_ wherever a body element
-(list, table, etc.) is allowed. In other words, ``sidebar`` elements
-cannot nest inside body elements, so you can't have a ``sidebar``
-inside a ``table`` or a ``list``, or inside another ``sidebar`` (or
-topic_).
-
-
-Details
--------
-
-:Category:
- `Structural Elements`_
-
-:Parents:
- The following elements may contain ``sidebar``: document_,
- section_
-
-:Children:
- ``sidebar`` elements begin with a title_ and an optional subtitle_
- and contain `body elements`_.
-
-:Analogues:
- ``sidebar`` is analogous to the DocBook "sidebar" element.
-
-:Processing:
- A ``sidebar`` element should be set off from the rest of the
- document somehow, typically with a border. Sidebars typically
- "float" to the side of the page and the document's main text flows
- around them.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (title_, subtitle_?,
- (`%body.elements;`_)+)
-
-:Attributes:
- The ``sidebar`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%structure.model;`_ parameter entity directly includes
- ``sidebar``.
-
-
-Examples
---------
-
-The `"sidebar" directive`_ is used to create a ``sidebar`` element.
-reStructuredText_ source::
-
- .. sidebar:: Title
- :subtitle: If Desired
-
- Body.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <sidebar>
- <title>
- Title
- <subtitle>
- If Desired
- <paragraph>
- Body.
-
-.. _"sidebar" directive: rst/directives.html#sidebar
-
-
-``status``
-==========
-
-The ``status`` element contains a status statement for the document,
-such as "Draft", "Final", "Work In Progress", etc.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``status``.
-
-:Children:
- ``status`` elements may contain text data plus `inline elements`_.
-
-:Analogues:
- ``status`` is analogous to the DocBook "status" element.
-
-:Processing:
- See docinfo_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``status`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``status``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Status: Work In Progress
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <status>
- Work In Progress
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``strong``
-==========
-
-`To be completed`_.
-
-
-``subscript``
-=============
-
-`To be completed`_.
-
-
-``substitution_definition``
-===========================
-
-`To be completed`_.
-
-
-``substitution_reference``
-==========================
-
-`To be completed`_.
-
-
-``subtitle``
-============
-
-The ``subtitle`` element stores the subtitle of a document_.
-
-
-Details
--------
-
-:Category:
- `Structural Subelements`_
-
-:Parents:
- The document_ and sidebar_ elements may contain ``subtitle``.
-
-:Children:
- ``subtitle`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``subtitle`` is analogous to HTML header elements ("h2" etc.) and
- to the DocBook "subtitle" element.
-
-:Processing:
- A document's subtitle is usually rendered smaller than its title_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``subtitle`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- =======
- Title
- =======
- ----------
- Subtitle
- ----------
-
- A paragraph.
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="title" name="title">
- <title>
- Title
- <subtitle id="subtitle" name="subtitle">
- Subtitle
- <paragraph>
- A paragraph.
-
-Note how two section levels have collapsed, promoting their titles to
-become the document's title and subtitle. Since there is only one
-structural element (document), the subsection's ``id`` and ``name``
-attributes are stored in the ``subtitle`` element.
-
-
-``superscript``
-===============
-
-`To be completed`_.
-
-
-``system_message``
-==================
-
-`To be completed`_.
-
-
-``table``
-=========
-
-`To be completed`_.
-
-
-``target``
-==========
-
-`To be completed`_.
-
-
-``tbody``
-=========
-
-`To be completed`_.
-
-
-``term``
-========
-
-The ``term`` element contains a word or phrase being defined in a
-definition_list_.
-
-
-Details
--------
-
-:Category:
- `Body Subelements`_ (simple)
-
-:Parents:
- Only the definition_list_item_ element contains ``term``.
-
-:Children:
- ``term`` elements may contain text data plus `inline elements`_.
-
-:Analogues:
- ``term`` is analogous to the HTML "dt" element and to the DocBook
- "term" element.
-
-:Processing:
- See definition_list_item_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``term`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-
-Examples
---------
-
-See the examples for the definition_list_, definition_list_item_, and
-classifier_ elements.
-
-
-``tgroup``
-==========
-
-`To be completed`_.
-
-
-``thead``
-=========
-
-`To be completed`_.
-
-
-``tip``
-=======
-
-The ``tip`` element is an admonition, a distinctive and self-contained
-notice. Also see the other admonition elements Docutils offers (in
-alphabetical order): attention_, caution_, danger_, error_, hint_,
-important_, note_, warning_, and the generic admonition_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``tip``.
-
-:Children:
- ``tip`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``tip`` is analogous to the DocBook "tip" element.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Tip" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``tip`` element contains only the `common attributes`_: id_,
- name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes ``tip``.
- The `%structure.model;`_ parameter entity indirectly includes
- ``tip``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. Tip:: 15% if the service is good.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <tip>
- <paragraph>
- 15% if the service is good.
-
-
-``title``
-=========
-
-The ``title`` element stores the title of a document_, section_,
-topic_, sidebar_, or generic admonition_.
-
-
-Details
--------
-
-:Category:
- `Structural Subelements`_
-
-:Parents:
- The following elements may contain ``title``: document_, section_,
- topic_, sidebar_, admonition_
-
-:Children:
- ``title`` elements may contain text data plus `inline elements`_.
-
-:Analogues:
- ``title`` is analogous to HTML "title" and header ("h1" etc.)
- elements, and to the DocBook "title" element.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``title`` element contains the `common attributes`_ (id_,
- name_, dupname_, source_, and class_), plus refid_ and auto_.
-
- ``refid`` is used as a backlink to a table of contents entry.
-
- ``auto`` is used to indicate (with value "1") that the ``title``
- has been numbered automatically.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- A Title
- =======
-
- A paragraph.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <section id="a-title" name="a title">
- <title>
- A Title
- <paragraph>
- A paragraph.
-
-
-``title_reference``
-===================
-
-`To be completed`_.
-
-
-``topic``
-=========
-
-The ``topic`` element is a nonrecursive section_-like construct which
-may occur at the top level of a section_ wherever a body element
-(list, table, etc.) is allowed. In other words, ``topic`` elements
-cannot nest inside body elements, so you can't have a ``topic`` inside
-a ``table`` or a ``list``, or inside another ``topic`` (or sidebar_).
-
-
-Details
--------
-
-:Category:
- `Structural Elements`_
-
-:Parents:
- The following elements may contain ``topic``: document_, section_
-
-:Children:
- ``topic`` elements begin with a title_ and may contain `body
- elements`_.
-
-:Analogues:
- ``topic`` is analogous to the DocBook "simplesect" element.
-
-:Processing:
- A ``topic`` element should be set off from the rest of the
- document somehow, such as with indentation or a border.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (title_?,
- (`%body.elements;`_)+)
-
-:Attributes:
- The ``topic`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%structure.model;`_ parameter entity directly includes
- ``topic``.
-
-
-Examples
---------
-
-The `"topic" directive`_ is used to create a ``topic`` element.
-reStructuredText_ source::
-
- .. topic:: Title
-
- Body.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <topic>
- <title>
- Title
- <paragraph>
- Body.
-
-.. _"topic" directive: rst/directives.html#topic
-
-
-``transition``
-==============
-
-The ``transition`` element is commonly seen in novels and short
-fiction, as a gap spanning one or more lines, with or without a type
-ornament such as a row of asterisks. Transitions separate other body
-elements, dividing a section into untitled divisions. A transition
-may not begin or end a section or document, nor may two transitions be
-immediately adjacent.
-
-See `Doctree Representation of Transitions`__ in `A Record of
-reStructuredText Syntax Alternatives`__.
-
-__ rst/alternatives.txt#doctree-representation-of-transitions
-__ rst/alternatives.txt
-
-
-Details
--------
-
-:Category:
- `Structural Subelements`_
-
-:Parents:
- The following elements may contain ``transition``: document_,
- section_
-
-:Children:
- ``transition`` is an empty element and has no children.
-
-:Analogues:
- ``transition`` is analogous to the HTML "hr" element.
-
-:Processing:
- The ``transition`` element is typically rendered as vertical
- whitespace (more than that separating paragraphs), with or without
- a horizontal line or row of asterisks. In novels, transitions are
- often represented as a row of three well-spaced asterisks with
- vertical space above and below.
-
-
-Content Model
--------------
-
-::
-
- EMPTY
-
-The ``transition`` element has no content; it is a "point element".
-
-:Attributes:
- The ``transition`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%structure.model;`_ parameter entity directly includes
- ``transition``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Paragraph 1.
-
- --------
-
- Paragraph 2.
-
-Complete pseudo-XML_ result after parsing::
-
- <document>
- <paragraph>
- Paragraph 1.
- <transition>
- <paragraph>
- Paragraph 2.
-
-
-``version``
-===========
-
-The ``version`` element contains the version number of the document.
-It can be used alone or in conjunction with revision_.
-
-
-Details
--------
-
-:Category:
- `Bibliographic Elements`_
-
-:Parents:
- Only the docinfo_ element contains ``version``.
-
-:Children:
- ``version`` elements may contain text data plus `inline
- elements`_.
-
-:Analogues:
- ``version`` may be considered analogous to the DocBook "revision",
- "revnumber", or "biblioid" elements.
-
-:Processing:
- Sometimes used with the RCS/CVS keyword "Revision". See docinfo_
- and revision_.
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- `%text.model;`_
-
-:Attributes:
- The ``version`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%bibliographic.elements;`_ parameter entity directly includes
- ``version``.
-
-
-Examples
---------
-
-reStructuredText_ source::
-
- Document Title
- ==============
-
- :Version: 1.1
-
-Complete pseudo-XML_ result after parsing and applying transforms::
-
- <document id="document-title" name="document title">
- <title>
- Document Title
- <docinfo>
- <version>
- 1.1
-
-See docinfo_ for a more complete example, including processing
-context.
-
-
-``warning``
-===========
-
-The ``warning`` element is an admonition, a distinctive and
-self-contained notice. Also see the other admonition elements
-Docutils offers (in alphabetical order): attention_, caution_,
-danger_, error_, hint_, important_, note_, tip_.
-
-
-Details
--------
-
-:Category:
- `Compound Body Elements`_
-
-:Parents:
- All elements employing the `%body.elements;`_ or
- `%structure.model;`_ parameter entities in their content models
- may contain ``warning``.
-
-:Children:
- ``warning`` elements contain one or more `body elements`_.
-
-:Analogues:
- ``warning`` is analogous to the DocBook "warning" element.
-
-:Processing:
- Rendered distinctly (inset and/or in a box, etc.), with the
- generated title "Warning" (or similar).
-
-
-Content Model
--------------
-
-.. parsed-literal::
-
- (`%body.elements;`_)+
-
-:Attributes:
- The ``warning`` element contains only the `common attributes`_:
- id_, name_, dupname_, source_, and class_.
-
-:Parameter Entities:
- The `%body.elements;`_ parameter entity directly includes
- ``warning``. The `%structure.model;`_ parameter entity indirectly
- includes ``warning``.
-
-
-Examples
---------
-
-reStructuredText source::
-
- .. WARNING:: Reader discretion is strongly advised.
-
-Pseudo-XML_ fragment from simple parsing::
-
- <warning>
- <paragraph>
- Reader discretion is strongly advised.
-
-
----------------------
- Attribute Reference
----------------------
-
-.. contents:: :local:
- :depth: 1
-
-_`Common Attributes`: Through the `%basic.atts;`_ parameter entity,
-all elements contain the following attributes: id_, name_, dupname_,
-source_, and class_.
-
-.. _attribute type:
-
-Attribute types:
-
-``CDATA``
- Character data. ``CDATA`` attributes may contain arbitrary text.
-
-``ID``
- Like a ``NMTOKEN``, but it must begin with a letter (a "name
- production"). Identical ``ID`` values must not appear more than
- once in a document; i.e., ID values must uniquely identify their
- elements.
-
-``IDREF``
- A reference to an ``ID`` value (a name production) of another
- element.
-
-``IDREFS``
- One or more space-separated ``ID`` references (name productions).
-
-``NMTOKEN``
- A "name token". One or more of letters, digits, ".", "-", and
- "_".
-
-``NMTOKENS``
- One or more space-separated ``NMTOKEN`` names.
-
-``%yesorno;``
- No if zero ("0"), yes if any other value. This is a parameter
- entity which resolves to a ``NMTOKEN`` attribute type.
-
-``%number;``
- This emphasizes that the attribute value must be a number. This
- is a parameter entity which resolves to a ``NMTOKEN`` attribute
- type.
-
-enumeration
- The attribute value may be one of a specified list of values.
-
-
-``anonymous``
-=============
-
-`Attribute type`_: ``%yesorno;``. Default value: none (implies no).
-
-The ``anonymous`` attribute is used for unnamed hyperlinks in the
-target_ and reference_ elements (via the `%anonymous.att;`_ parameter
-entity).
-
-
-``auto``
-========
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``auto`` attribute is used to indicate automatically-numbered
-footnote_, footnote_reference_ and title_ elements (via the
-`%auto.att;`_ parameter entity).
-
-
-``backrefs``
-============
-
-`Attribute type`_: ``IDREFS``. Default value: none.
-
-The ``backrefs`` attribute contains a space-separated list of id_
-references, used for backlinks from footnote_, citation_, and
-system_message_ elements (via the `%backrefs.att;`_ parameter entity).
-
-
-``bullet``
-==========
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``bullet`` attribute is used in the bullet_list_ element.
-
-
-``class``
-=========
-
-`Attribute type`_: ``NMTOKENS``. Default value: none.
-
-The ``class`` attribute contains one or more names used to classify an
-element. The purpose of the attribute is to indicate an "is-a"
-variant relationship, to allow an extensible way of defining
-sub-classes of existing elements. It can be used to carry context
-forward between a Docutils Reader and Writer, when a custom structure
-is reduced to a standardized document tree. One common use is in
-conjunction with stylesheets, to add selection criteria. It should
-not be used to carry formatting instructions or arbitrary content.
-
-The ``class`` attribute's contents should be ignorable. Writers that
-are not familiar with the variant expressed should be able to ignore
-the attribute.
-
-``class`` is one of the `common attributes`_, shared by all Docutils
-elements.
-
-
-``delimiter``
-=============
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``delimiter`` attribute is used in the option_argument_ element.
-
-
-``dupname``
-===========
-
-`Attribute type`_: ``NMTOKENS``. Default value: none.
-
-The ``dupname`` attribute contains the name of an element when there
-has been a naming conflict. The contents of the ``dupname`` attribute
-would have been transferred from the `name`_ attribute. An element
-may have at most one of the ``name`` or ``dupname`` attributes, but
-not both. ``dupname`` is one of the `common attributes`_, shared by
-all Docutils elements.
-
-
-``enumtype``
-============
-
-`Attribute type`_: enumeration, one of "arabic", "loweralpha",
-"upperalpha", "lowerroman", or "upperroman". Default value: none.
-
-The ``enumtype`` attribute is used in the enumerated_list_ element.
-
-
-``id``
-======
-
-`Attribute type`_: ``ID``. Default value: none.
-
-The ``id`` attribute contains a unique identifier key. ``id`` is one
-of the `common attributes`_, shared by all Docutils elements.
-
-
-``name``
-========
-
-`Attribute type`_: ``NMTOKENS``. Default value: none.
-
-The ``name`` attribute contains the name of an element, typically
-originating from the element's title or content. ``name`` must be
-unique; if there are name conflicts (two or more elements want to the
-same name), the contents will be transferred to the `dupname`_
-attribute on the duplicate elements. An element may have at most one
-of the ``name`` or ``dupname`` attributes, but not both. ``name`` is
-one of the `common attributes`_, shared by all Docutils elements.
-
-
-``prefix``
-==========
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``prefix`` attribute is used in the enumerated_list_ element.
-
-
-``refid``
-=========
-
-`Attribute type`_: ``IDREF``. Default value: none.
-
-The ``refid`` attribute contains references to `id`_ attributes in
-other elements. It is used by the target_, reference_,
-footnote_reference_, citation_reference_, title_ and problematic_
-elements (via the `%refid.att;`_ and `%reference.atts;`_ parameter
-entities).
-
-
-``refname``
-===========
-
-`Attribute type`_: ``NMTOKENS``. Default value: none.
-
-The ``refname`` attribute contains an internal reference to the
-`name`_ attribute of another element. On a `target`_ element,
-``refname`` indicates an indirect target which may resolve to either
-an internal or external reference. ``refname`` is used by the
-target_, reference_, footnote_reference_, citation_reference_, and
-substitution_reference_ elements (via the `%refname.att;`_ and
-`%reference.atts;`_ parameter entities).
-
-
-``refuri``
-==========
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``refuri`` attribute contains an external reference to a URI/URL.
-It is used by the target_, reference_, footnote_reference_, and
-citation_reference_ elements (via the `%reference.atts;`_ parameter
-entity).
-
-
-``source``
-==========
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``source`` attribute is used to store the path or URL to the
-source text that was used to produce the document tree. It is one of
-the `common attributes`_, shared by all Docutils elements.
-
-
-``start``
-=========
-
-`Attribute type`_: ``%number;``. Default value: none.
-
-The ``start`` attribute is used in the enumerated_list_ element.
-
-
-``suffix``
-==========
-
-`Attribute type`_: ``CDATA``. Default value: none.
-
-The ``suffix`` attribute is used in the enumerated_list_ element.
-
-
-``xml:space``
-=============
-
-`Attribute type`_: one of "default" or "preserve". Default value:
-"preserve" (fixed).
-
-The ``xml:space`` attribute is a standard XML attribute for
-whitespace-preserving elements. It is used by the literal_block_,
-line_block_, doctest_block_, comment_, and raw_ elements (via the
-`%fixedspace.att;`_ parameter entity). It is a fixed attribute, meant
-to communicate to an XML parser that the element contains significant
-whitespace. The attribute value should not be set in a document
-instance.
-
-
-----------------------------
- Parameter Entity Reference
-----------------------------
-
-.. contents:: :local:
- :depth: 1
-
-Parameter entities are used to simplify the DTD (to share definitions
-and reduce duplication) and to allow the DTD to be customized by
-wrapper DTDs (external client DTDs that use or import the Docutils
-DTD). Parameter entities may be overridden by wrapper DTDs, replacing
-the definitions below with custom definitions. Parameter entities
-whose names begin with "additional" are meant to allow easy extension
-by wrapper DTDs.
-
-
-``%anonymous.att;``
-===================
-
-The ``%anonymous.att;`` parameter entity contains the anonymous_
-attribute, used for unnamed hyperlinks.
-
-Entity definition:
-
-.. parsed-literal::
-
- anonymous_ %yesorno; #IMPLIED
-
-The reference_ and target_ elements directly employ the
-``%anonymous.att;`` parameter entity in their attribute lists.
-
-
-``%auto.att;``
-==============
-
-The ``%auto.att;`` parameter entity contains the auto_ attribute, used
-to indicate an automatically-numbered footnote or title.
-
-Entity definition:
-
-.. parsed-literal::
-
- auto_ CDATA #IMPLIED
-
-The footnote_, footnote_reference_, and title_ elements directly
-employ the ``%auto.att;`` parameter entity in their attribute lists.
-
-
-``%backrefs.att;``
-==================
-
-The ``%backrefs.att;`` parameter entity contains the backrefs_
-attribute, a space-separated list of id references, for backlinks.
-
-Entity definition:
-
-.. parsed-literal::
-
- backrefs_ IDREFS #IMPLIED
-
-The citation_, footnote_, and system_message_ elements directly employ
-the ``%backrefs.att;`` parameter entity in their attribute lists.
-
-
-``%basic.atts;``
-================
-
-The ``%basic.atts;`` parameter entity lists attributes common to all
-Docutils elements. See `Common Attributes`_.
-
-Entity definition:
-
-.. parsed-literal::
-
- id_ ID #IMPLIED
- name_ NMTOKENS #IMPLIED
- dupname_ NMTOKENS #IMPLIED
- source_ CDATA #IMPLIED
- class_ NMTOKENS #IMPLIED
- %additional.basic.atts;
-
-The ``%additional.basic.atts;`` parameter entity can be used by
-wrapper DTDs to extend ``%basic.atts;``.
-
-
-``%bibliographic.elements;``
-============================
-
-The ``%bibliographic.elements;`` parameter entity contains an OR-list of all
-`bibliographic elements`_.
-
-Entity definition:
-
-.. parsed-literal::
-
- author_ | authors_ | organization_ | contact_ | address_
- | version_ | revision_ | status_ | date_ | copyright_
- | field_
- %additional.bibliographic.elements;
-
-The ``%additional.bibliographic.elements;`` parameter entity can be used by
-wrapper DTDs to extend ``%bibliographic.elements;``.
-
-Only the docinfo_ element directly employs the
-``%bibliographic.elements;`` parameter entity in its content model.
-
-
-``%body.elements;``
-===================
-
-The ``%body.elements;`` parameter entity contains an OR-list of all
-`body elements`_. ``%body.elements;`` is itself contained within the
-`%structure.model;`_ parameter entity.
-
-Entity definition:
-
-.. parsed-literal::
-
- paragraph_ | literal_block_ | doctest_block_ | line_block_
- | block_quote_ | table_ | figure_ | image_ | footnote_ | citation_
- | rubric_
- | bullet_list_ | enumerated_list_ | definition_list_ | field_list_
- | option_list_
- | attention_ | caution_ | danger_ | error_ | hint_ | important_
- | note_ | tip_ | warning_ | admonition_
- | target_ | substitution_definition_ | comment_ | pending_
- | system_message_ | raw_
- %additional.body.elements;
-
-The ``%additional.body.elements;`` parameter entity can be used by
-wrapper DTDs to extend ``%body.elements;``.
-
-The ``%body.elements;`` parameter entity is directly employed in the
-content models of the following elements: admonition_, attention_,
-block_quote_, caution_, citation_, danger_, definition_, description_,
-entry_, error_, field_body_, footer_, footnote_, header_, hint_,
-important_, legend_, list_item_, note_, sidebar_, system_message_,
-tip_, topic_, warning_
-
-Via `%structure.model;`_, the ``%body.elements;`` parameter entity is
-indirectly employed in the content models of the document_ and
-section_ elements.
-
-
-``%fixedspace.att;``
-====================
-
-The ``%fixedspace.att;`` parameter entity contains the `xml:space`_
-attribute, a standard XML attribute for whitespace-preserving
-elements.
-
-Entity definition:
-
-.. parsed-literal::
-
- `xml:space`_ (default | preserve) #FIXED 'preserve'
-
-The ``%fixedspace.att;`` parameter entity is directly employed in the
-attribute lists of the following elements: address_, comment_,
-doctest_block_, line_block_, literal_block_, raw_
-
-
-``%inline.elements;``
-=====================
-
-The ``%inline.elements;`` parameter entity contains an OR-list of all
-`inline elements`_.
-
-Entity definition:
-
-.. parsed-literal::
-
- emphasis_ | strong_ | literal_
- | reference_ | footnote_reference_ | citation_reference_
- | substitution_reference_ | title_reference_
- | abbreviation_ | acronym_ | subscript_ | superscript_
- | inline_ | problematic_ | generated_
- | target_ | image_ | raw_
- %additional.inline.elements;
-
-The ``%additional.inline.elements;`` parameter entity can be used by
-wrapper DTDs to extend ``%inline.elements;``.
-
-Via `%text.model;`_, the ``%inline.elements;`` parameter entity is
-indirectly employed in the content models of the following elements:
-abbreviation_, acronym_, address_, attribution_, author_, caption_,
-classifier_, contact_, copyright_, date_, doctest_block_, emphasis_,
-generated_, inline_, line_block_, literal_block_, organization_,
-paragraph_, problematic_, raw_, reference_, revision_, rubric_,
-status_, strong_, subscript_, substitution_definition_,
-substitution_reference_, subtitle_, superscript_, target_, term_,
-title_, title_reference_, version_
-
-
-``%reference.atts;``
-====================
-
-The ``%reference.atts;`` parameter entity groups together the refuri_,
-refid_, and refname_ attributes.
-
-Entity definition:
-
-.. parsed-literal::
-
- `%refuri.att;`_
- `%refid.att;`_
- `%refname.att;`_
- %additional.reference.atts;
-
-The ``%additional.reference.atts;`` parameter entity can be used by
-wrapper DTDs to extend ``%additional.reference.atts;``.
-
-The citation_reference_, footnote_reference_, reference_, and target_
-elements directly employ the ``%reference.att;`` parameter entity in
-their attribute lists.
-
-
-``%refid.att;``
-================
-
-The ``%refid.att;`` parameter entity contains the refid_ attribute, an
-internal reference to the `id`_ attribute of another element.
-
-Entity definition:
-
-.. parsed-literal::
-
- refid_ CDATA #IMPLIED
-
-The title_ and problematic_ elements directly employ the
-``%refid.att;`` parameter entity in their attribute lists.
-
-Via `%reference.atts;`_, the ``%refid.att;`` parameter entity is
-indirectly employed in the attribute lists of the citation_reference_,
-footnote_reference_, reference_, and target_ elements.
-
-
-``%refname.att;``
-=================
-
-The ``%refname.att;`` parameter entity contains the refname_
-attribute, an internal reference to the `name`_ attribute of another
-element. On a `target`_ element, ``refname`` indicates an indirect
-target which may resolve to either an internal or external
-reference.
-
-Entity definition:
-
-.. parsed-literal::
-
- refname_ NMTOKENS #IMPLIED
-
-The substitution_reference_ element directly employs the
-``%refname.att;`` parameter entity in its attribute list.
-
-Via `%reference.atts;`_, the ``%refname.att;`` parameter entity is
-indirectly employed in the attribute lists of the citation_reference_,
-footnote_reference_, reference_, and target_ elements.
-
-
-``%refuri.att;``
-================
-
-The ``%refuri.att;`` parameter entity contains the refuri_ attribute,
-an external reference to a URI/URL.
-
-Entity definition:
-
-.. parsed-literal::
-
- refuri_ CDATA #IMPLIED
-
-Via `%reference.atts;`_, the ``%refuri.att;`` parameter entity is
-indirectly employed in the attribute lists of the citation_reference_,
-footnote_reference_, reference_, and target_ elements.
-
-
-``%section.elements;``
-======================
-
-The ``%section.elements;`` parameter entity contains an OR-list of all
-section_-equivalent elements. ``%section.elements;`` is itself
-contained within the `%structure.model;`_ parameter entity.
-
-Entity definition:
-
-.. parsed-literal::
-
- section_
- %additional.section.elements;
-
-The ``%additional.section.elements;`` parameter entity can be used
-by wrapper DTDs to extend ``%section.elements;``.
-
-Via `%structure.model;`_, the ``%section.elements;`` parameter entity
-is indirectly employed in the content models of the document_ and
-section_ elements.
-
-
-``%structure.model;``
-=====================
-
-The ``%structure.model;`` parameter entity encapsulates the
-hierarchical structure of a document and of its constituent parts.
-See the discussion of the `element hierarchy`_ above.
-
-Entity definition:
-
-.. parsed-literal::
-
- ( ( (`%body.elements;`_ | topic_ | sidebar_)+,
- (transition_, (`%body.elements;`_ | topic_ | sidebar_)+ )*,
- (`%section.elements;`_)* )
- | (`%section.elements;`_)+ )
-
-Each document_ or section_ contains either:
-
-- multiple body elements, topics, and/or sidebars, optionally
- interspersed with transitions (but transitions cannot occur at the
- beginning or end, nor may there be two transitions in a row),
- followed by zero or more sections; or
-
-- one or more sections (whose contents are recursively the same as this
- model).
-
-The `%structure.model;`_ parameter entity is directly employed in the
-content models of the document_ and section_ elements.
-
-
-``%text.model;``
-================
-
-The ``%text.model;`` parameter entity is used by many elements to
-represent text data mixed with `inline elements`_.
-
-Entity definition:
-
-.. parsed-literal::
-
- (#PCDATA | `%inline.elements;`_)*
-
-The ``%text.model;`` parameter entity is directly employed in the
-content models of the following elements: abbreviation_, acronym_,
-address_, author_, caption_, classifier_, contact_, copyright_, date_,
-doctest_block_, emphasis_, generated_, line_block_, literal_block_,
-organization_, paragraph_, problematic_, raw_, reference_, revision_,
-status_, strong_, substitution_definition_, substitution_reference_,
-subtitle_, target_, term_, title_, version_
-
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/ref/docutils.dtd b/docutils/docs/ref/docutils.dtd
deleted file mode 100644
index 06fe4bf55..000000000
--- a/docutils/docs/ref/docutils.dtd
+++ /dev/null
@@ -1,571 +0,0 @@
-<!--
-======================================================================
- Docutils Generic DTD
-======================================================================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This DTD has been placed in the public domain.
-:Filename: docutils.dtd
-
-More information about this DTD (document type definition) and the
-Docutils project can be found at http://docutils.sourceforge.net/.
-The latest version of this DTD is available from
-http://docutils.sourceforge.net/spec/docutils.dtd.
-
-The formal public identifier for this DTD is::
-
- +//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML
--->
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Parameter Entities
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Parameter entities are used to simplify the DTD (reduce duplication)
-and to allow the DTD to be customized by wrapper DTDs. Parameter
-entities beginning with "additional" are meant to allow easy extension
-by wrapper DTDs.
--->
-
-<!-- Attributes
-================================================================== -->
-
-<!-- Boolean: no if zero(s), yes if any other value. -->
-<!ENTITY % yesorno "NMTOKEN">
-
-<!-- Emphasize that the attribute value must be a number. -->
-<!ENTITY % number "NMTOKEN">
-
-<!ENTITY % additional.basic.atts "">
-<!--
-Attributes shared by all elements in this DTD:
-
-- `id` is a unique identifier, typically assigned by the system.
-- `name` is an identifier assigned in the markup.
-- `dupname` is the same as `name`, used when it's a duplicate.
-- `source` is the name of the source of this document or fragment.
-- `class` is used to transmit individuality information forward.
--->
-<!ENTITY % basic.atts
- " id ID #IMPLIED
- name NMTOKENS #IMPLIED
- dupname NMTOKENS #IMPLIED
- source CDATA #IMPLIED
- class NMTOKENS #IMPLIED
- %additional.basic.atts; ">
-
-<!-- External reference to a URI/URL. -->
-<!ENTITY % refuri.att
- " refuri CDATA #IMPLIED ">
-
-<!-- Internal reference to the `id` attribute of an element. -->
-<!ENTITY % refid.att
- " refid IDREF #IMPLIED ">
-
-<!-- Space-separated list of id references, for backlinks. -->
-<!ENTITY % backrefs.att
- " backrefs IDREFS #IMPLIED ">
-
-<!--
-Internal reference to the `name` attribute of an element. On a
-'target' element, 'refname' indicates an indirect target which may
-resolve to either an internal or external reference.
--->
-<!ENTITY % refname.att
- " refname NMTOKENS #IMPLIED ">
-
-<!ENTITY % additional.reference.atts "">
-<!-- Collected hyperlink reference attributes. -->
-<!ENTITY % reference.atts
- " %refuri.att;
- %refid.att;
- %refname.att;
- %additional.reference.atts; ">
-
-<!-- Unnamed hyperlink. -->
-<!ENTITY % anonymous.att
- " anonymous %yesorno; #IMPLIED ">
-
-<!-- Auto-numbered footnote or title. -->
-<!ENTITY % auto.att
- " auto CDATA #IMPLIED ">
-
-<!-- XML standard attribute for whitespace-preserving elements. -->
-<!ENTITY % fixedspace.att
- " xml:space (default | preserve) #FIXED 'preserve' ">
-
-
-<!-- Element OR-Lists
-============================================================= -->
-
-<!ENTITY % additional.bibliographic.elements "">
-<!ENTITY % bibliographic.elements
- " author | authors | organization | address | contact
- | version | revision | status | date | copyright
- | field
- %additional.bibliographic.elements; ">
-
-<!ENTITY % additional.section.elements "">
-<!ENTITY % section.elements
- " section
- %additional.section.elements; ">
-
-<!ENTITY % additional.body.elements "">
-<!ENTITY % body.elements
- " paragraph | literal_block | doctest_block | line_block | block_quote
- | table | figure | image | footnote | citation | rubric
- | bullet_list | enumerated_list | definition_list | field_list
- | option_list
- | attention | caution | danger | error | hint | important | note
- | tip | warning | admonition
- | target | substitution_definition | comment | pending
- | system_message | raw
- %additional.body.elements; ">
-
-<!ENTITY % additional.inline.elements "">
-<!ENTITY % inline.elements
- " emphasis | strong | literal
- | reference | footnote_reference | citation_reference
- | substitution_reference | title_reference
- | abbreviation | acronym | subscript | superscript
- | inline | problematic | generated
- | target | image | raw
- %additional.inline.elements; ">
-
-
-<!-- Element Content Models
-================================================================== -->
-
-<!ENTITY % structure.model
- " ( ( (%body.elements; | topic | sidebar)+,
- (transition, (%body.elements; | topic | sidebar)+ )*,
- (%section.elements;)* )
- | (%section.elements;)+ ) ">
-
-<!ENTITY % text.model
- " (#PCDATA | %inline.elements;)* ">
-
-
-<!-- Table Model
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This DTD uses the Exchange subset of the CALS-table model (OASIS
-Technical Memorandum 9901:1999 "XML Exchange Table Model DTD",
-http://www.oasis-open.org/html/tm9901.htm).
--->
-
-<!ENTITY % calstblx PUBLIC
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
- "soextblx.dtd">
-
-<!-- These parameter entities customize the table model DTD. -->
-<!ENTITY % bodyatt " %basic.atts; "> <!-- table elt -->
-<!ENTITY % tbl.tgroup.att " %basic.atts; ">
-<!ENTITY % tbl.thead.att " %basic.atts; ">
-<!ENTITY % tbl.tbody.att " %basic.atts; ">
-<!ENTITY % tbl.colspec.att " %basic.atts; ">
-<!ENTITY % tbl.row.att " %basic.atts; ">
-<!ENTITY % tbl.entry.mdl " (%body.elements;)* ">
-<!ENTITY % tbl.entry.att
- " %basic.atts;
- morecols %number; #IMPLIED ">
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Root Element
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!-- Optional elements may be generated by internal processing. -->
-<!ELEMENT document
- ((title, subtitle?)?, docinfo?, decoration?, %structure.model;)>
-<!ATTLIST document %basic.atts;>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Title Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ELEMENT title %text.model;>
-<!ATTLIST title
- %basic.atts;
- %refid.att;
- %auto.att;>
-
-<!ELEMENT subtitle %text.model;>
-<!ATTLIST subtitle %basic.atts;>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Bibliographic Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!-- Container for bibliographic elements. May not be empty. -->
-<!ELEMENT docinfo (%bibliographic.elements;)+>
-<!ATTLIST docinfo %basic.atts;>
-
-<!ELEMENT author %text.model;>
-<!ATTLIST author %basic.atts;>
-
-<!ELEMENT authors ((author, organization?, address?, contact?)+)>
-<!ATTLIST authors %basic.atts;>
-
-<!ELEMENT organization %text.model;>
-<!ATTLIST organization %basic.atts;>
-
-<!ELEMENT address %text.model;>
-<!ATTLIST address
- %basic.atts;
- %fixedspace.att;>
-
-<!ELEMENT contact %text.model;>
-<!ATTLIST contact %basic.atts;>
-
-<!ELEMENT version %text.model;>
-<!ATTLIST version %basic.atts;>
-
-<!ELEMENT revision %text.model;>
-<!ATTLIST revision %basic.atts;>
-
-<!ELEMENT status %text.model;>
-<!ATTLIST status %basic.atts;>
-
-<!ELEMENT date %text.model;>
-<!ATTLIST date %basic.atts;>
-
-<!ELEMENT copyright %text.model;>
-<!ATTLIST copyright %basic.atts;>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Decoration Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ELEMENT decoration (header?, footer?)>
-<!ATTLIST decoration %basic.atts;>
-
-<!ELEMENT header (%body.elements;)+>
-<!ATTLIST header %basic.atts;>
-
-<!ELEMENT footer (%body.elements;)+>
-<!ATTLIST footer %basic.atts;>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Structural Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ELEMENT section (title, %structure.model;)>
-<!ATTLIST section %basic.atts;>
-
-<!ELEMENT topic (title?, (%body.elements;)+)>
-<!ATTLIST topic %basic.atts;>
-
-<!ELEMENT sidebar (title, subtitle?, (%body.elements;)+)>
-<!ATTLIST sidebar %basic.atts;>
-
-<!ELEMENT transition EMPTY>
-<!ATTLIST transition %basic.atts;>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Body Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--->
-
-<!ELEMENT paragraph %text.model;>
-<!ATTLIST paragraph %basic.atts;>
-
-<!ELEMENT bullet_list (list_item+)>
-<!ATTLIST bullet_list
- %basic.atts;
- bullet CDATA #IMPLIED>
-
-<!ELEMENT enumerated_list (list_item+)>
-<!ATTLIST enumerated_list
- %basic.atts;
- enumtype (arabic | loweralpha | upperalpha
- | lowerroman | upperroman)
- #IMPLIED
- prefix CDATA #IMPLIED
- suffix CDATA #IMPLIED
- start %number; #IMPLIED>
-
-<!ELEMENT list_item (%body.elements;)+>
-<!ATTLIST list_item %basic.atts;>
-
-<!ELEMENT definition_list (definition_list_item+)>
-<!ATTLIST definition_list %basic.atts;>
-
-<!ELEMENT definition_list_item (term, classifier?, definition)>
-<!ATTLIST definition_list_item %basic.atts;>
-
-<!ELEMENT term %text.model;>
-<!ATTLIST term %basic.atts;>
-
-<!ELEMENT classifier %text.model;>
-<!ATTLIST classifier %basic.atts;>
-
-<!ELEMENT definition (%body.elements;)+>
-<!ATTLIST definition %basic.atts;>
-
-<!ELEMENT field_list (field+)>
-<!ATTLIST field_list %basic.atts;>
-
-<!ELEMENT field (field_name, field_body)>
-<!ATTLIST field %basic.atts;>
-
-<!ELEMENT field_name (#PCDATA)>
-<!ATTLIST field_name %basic.atts;>
-
-<!-- May be empty. -->
-<!ELEMENT field_body (%body.elements;)*>
-<!ATTLIST field_body %basic.atts;>
-
-<!ELEMENT option_list (option_list_item+)>
-<!ATTLIST option_list %basic.atts;>
-
-<!ELEMENT option_list_item (option_group, description)>
-<!ATTLIST option_list_item %basic.atts;>
-
-<!ELEMENT option_group (option+)>
-<!ATTLIST option_group %basic.atts;>
-
-<!ELEMENT option (option_string, option_argument*)>
-<!ATTLIST option %basic.atts;>
-
-<!ELEMENT option_string (#PCDATA)>
-<!ATTLIST option_string %basic.atts;>
-
-<!--
-`delimiter` contains the text preceding the `option_argument`: either
-the text separating it from the `option_string` (typically either "="
-or " ") or the text between option arguments (typically either "," or
-" ").
--->
-<!ELEMENT option_argument (#PCDATA)>
-<!ATTLIST option_argument
- %basic.atts;
- delimiter CDATA #IMPLIED>
-
-<!ELEMENT description (%body.elements;)+>
-<!ATTLIST description %basic.atts;>
-
-<!ELEMENT literal_block %text.model;>
-<!ATTLIST literal_block
- %basic.atts;
- %fixedspace.att;>
-
-<!ELEMENT line_block %text.model;>
-<!ATTLIST line_block
- %basic.atts;
- %fixedspace.att;>
-
-<!ELEMENT block_quote ((%body.elements;)+, attribution?)>
-<!ATTLIST block_quote %basic.atts;>
-
-<!ELEMENT attribution %text.model;>
-<!ATTLIST attribution %basic.atts;>
-
-<!ELEMENT doctest_block %text.model;>
-<!ATTLIST doctest_block
- %basic.atts;
- %fixedspace.att;>
-
-<!ELEMENT attention (%body.elements;)+>
-<!ATTLIST attention %basic.atts;>
-
-<!ELEMENT caution (%body.elements;)+>
-<!ATTLIST caution %basic.atts;>
-
-<!ELEMENT danger (%body.elements;)+>
-<!ATTLIST danger %basic.atts;>
-
-<!ELEMENT error (%body.elements;)+>
-<!ATTLIST error %basic.atts;>
-
-<!ELEMENT hint (%body.elements;)+>
-<!ATTLIST hint %basic.atts;>
-
-<!ELEMENT important (%body.elements;)+>
-<!ATTLIST important %basic.atts;>
-
-<!ELEMENT note (%body.elements;)+>
-<!ATTLIST note %basic.atts;>
-
-<!ELEMENT tip (%body.elements;)+>
-<!ATTLIST tip %basic.atts;>
-
-<!ELEMENT warning (%body.elements;)+>
-<!ATTLIST warning %basic.atts;>
-
-<!ELEMENT admonition (title, (%body.elements;)+)>
-<!ATTLIST admonition %basic.atts;>
-
-<!ELEMENT footnote (label?, (%body.elements;)+)>
-<!ATTLIST footnote
- %basic.atts;
- %backrefs.att;
- %auto.att;>
-
-<!ELEMENT citation (label, (%body.elements;)+)>
-<!ATTLIST citation
- %basic.atts;
- %backrefs.att;>
-
-<!ELEMENT label (#PCDATA)>
-<!ATTLIST label %basic.atts;>
-
-<!ELEMENT rubric %text.model;>
-<!ATTLIST rubric %basic.atts;>
-
-<!-- Empty except when used as an inline element. -->
-<!ELEMENT target %text.model;>
-<!ATTLIST target
- %basic.atts;
- %reference.atts;
- %anonymous.att;>
-
-<!ELEMENT substitution_definition %text.model;>
-<!ATTLIST substitution_definition %basic.atts;>
-
-<!ELEMENT comment (#PCDATA)>
-<!ATTLIST comment
- %basic.atts;
- %fixedspace.att;>
-
-<!ELEMENT pending EMPTY>
-<!ATTLIST pending %basic.atts;>
-
-<!ELEMENT figure (image, ((caption, legend?) | legend)) >
-<!ATTLIST figure
- %basic.atts;
- width %number; #IMPLIED>
-
-<!-- Also an inline element. -->
-<!ELEMENT image EMPTY>
-<!ATTLIST image
- %basic.atts;
- uri CDATA #REQUIRED
- alt CDATA #IMPLIED
- height %number; #IMPLIED
- width %number; #IMPLIED
- scale %number; #IMPLIED>
-
-<!ELEMENT caption %text.model;>
-<!ATTLIST caption %basic.atts;>
-
-<!ELEMENT legend (%body.elements;)+>
-<!ATTLIST legend %basic.atts;>
-
-<!--
-Table elements: table, tgroup, colspec, thead, tbody, row, entry.
--->
-%calstblx;
-
-<!-- Used to record processing information. -->
-<!ELEMENT system_message (%body.elements;)+>
-<!ATTLIST system_message
- %basic.atts;
- %backrefs.att;
- level %number; #IMPLIED
- line %number; #IMPLIED
- type NMTOKEN #IMPLIED>
-
-<!-- Used to pass raw data through the system. Also inline. -->
-<!ELEMENT raw %text.model;>
-<!ATTLIST raw
- %basic.atts;
- %fixedspace.att;
- format NMTOKEN #IMPLIED>
-
-<!--
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Inline Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Inline elements occur within the text contents of body elements. Some
-nesting of inline elements is allowed by these definitions, with the
-following caveats:
-
-- An inline element may not contain a nested element of the same type
- (e.g. <strong> may not contain another <strong>).
-- Nested inline elements may or may not be supported by individual
- applications using this DTD.
-- The inline elements <footnote_reference>, <citation_reference>,
- <literal>, and <image> do not support nesting.
--->
-
-<!ELEMENT emphasis %text.model;>
-<!ATTLIST emphasis %basic.atts;>
-
-<!ELEMENT strong %text.model;>
-<!ATTLIST strong %basic.atts;>
-
-<!ELEMENT literal (#PCDATA)>
-<!ATTLIST literal %basic.atts;>
-
-<!ELEMENT reference %text.model;>
-<!ATTLIST reference
- %basic.atts;
- %reference.atts;
- %anonymous.att;>
-
-<!ELEMENT footnote_reference (#PCDATA)>
-<!ATTLIST footnote_reference
- %basic.atts;
- %refid.att;
- %refname.att;
- %auto.att;>
-
-<!ELEMENT citation_reference (#PCDATA)>
-<!ATTLIST citation_reference
- %basic.atts;
- %refid.att;
- %refname.att;>
-
-<!ELEMENT substitution_reference %text.model;>
-<!ATTLIST substitution_reference
- %basic.atts;
- %refname.att;>
-
-<!ELEMENT title_reference %text.model;>
-<!ATTLIST title_reference %basic.atts;>
-
-<!ELEMENT abbreviation %text.model;>
-<!ATTLIST abbreviation %basic.atts;>
-
-<!ELEMENT acronym %text.model;>
-<!ATTLIST acronym %basic.atts;>
-
-<!ELEMENT superscript %text.model;>
-<!ATTLIST superscript %basic.atts;>
-
-<!ELEMENT subscript %text.model;>
-<!ATTLIST subscript %basic.atts;>
-
-<!ELEMENT inline %text.model;>
-<!ATTLIST inline %basic.atts;>
-
-<!ELEMENT problematic %text.model;>
-<!ATTLIST problematic
- %basic.atts;
- %refid.att;>
-
-<!ELEMENT generated %text.model;>
-<!ATTLIST generated %basic.atts;>
-
-<!--
-Local Variables:
-mode: sgml
-indent-tabs-mode: nil
-fill-column: 70
-End:
--->
diff --git a/docutils/docs/ref/rst/directives.txt b/docutils/docs/ref/rst/directives.txt
deleted file mode 100644
index 5fc316a99..000000000
--- a/docutils/docs/ref/rst/directives.txt
+++ /dev/null
@@ -1,979 +0,0 @@
-=============================
- reStructuredText Directives
-=============================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-.. contents::
-
-This document describes the directives implemented in the reference
-reStructuredText parser.
-
-Directives have the following syntax::
-
- +-------+-------------------------------+
- | ".. " | directive type "::" directive |
- +-------+ block |
- | |
- +-------------------------------+
-
-Directives begin with an explicit markup start (two periods and a
-space), followed by the directive type and two colons (collectively,
-the "directive marker"). The directive block begins immediately after
-the directive marker, and includes all subsequent indented lines. The
-directive block is divided into arguments, options (a field list), and
-content (in that order), any of which may appear. See the Directives_
-section in the `reStructuredText Markup Specification`_ for syntax
-details.
-
-Descriptions below list "doctree elements" (document tree element
-names; XML DTD generic identifiers) corresponding to individual
-directives. For details on the hierarchy of elements, please see `The
-Docutils Document Tree`_ and the `Docutils Generic DTD`_ XML document
-type definition.
-
-.. _Directives: ./reStructuredText.html#directives
-.. _reStructuredText Markup Specification: ./reStructuredText.html
-.. _The Docutils Document Tree: ../doctree.html
-.. _Docutils Generic DTD: ../gpdi.dtd
-
-
--------------
- Admonitions
--------------
-
-.. _attention:
-.. _caution:
-.. _danger:
-.. _error:
-.. _hint:
-.. _important:
-.. _note:
-.. _tip:
-.. _warning:
-
-Specific Admonitions
-====================
-
-:Directive Types: "attention", "caution", "danger", "error", "hint",
- "important", "note", "tip", "warning", "admonition"
-:Doctree Elements: attention, caution, danger, error, hint, important,
- note, tip, warning, admonition, title
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: Interpreted as body elements.
-
-Admonitions are specially marked "topics" that can appear anywhere an
-ordinary body element can. They contain arbitrary body elements.
-Typically, an admonition is rendered as an offset block in a document,
-sometimes outlined or shaded, with a title matching the admonition
-type. For example::
-
- .. DANGER::
- Beware killer rabbits!
-
-This directive might be rendered something like this::
-
- +------------------------+
- | !DANGER! |
- | |
- | Beware killer rabbits! |
- +------------------------+
-
-The following admonition directives have been implemented:
-
-- attention
-- caution
-- danger
-- error
-- hint
-- important
-- note
-- tip
-- warning
-
-Any text immediately following the directive indicator (on the same
-line and/or indented on following lines) is interpreted as a directive
-block and is parsed for normal body elements. For example, the
-following "note" admonition directive contains one paragraph and a
-bullet list consisting of two list items::
-
- .. note:: This is a note admonition.
- This is the second line of the first paragraph.
-
- - The note contains all indented body elements
- following.
- - It includes this bullet list.
-
-
-.. _admonition:
-
-Generic Admonition
-==================
-
-:Directive Type: "admonition"
-:Doctree Elements: admonition, title
-:Directive Arguments: One, required (admonition title)
-:Directive Options: Possible.
-:Directive Content: Interpreted as body elements.
-
-This is a generic, titled admonition. The title may be anything the
-author desires.
-
-The author-supplied title is also used as a "class" attribute value
-after being converted into a valid identifier form (down-cased;
-non-alphanumeric characters converted to single hyphens; "admonition-"
-prefixed). For example, this admonition::
-
- .. admonition:: And, by the way...
-
- You can make up your own admonition too.
-
-becomes the following document tree (pseudo-XML)::
-
- <document source="test data">
- <admonition class="admonition-and-by-the-way">
- <title>
- And, by the way...
- <paragraph>
- You can make up your own admonition too.
-
-The following option is recognized:
-
-``class`` : text
- Override the computed "class" attribute value. See the class_
- directive below.
-
-
---------
- Images
---------
-
-There are two image directives: "image" and "figure".
-
-
-Image
-=====
-
-:Directive Type: "image"
-:Doctree Element: image
-:Directive Arguments: One, required (image URI).
-:Directive Options: Possible.
-:Directive Content: None.
-
-An "image" is a simple picture::
-
- .. image:: picture.png
-
-The URI for the image source file is specified in the directive
-argument. As with hyperlink targets, the image URI may begin on the
-same line as the explicit markup start and target name, or it may
-begin in an indented text block immediately following, with no
-intervening blank lines. If there are multiple lines in the link
-block, they are stripped of leading and trailing whitespace and joined
-together.
-
-Optionally, the image link block may contain a flat field list, the
-_`image options`. For example::
-
- .. image:: picture.jpeg
- :height: 100
- :width: 200
- :scale: 50
- :alt: alternate text
- :align: right
-
-The following options are recognized:
-
-``alt`` : text
- Alternate text: a short description of the image, displayed by
- applications that cannot display images, or spoken by applications
- for visually impaired users.
-
-``height`` : integer
- The height of the image in pixels, used to reserve space or scale
- the image vertically.
-
-``width`` : integer
- The width of the image in pixels, used to reserve space or scale
- the image horizontally.
-
-``scale`` : integer
- The uniform scaling factor of the image, a percentage (but no "%"
- symbol is required or allowed). "100" means full-size.
-
-``align`` : "top", "middle", "bottom", "left", "center", or "right"
- The alignment of the image, equivalent to the HTML ``<img>`` tag's
- "align" attribute. The values "top", "middle", and "bottom"
- control an image's vertical alignment (relative to the text
- baseline); they are only useful for inline images (substitutions).
- The values "left", "center", and "right" control an image's
- horizontal alignment, allowing the image to float and have the
- text flow around it. The specific behavior depends upon the
- browser or rendering software used.
-
-``class`` : text
- Set a "class" attribute value on the image element. See the
- class_ directive below.
-
-
-Figure
-======
-
-:Directive Type: "figure"
-:Doctree Elements: figure, image, caption, legend
-:Directive Arguments: One, required (image URI).
-:Directive Options: Possible.
-:Directive Content: Interpreted as the figure caption and an optional
- legend.
-
-A "figure" consists of image_ data (including `image options`_), an
-optional caption (a single paragraph), and an optional legend
-(arbitrary body elements)::
-
- .. figure:: picture.png
- :scale: 50
- :alt: map to buried treasure
-
- This is the caption of the figure (a simple paragraph).
-
- The legend consists of all elements after the caption. In this
- case, the legend consists of this paragraph and the following
- table:
-
- +-----------------------+-----------------------+
- | Symbol | Meaning |
- +=======================+=======================+
- | .. image:: tent.png | Campground |
- +-----------------------+-----------------------+
- | .. image:: waves.png | Lake |
- +-----------------------+-----------------------+
- | .. image:: peak.png | Mountain |
- +-----------------------+-----------------------+
-
-There must be blank lines before the caption paragraph and before the
-legend. To specify a legend without a caption, use an empty comment
-("..") in place of the caption.
-
-The "figure" directive supports all of the options of the "image"
-directive (see `image options`_ above). In addition, the following
-options are recognized:
-
-``figwidth`` : integer or "image"
- The width of the figure in pixels, to limit the horizontal space
- used. A special value of "image" is allowed, in which case the
- included image's actual width is used (requires PIL_ [#]_). If the
- image file is not found or the required software is unavailable,
- this option is ignored.
-
- Sets the "width" attribute of the "figure" doctree element.
-
- This option does not scale the included image; use the "width"
- `image`_ option for that. ::
-
- +---------------------------+
- | figure |
- | |
- |<------ figwidth --------->|
- | |
- | +---------------------+ |
- | | image | |
- | | | |
- | |<--- width --------->| |
- | +---------------------+ |
- | |
- |The figure's caption should|
- |wrap at this width. |
- +---------------------------+
-
-``figclass`` : text
- Set a "class" attribute value on the figure element. See the
- class_ directive below.
-
-.. [#] `Python Imaging Library`_.
-
-.. _PIL:
-.. _Python Imaging Library: http://www.pythonware.com/products/pil/
-
-
----------------
- Body Elements
----------------
-
-Topic
-=====
-
-:Directive Type: "topic"
-:Doctree Element: topic
-:Directive Arguments: 1, required (topic title).
-:Directive Options: Possible.
-:Directive Content: Interpreted as the topic body.
-
-A topic is like a block quote with a title, or a self-contained
-section with no subsections. Use the "topic" directive to indicate a
-self-contained idea that is separate from the flow of the document.
-Topics may occur anywhere a section or transition may occur. Body
-elements (including topics) may not contain nested topics.
-
-The directive's sole argument is interpreted as the topic title; the
-next line must be blank. All subsequent lines make up the topic body,
-interpreted as body elements. For example::
-
- .. topic:: Topic Title
-
- Subsequent indented lines comprise
- the body of the topic, and are
- interpreted as body elements.
-
-The following option is recognized:
-
-``class`` : text
- Set a "class" attribute value on the topic element. See the
- class_ directive below.
-
-
-Sidebar
-=======
-
-:Directive Type: "sidebar"
-:Doctree Element: sidebar
-:Directive Arguments: One, required (sidebar title).
-:Directive Options: Possible.
-:Directive Content: Interpreted as the sidebar body.
-
-Sidebars are like miniature, parallel documents that occur inside
-other documents, providing related or reference material. A sidebar
-is typically offset by a border and "floats" to the side of the page;
-the document's main text may flow around it. Sidebars can also be
-likened to super-footnotes; their content is outside of the flow of
-the document's main text.
-
-Sidebars may occur anywhere a section or transition may occur. Body
-elements (including sidebars) may not contain nested sidebars.
-
-The directive's sole argument is interpreted as the sidebar title,
-which may be followed by a subtitle option (see below); the next line
-must be blank. All subsequent lines make up the sidebar body,
-interpreted as body elements. For example::
-
- .. sidebar:: Sidebar Title
- :subtitle: Optional Sidebar Subtitle
-
- Subsequent indented lines comprise
- the body of the sidebar, and are
- interpreted as body elements.
-
-The following options are recognized:
-
-``subtitle`` : text
- The sidebar's subtitle.
-
-``class`` : text
- Set a "class" attribute value on the sidebar element. See the
- class_ directive below.
-
-
-Line Block
-==========
-
-:Directive Type: "line-block"
-:Doctree Element: line_block
-:Directive Arguments: None.
-:Directive Options: Possible.
-:Directive Content: Becomes the body of the line block.
-
-The "line-block" directive constructs an element where whitespace
-(including linebreaks) is significant and inline markup is supported.
-It is equivalent to a `parsed literal block`_ with different
-rendering: typically in an ordinary serif typeface instead of a
-typewriter/monospaced face, and not automatically indented. (Have the
-line-block directive begin a block quote to get an indented line
-block.) Line blocks are useful for address blocks and verse (poetry,
-song lyrics), where the structure of lines is significant. For
-example, here's a classic::
-
- "To Ma Own Beloved Lassie: A Poem on her 17th Birthday", by
- Ewan McTeagle (for Lassie O'Shea):
-
- .. line-block::
-
- Lend us a couple of bob till Thursday.
- I'm absolutely skint.
- But I'm expecting a postal order and I can pay you back
- as soon as it comes.
- Love, Ewan.
-
-The following option is recognized:
-
-``class`` : text
- Set a "class" attribute value on the line_block element. See the
- class_ directive below.
-
-
-.. _parsed-literal:
-
-Parsed Literal Block
-====================
-
-:Directive Type: "parsed-literal"
-:Doctree Element: literal_block
-:Directive Arguments: None.
-:Directive Options: Possible.
-:Directive Content: Becomes the body of the literal block.
-
-Unlike an ordinary literal block, the "parsed-literal" directive
-constructs a literal block where the text is parsed for inline markup.
-It is equivalent to a `line block`_ with different rendering:
-typically in a typewriter/monospaced typeface, like an ordinary
-literal block. Parsed literal blocks are useful for adding hyperlinks
-to code examples. However, care must be taken with the text, because
-inline markup is recognized; there is no protection from parsing.
-Backslash-escapes may be necessary in places.
-
-For example, all the element names in this content model are links::
-
- .. parsed-literal::
-
- ((title_,
- subtitle_?)?,
- docinfo_?,
- decoration_?,
- `%structure.model;`_)
-
-The following option is recognized:
-
-``class`` : text
- Set a "class" attribute value on the literal_block element. See
- the class_ directive below.
-
-
-Rubric
-======
-
-:Directive Type: "rubric"
-:Doctree Element: rubric
-:Directive Arguments: 1, required (rubric text).
-:Directive Options: Possible.
-:Directive Content: None.
-
- rubric n. 1. a title, heading, or the like, in a manuscript,
- book, statute, etc., written or printed in red or otherwise
- distinguished from the rest of the text. ...
-
- -- Random House Webster's College Dictionary, 1991
-
-The "rubric" directive inserts a "rubric" element into the document
-tree. A rubric is like an informal heading that doesn't correspond to
-the document's structure.
-
-The following option is recognized:
-
-``class`` : text
- Set a "class" attribute value on the rubric element. See the
- class_ directive below.
-
-
-Epigraph
-========
-
-:Directive Type: "epigraph"
-:Doctree Element: block_quote
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: Interpreted as the body of the block quote.
-
-Produces an epigraph-class block quote. For example, this input::
-
- .. epigraph::
-
- No matter where you go, there you are.
-
- -- Buckaroo Banzai
-
-becomes this document tree fragment::
-
- <block_quote class="epigraph">
- <paragraph>
- No matter where you go, there you are.
- <attribution>
- Buckaroo Banzai
-
-
-Highlights
-==========
-
-:Directive Type: "highlights"
-:Doctree Element: block_quote
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: Interpreted as the body of the block quote.
-
-Produces a highlights-class block quote. See Epigraph_ above.
-
-
-Pull-Quote
-==========
-
-:Directive Type: "pull-quote"
-:Doctree Element: block_quote
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: Interpreted as the body of the block quote.
-
-Produces a pull-quote-class block quote. See Epigraph_ above.
-
-
-----------------
- Document Parts
-----------------
-
-.. _contents:
-
-Table of Contents
-=================
-
-:Directive Type: "contents"
-:Doctree Elements: pending, topic
-:Directive Arguments: One, optional: title.
-:Directive Options: Possible.
-:Directive Content: None.
-
-The "contents" directive inserts a table of contents (TOC) in two
-passes: initial parse and transform. During the initial parse, a
-"pending" element is generated which acts as a placeholder, storing
-the TOC title and any options internally. At a later stage in the
-processing, the "pending" element is replaced by a "topic" element, a
-title and the table of contents proper.
-
-The directive in its simplest form::
-
- .. contents::
-
-Language-dependent boilerplate text will be used for the title. The
-English default title text is "Contents".
-
-An explicit title, may be specified::
-
- .. contents:: Table of Contents
-
-The title may span lines, although it is not recommended::
-
- .. contents:: Here's a very long Table of
- Contents title
-
-Options may be specified for the directive, using a field list::
-
- .. contents:: Table of Contents
- :depth: 2
-
-If the default title is to be used, the options field list may begin
-on the same line as the directive marker::
-
- .. contents:: :depth: 2
-
-The following options are recognized:
-
-``depth`` : integer
- The number of section levels that are collected in the table of
- contents. The default is unlimited depth.
-
-``local`` : flag (empty)
- Generate a local table of contents. Entries will only include
- subsections of the section in which the directive is given. If no
- explicit title is given, the table of contents will not be titled.
-
-``backlinks`` : "entry" or "top" or "none"
- Generate links from section headers back to the table of contents
- entries, the table of contents itself, or generate no backlinks.
-
-``class`` : text
- Set a "class" attribute value on the topic element. See the
- class_ directive below.
-
-
-.. _sectnum:
-.. _section-autonumbering:
-
-Automatic Section Numbering
-===========================
-
-:Directive Type: "sectnum" or "section-autonumbering" (synonyms)
-:Doctree Elements: pending, generated
-:Directive Arguments: None.
-:Directive Options: Possible.
-:Directive Content: None.
-
-The "sectnum" (or "section-autonumbering") directive automatically
-numbers sections and subsections in a document. Section numbers are
-of the "multiple enumeration" form, where each level has a number,
-separated by periods. For example, the title of section 1, subsection
-2, subsubsection 3 would have "1.2.3" prefixed.
-
-The "sectnum" directive does its work in two passes: the initial parse
-and a transform. During the initial parse, a "pending" element is
-generated which acts as a placeholder, storing any options internally.
-At a later stage in the processing, the "pending" element triggers a
-transform, which adds section numbers to titles. Section numbers are
-enclosed in a "generated" element, and titles have their "auto"
-attribute set to "1".
-
-The following options are recognized:
-
-``depth`` : integer
- The number of section levels that are numbered by this directive.
- The default is unlimited depth.
-
-
-------------
- References
-------------
-
-.. _target-notes:
-
-Target Footnotes
-================
-
-:Directive Type: "target-notes"
-:Doctree Elements: pending, footnote, footnote_reference
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: None.
-
-The "target-notes" directive creates a footnote for each external
-target in the text, and corresponding footnote references after each
-reference. For every explicit target (of the form, ``.. _target name:
-URL``) in the text, a footnote will be generated containing the
-visible URL as content.
-
-
-Footnotes
-=========
-
-**NOT IMPLEMENTED YET**
-
-:Directive Type: "footnotes"
-:Doctree Elements: pending, topic
-:Directive Arguments: None?
-:Directive Options: Possible?
-:Directive Content: None.
-
-@@@
-
-
-Citations
-=========
-
-**NOT IMPLEMENTED YET**
-
-:Directive Type: "citations"
-:Doctree Elements: pending, topic
-:Directive Arguments: None?
-:Directive Options: Possible?
-:Directive Content: None.
-
-@@@
-
-
----------------
- HTML-Specific
----------------
-
-Meta
-====
-
-:Directive Type: "meta"
-:Doctree Element: meta (non-standard)
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: Must contain a flat field list.
-
-The "meta" directive is used to specify HTML metadata stored in HTML
-META tags. "Metadata" is data about data, in this case data about web
-pages. Metadata is used to describe and classify web pages in the
-World Wide Web, in a form that is easy for search engines to extract
-and collate.
-
-Within the directive block, a flat field list provides the syntax for
-metadata. The field name becomes the contents of the "name" attribute
-of the META tag, and the field body (interpreted as a single string
-without inline markup) becomes the contents of the "content"
-attribute. For example::
-
- .. meta::
- :description: The reStructuredText plaintext markup language
- :keywords: plaintext, markup language
-
-This would be converted to the following HTML::
-
- <meta name="description"
- content="The reStructuredText plaintext markup language">
- <meta name="keywords" content="plaintext, markup language">
-
-Support for other META attributes ("http-equiv", "scheme", "lang",
-"dir") are provided through field arguments, which must be of the form
-"attr=value"::
-
- .. meta::
- :description lang=en: An amusing story
- :description lang=fr: Un histoire amusant
-
-And their HTML equivalents::
-
- <meta name="description" lang="en" content="An amusing story">
- <meta name="description" lang="fr" content="Un histoire amusant">
-
-Some META tags use an "http-equiv" attribute instead of the "name"
-attribute. To specify "http-equiv" META tags, simply omit the name::
-
- .. meta::
- :http-equiv=Content-Type: text/html; charset=ISO-8859-1
-
-HTML equivalent::
-
- <meta http-equiv="Content-Type"
- content="text/html; charset=ISO-8859-1">
-
-
-Imagemap
-========
-
-**NOT IMPLEMENTED YET**
-
-Non-standard element: imagemap.
-
-
----------------
- Miscellaneous
----------------
-
-.. _include:
-
-Including an External Document Fragment
-=======================================
-
-:Directive Type: "include"
-:Doctree Elements: depend on data being included
-:Directive Arguments: One, required (path to include file).
-:Directive Options: Possible.
-:Directive Content: None.
-
-The "include" directive reads a reStructuredText-formatted text file
-and parses it in the current document's context at the point of the
-directive. For example::
-
- This first example will be parsed at the document level, and can
- thus contain any construct, including section headers.
-
- .. include:: inclusion.txt
-
- Back in the main document.
-
- This second example will be parsed in a block quote context.
- Therefore it may only contain body elements. It may not
- contain section headers.
-
- .. include:: inclusion.txt
-
-If an included document fragment contains section structure, the title
-adornments must match those of the master document.
-
-The text encoding of the master input source is used for included
-files.
-
-The following options are recognized:
-
-``literal`` : flag (empty)
- The entire included text is inserted into the document as a single
- literal block (useful for program listings).
-
-
-.. _raw:
-
-Raw Data Pass-Through
-=====================
-
-:Directive Type: "raw"
-:Doctree Element: raw
-:Directive Arguments: One, required (output format type).
-:Directive Options: Possible.
-:Directive Content: Stored verbatim, uninterpreted. None (empty) if a
- "file" or "url" option given.
-
-The "raw" directive indicates non-reStructuredText data that is to be
-passed untouched to the Writer. The name of the output format is
-given in the first argument. The interpretation of the raw data is up
-to the Writer. A Writer may ignore any raw output not matching its
-format.
-
-For example, the following input would be passed untouched by an HTML
-Writer::
-
- .. raw:: html
-
- <hr width=50 size=10>
-
-A LaTeX Writer could insert the following raw content into its
-output stream::
-
- .. raw:: latex
-
- \documentclass[twocolumn]{article}
-
-Raw data can also be read from an external file, specified in a
-directive option. In this case, the content block must be empty. For
-example::
-
- .. raw:: html
- :file: inclusion.html
-
-The following options are recognized:
-
-``file`` : string
- The local filesystem path of a raw data file to be included.
-``url`` : string
- An Internet URL reference to a raw data file to be included.
-
-
-.. _replace:
-
-Replacement Text
-================
-
-:Directive Type: "replace"
-:Doctree Element: Text & inline elements
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: A single paragraph; may contain inline markup.
-
-The "replace" directive is used to indicate replacement text for a
-substitution reference. It may be used within substitution
-definitions only. For example, this directive can be used to expand
-abbreviations::
-
- .. |reST| replace:: reStructuredText
-
- Yes, |reST| is a long word, so I can't blame anyone for wanting to
- abbreviate it.
-
-As reStructuredText doesn't support nested inline markup, the only way
-to create a reference with styled text is to use substitutions with
-the "replace" directive::
-
- I recommend you try |Python|_.
-
- .. |Python| replace:: Python, *the* best language around
- .. _Python: http://www.python.org/
-
-
-.. _unicode:
-
-Unicode Character Codes
-=======================
-
-:Directive Type: "unicode"
-:Doctree Element: Text
-:Directive Arguments: One or more, required (Unicode character codes,
- optional text, and comments).
-:Directive Options: None.
-:Directive Content: None.
-
-The "unicode" directive converts Unicode character codes (numerical
-values) to characters, and may be used in substitution definitions
-only. Codes may be decimal numbers, hexadecimal numbers (prefixed by
-``0x``, ``x``, ``\x``, ``u``, or ``\u``), or XML-style numeric
-character entities (e.g. ``&#x1a2b;``). Codes are case-insensitive.
-
-Text following " .. " is a comment and is ignored. Spaces are
-ignored, and any other text remains as-is.
-
-Example::
-
- Copyright |copy| 2003, |BogusMegaCorp (TM)|.
-
- .. |copy| unicode:: 0xA9 .. copyright sign
- .. |BogusMegaCorp (TM)| unicode:: BogusMegaCorp U+2122
- .. with trademark sign
-
-
-Class
-=====
-
-:Directive Type: "class"
-:Doctree Element: pending
-:Directive Arguments: One, required (class name / attribute value).
-:Directive Options: None.
-:Directive Content: None.
-
-The "class" directive sets a "class" attribute value on the first
-immediately following non-comment element [#]_. For details of the
-"class" attribute, see `its entry`__ in `The Docutils Document Tree`_.
-The "class" attribute value is converted to lowercase and all
-non-alphanumeric characters are converted to hyphens in order to match
-this regular expression: ``[a-z](-?[a-z0-9]+)*``. See the docstring
-from ``docutils.nodes.make_id`` for the rationale.
-
-Examples::
-
- .. class:: special
-
- This is a "special" paragraph.
-
- .. class:: exceptional
-
- An Exceptional Section
- ======================
-
- This is an ordinary paragraph.
-
-The text above is parsed and transformed into this doctree fragment::
-
- <paragraph class="special">
- This is a "special" paragraph.
- <section class="exceptional">
- <title>
- An Exceptional Section
- <paragraph>
- This is an ordinary paragraph.
-
-.. [#] To set a "class" attribute value on a block quote, the "class"
- directive must be followed by an empty comment::
-
- .. class:: highlights
- ..
-
- Block quote text.
-
- The directive doesn't allow content, therefore an empty comment is
- required to terminate the directive. Without the empty comment,
- the block quote text would be interpreted as the "class"
- directive's content, and the parser would complain.
-
-__ ../doctree.html#class
-
-
-Restructuredtext-Test-Directive
-===============================
-
-:Directive Type: "restructuredtext-test-directive"
-:Doctree Element: system_warning
-:Directive Arguments: None.
-:Directive Options: None.
-:Directive Content: Interpreted as a literal block.
-
-This directive is provided for test purposes only. (Nobody is
-expected to type in a name *that* long!) It is converted into a
-level-1 (info) system message showing the directive data, possibly
-followed by a literal block containing the rest of the directive
-block.
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/ref/rst/introduction.txt b/docutils/docs/ref/rst/introduction.txt
deleted file mode 100644
index 13823b5b7..000000000
--- a/docutils/docs/ref/rst/introduction.txt
+++ /dev/null
@@ -1,315 +0,0 @@
-=====================================
- An Introduction to reStructuredText
-=====================================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-reStructuredText_ is an easy-to-read, what-you-see-is-what-you-get
-plaintext markup syntax and parser system. It is useful for inline
-program documentation (such as Python docstrings), for quickly
-creating simple web pages, and for standalone documents.
-reStructuredText_ is a proposed revision and reinterpretation of the
-StructuredText_ and Setext_ lightweight markup systems.
-
-reStructuredText is designed for extensibility for specific
-application domains. Its parser is a component of Docutils_.
-
-This document defines the goals_ of reStructuredText and provides a
-history_ of the project. It is written using the reStructuredText
-markup, and therefore serves as an example of its use. For a gentle
-introduction to using reStructuredText, please read `A
-ReStructuredText Primer`_. The `Quick reStructuredText`_ user
-reference is also useful. The `reStructuredText Markup
-Specification`_ is the definitive reference. There is also an
-analysis of the `Problems With StructuredText`_.
-
-ReStructuredText's web page is
-http://docutils.sourceforge.net/rst.html.
-
-.. _reStructuredText: http://docutils.sourceforge.net/rst.html
-.. _StructuredText:
- http://dev.zope.org/Members/jim/StructuredTextWiki/FrontPage
-.. _Setext: http://docutils.sourceforge.net/mirror/setext.html
-.. _Docutils: http://docutils.sourceforge.net/
-.. _A ReStructuredText Primer: ../../docs/rst/quickstart.html
-.. _Quick reStructuredText: ../../docs/rst/quickref.html
-.. _reStructuredText Markup Specification: reStructuredText.html
-.. _Problems with StructuredText: problems.html
-
-
-Goals
-=====
-
-The primary goal of reStructuredText_ is to define a markup syntax for
-use in Python docstrings and other documentation domains, that is
-readable and simple, yet powerful enough for non-trivial use. The
-intended purpose of the reStructuredText markup is twofold:
-
-- the establishment of a set of standard conventions allowing the
- expression of structure within plaintext, and
-
-- the conversion of such documents into useful structured data
- formats.
-
-The secondary goal of reStructuredText is to be accepted by the Python
-community (by way of being blessed by PythonLabs and the BDFL [#]_) as
-a standard for Python inline documentation (possibly one of several
-standards, to account for taste).
-
-.. [#] Python's creator and "Benevolent Dictator For Life",
- Guido van Rossum.
-
-To clarify the primary goal, here are specific design goals, in order,
-beginning with the most important:
-
-1. Readable. The marked-up text must be easy to read without any
- prior knowledge of the markup language. It should be as easily
- read in raw form as in processed form.
-
-2. Unobtrusive. The markup that is used should be as simple and
- unobtrusive as possible. The simplicity of markup constructs
- should be roughly proportional to their frequency of use. The most
- common constructs, with natural and obvious markup, should be the
- simplest and most unobtrusive. Less common constructs, for which
- there is no natural or obvious markup, should be distinctive.
-
-3. Unambiguous. The rules for markup must not be open for
- interpretation. For any given input, there should be one and only
- one possible output (including error output).
-
-4. Unsurprising. Markup constructs should not cause unexpected output
- upon processing. As a fallback, there must be a way to prevent
- unwanted markup processing when a markup construct is used in a
- non-markup context (for example, when documenting the markup syntax
- itself).
-
-5. Intuitive. Markup should be as obvious and easily remembered as
- possible, for the author as well as for the reader. Constructs
- should take their cues from such naturally occurring sources as
- plaintext email messages, newsgroup postings, and text
- documentation such as README.txt files.
-
-6. Easy. It should be easy to mark up text using any ordinary text
- editor.
-
-7. Scalable. The markup should be applicable regardless of the length
- of the text.
-
-8. Powerful. The markup should provide enough constructs to produce a
- reasonably rich structured document.
-
-9. Language-neutral. The markup should apply to multiple natural (as
- well as artificial) languages, not only English.
-
-10. Extensible. The markup should provide a simple syntax and
- interface for adding more complex general markup, and custom
- markup.
-
-11. Output-format-neutral. The markup will be appropriate for
- processing to multiple output formats, and will not be biased
- toward any particular format.
-
-The design goals above were used as criteria for accepting or
-rejecting syntax, or selecting between alternatives.
-
-It is emphatically *not* the goal of reStructuredText to define
-docstring semantics, such as docstring contents or docstring length.
-These issues are orthogonal to the markup syntax and beyond the scope
-of this specification.
-
-Also, it is not the goal of reStructuredText to maintain compatibility
-with StructuredText_ or Setext_. reStructuredText shamelessly steals
-their great ideas and ignores the not-so-great.
-
-Author's note:
-
- Due to the nature of the problem we're trying to solve (or,
- perhaps, due to the nature of the proposed solution), the above
- goals unavoidably conflict. I have tried to extract and distill
- the wisdom accumulated over the years in the Python Doc-SIG_
- mailing list and elsewhere, to come up with a coherent and
- consistent set of syntax rules, and the above goals by which to
- measure them.
-
- There will inevitably be people who disagree with my particular
- choices. Some desire finer control over their markup, others
- prefer less. Some are concerned with very short docstrings,
- others with full-length documents. This specification is an
- effort to provide a reasonably rich set of markup constructs in a
- reasonably simple form, that should satisfy a reasonably large
- group of reasonable people.
-
- David Goodger (goodger@users.sourceforge.net), 2001-04-20
-
-.. _Doc-SIG: http://www.python.org/sigs/doc-sig/
-
-
-History
-=======
-
-reStructuredText_, the specification, is based on StructuredText_ and
-Setext_. StructuredText was developed by Jim Fulton of `Zope
-Corporation`_ (formerly Digital Creations) and first released in 1996.
-It is now released as a part of the open-source "Z Object Publishing
-Environment" (ZOPE_). Ian Feldman's and Tony Sanders' earlier Setext_
-specification was either an influence on StructuredText or, by their
-similarities, at least evidence of the correctness of this approach.
-
-I discovered StructuredText_ in late 1999 while searching for a way to
-document the Python modules in one of my projects. Version 1.1 of
-StructuredText was included in Daniel Larsson's pythondoc_. Although
-I was not able to get pythondoc to work for me, I found StructuredText
-to be almost ideal for my needs. I joined the Python Doc-SIG_
-(Documentation Special Interest Group) mailing list and found an
-ongoing discussion of the shortcomings of the StructuredText
-"standard". This discussion has been going on since the inception of
-the mailing list in 1996, and possibly predates it.
-
-I decided to modify the original module with my own extensions and
-some suggested by the Doc-SIG members. I soon realized that the
-module was not written with extension in mind, so I embarked upon a
-general reworking, including adapting it to the "re" regular
-expression module (the original inspiration for the name of this
-project). Soon after I completed the modifications, I discovered that
-StructuredText.py was up to version 1.23 in the ZOPE distribution.
-Implementing the new syntax extensions from version 1.23 proved to be
-an exercise in frustration, as the complexity of the module had become
-overwhelming.
-
-In 2000, development on StructuredTextNG_ ("Next Generation") began at
-`Zope Corporation`_ (then Digital Creations). It seems to have many
-improvements, but still suffers from many of the problems of classic
-StructuredText.
-
-I decided that a complete rewrite was in order, and even started a
-`reStructuredText SourceForge project`_ (now inactive). My
-motivations (the "itches" I aim to "scratch") are as follows:
-
-- I need a standard format for inline documentation of the programs I
- write. This inline documentation has to be convertible to other
- useful formats, such as HTML. I believe many others have the same
- need.
-
-- I believe in the Setext/StructuredText idea and want to help
- formalize the standard. However, I feel the current specifications
- and implementations have flaws that desperately need fixing.
-
-- reStructuredText could form part of the foundation for a
- documentation extraction and processing system, greatly benefitting
- Python. But it is only a part, not the whole. reStructuredText is
- a markup language specification and a reference parser
- implementation, but it does not aspire to be the entire system. I
- don't want reStructuredText or a hypothetical Python documentation
- processor to die stillborn because of over-ambition.
-
-- Most of all, I want to help ease the documentation chore, the bane
- of many a programmer.
-
-Unfortunately I was sidetracked and stopped working on this project.
-In November 2000 I made the time to enumerate the problems of
-StructuredText and possible solutions, and complete the first draft of
-a specification. This first draft was posted to the Doc-SIG in three
-parts:
-
-- `A Plan for Structured Text`__
-- `Problems With StructuredText`__
-- `reStructuredText: Revised Structured Text Specification`__
-
-__ http://mail.python.org/pipermail/doc-sig/2000-November/001239.html
-__ http://mail.python.org/pipermail/doc-sig/2000-November/001240.html
-__ http://mail.python.org/pipermail/doc-sig/2000-November/001241.html
-
-In March 2001 a flurry of activity on the Doc-SIG spurred me to
-further revise and refine my specification, the result of which you
-are now reading. An offshoot of the reStructuredText project has been
-the realization that a single markup scheme, no matter how well
-thought out, may not be enough. In order to tame the endless debates
-on Doc-SIG, a flexible `Docstring Processing System framework`_ needed
-to be constructed. This framework has become the more important of
-the two projects; reStructuredText_ has found its place as one
-possible choice for a single component of the larger framework.
-
-The project web site and the first project release were rolled out in
-June 2001, including posting the second draft of the spec [#spec-2]_
-and the first draft of PEPs 256, 257, and 258 [#peps-1]_ to the
-Doc-SIG. These documents and the project implementation proceeded to
-evolve at a rapid pace. Implementation history details can be found
-in the `project history file`_.
-
-In November 2001, the reStructuredText parser was nearing completion.
-Development of the parser continued with the addition of small
-convenience features, improvements to the syntax, the filling in of
-gaps, and bug fixes. After a long holiday break, in early 2002 most
-development moved over to the other Docutils components, the
-"Readers", "Writers", and "Transforms". A "standalone" reader
-(processes standalone text file documents) was completed in February,
-and a basic HTML writer (producing HTML 4.01, using CSS-1) was
-completed in early March.
-
-`PEP 287`_, "reStructuredText Standard Docstring Format", was created
-to formally propose reStructuredText as a standard format for Python
-docstrings, PEPs, and other files. It was first posted to
-comp.lang.python_ and the Python-dev_ mailing list on 2002-04-02.
-
-Version 0.4 of the reStructuredText__ and `Docstring Processing
-System`_ projects were released in April 2002. The two projects were
-immediately merged, renamed to "Docutils_", and a 0.1 release soon
-followed.
-
-.. __: `reStructuredText SourceForge project`_
-
-.. [#spec-2] The second draft of the spec:
-
- - `An Introduction to reStructuredText`__
- - `Problems With StructuredText`__
- - `reStructuredText Markup Specification`__
- - `Python Extensions to the reStructuredText Markup
- Specification`__
-
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001858.html
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001859.html
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001860.html
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001861.html
-
-.. [#peps-1] First drafts of the PEPs:
-
- - `PEP 256: Docstring Processing System Framework`__
- - `PEP 258: DPS Generic Implementation Details`__
- - `PEP 257: Docstring Conventions`__
-
- Current working versions of the PEPs can be found in
- http://docutils.sourceforge.net/spec/, and official versions can be
- found in the `master PEP repository`_.
-
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001855.html
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001856.html
- __ http://mail.python.org/pipermail/doc-sig/2001-June/001857.html
-
-
-.. _Zope Corporation: http://www.zope.com
-.. _ZOPE: http://www.zope.org
-.. _reStructuredText SourceForge project:
- http://structuredtext.sourceforge.net/
-.. _pythondoc: http://starship.python.net/crew/danilo/pythondoc/
-.. _StructuredTextNG:
- http://dev.zope.org/Members/jim/StructuredTextWiki/StructuredTextNG
-.. _project history file: http://docutils.sourceforge.net/HISTORY.html
-.. _PEP 287: http://docutils.sourceforge.net/spec/pep-0287.html
-.. _Docstring Processing System framework:
- http://docutils.sourceforge.net/spec/pep-0256.html
-.. _comp.lang.python: news:comp.lang.python
-.. _Python-dev: http://mail.python.org/pipermail/python-dev/
-.. _Docstring Processing System: http://docstring.sourceforge.net/
-.. _master PEP repository: http://www.python.org/peps/
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/ref/rst/restructuredtext.txt b/docutils/docs/ref/rst/restructuredtext.txt
deleted file mode 100644
index 1ad25ff35..000000000
--- a/docutils/docs/ref/rst/restructuredtext.txt
+++ /dev/null
@@ -1,2679 +0,0 @@
-=======================================
- reStructuredText Markup Specification
-=======================================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-.. Note::
-
- This document is a detailed technical specification; it is not a
- tutorial or a primer. If this is your first exposure to
- reStructuredText, please read `A ReStructuredText Primer`_ and the
- `Quick reStructuredText`_ user reference first.
-
-.. _A ReStructuredText Primer: ../../docs/rst/quickstart.html
-.. _Quick reStructuredText: ../../docs/rst/quickref.html
-
-
-reStructuredText_ is plaintext that uses simple and intuitive
-constructs to indicate the structure of a document. These constructs
-are equally easy to read in raw and processed forms. This document is
-itself an example of reStructuredText (raw, if you are reading the
-text file, or processed, if you are reading an HTML document, for
-example). The reStructuredText parser is a component of Docutils_.
-
-Simple, implicit markup is used to indicate special constructs, such
-as section headings, bullet lists, and emphasis. The markup used is
-as minimal and unobtrusive as possible. Less often-used constructs
-and extensions to the basic reStructuredText syntax may have more
-elaborate or explicit markup.
-
-reStructuredText is applicable to documents of any length, from the
-very small (such as inline program documentation fragments, e.g.
-Python docstrings) to the quite large (this document).
-
-The first section gives a quick overview of the syntax of the
-reStructuredText markup by example. A complete specification is given
-in the `Syntax Details`_ section.
-
-`Literal blocks`_ (in which no markup processing is done) are used for
-examples throughout this document, to illustrate the plaintext markup.
-
-
-.. contents::
-
-
------------------------
- Quick Syntax Overview
------------------------
-
-A reStructuredText document is made up of body or block-level
-elements, and may be structured into sections. Sections_ are
-indicated through title style (underlines & optional overlines).
-Sections contain body elements and/or subsections. Some body elements
-contain further elements, such as lists containing list items, which
-in turn may contain paragraphs and other body elements. Others, such
-as paragraphs, contain text and `inline markup`_ elements.
-
-Here are examples of `body elements`_:
-
-- Paragraphs_ (and `inline markup`_)::
-
- Paragraphs contain text and may contain inline markup:
- *emphasis*, **strong emphasis**, `interpreted text`, ``inline
- literals``, standalone hyperlinks (http://www.python.org),
- external hyperlinks (Python_), internal cross-references
- (example_), footnote references ([1]_), citation references
- ([CIT2002]_), substitution references (|example|), and _`inline
- internal targets`.
-
- Paragraphs are separated by blank lines and are left-aligned.
-
-- Five types of lists:
-
- 1. `Bullet lists`_::
-
- - This is a bullet list.
-
- - Bullets can be "-", "*", or "+".
-
- 2. `Enumerated lists`_::
-
- 1. This is an enumerated list.
-
- 2. Enumerators may be arabic numbers, letters, or roman
- numerals.
-
- 3. `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.
-
- 4. `Field lists`_::
-
- :what: Field lists map field names to field bodies, like
- database records. They are often part of an extension
- syntax.
-
- :how: 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.
-
- 5. `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
- /V DOS/VMS-style options too
-
- There must be at least two spaces between the option and the
- description.
-
-- `Literal blocks`_::
-
- Literal blocks are indented, and indicated with a double-colon
- ("::") at the end of the preceding paragraph (right here -->)::
-
- if literal_block:
- text = 'is left as-is'
- spaces_and_linebreaks = 'are preserved'
- markup_processing = None
-
-- `Block quotes`_::
-
- Block quotes consist of indented body elements:
-
- This theory, that is mine, is mine.
-
- -- 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)
-
-- Two syntaxes for tables_:
-
- 1. `Grid tables`_; complete, but complex and verbose::
-
- +------------------------+------------+----------+
- | Header row, column 1 | Header 2 | Header 3 |
- +========================+============+==========+
- | body row 1, column 1 | column 2 | column 3 |
- +------------------------+------------+----------+
- | body row 2 | Cells may span |
- +------------------------+-----------------------+
-
- 2. `Simple tables`_; easy and compact, but limited::
-
- ==================== ========== ==========
- Header row, column 1 Header 2 Header 3
- ==================== ========== ==========
- body row 1, column 1 column 2 column 3
- body row 2 Cells may span columns
- ==================== ======================
-
-- `Explicit markup blocks`_ all begin with an explicit block marker,
- two periods and a space:
-
- - Footnotes_::
-
- .. [1] A footnote contains body elements, consistently
- indented by at least 3 spaces.
-
- - Citations_::
-
- .. [CIT2002] Just like a footnote, except the label is
- textual.
-
- - `Hyperlink targets`_::
-
- .. _Python: http://www.python.org
-
- .. _example:
-
- The "_example" target above points to this paragraph.
-
- - Directives_::
-
- .. image:: mylogo.png
-
- - `Substitution definitions`_::
-
- .. |symbol here| image:: symbol.png
-
- - Comments_::
-
- .. Comments begin with two dots and a space. Anything may
- follow, except for the syntax of footnotes/citations,
- hyperlink targets, directives, or substitution definitions.
-
-
-----------------
- Syntax Details
-----------------
-
-Descriptions below list "doctree elements" (document tree element
-names; XML DTD generic identifiers) corresponding to syntax
-constructs. For details on the hierarchy of elements, please see `The
-Docutils Document Tree`_ and the `Docutils Generic DTD`_ XML document
-type definition.
-
-
-Whitespace
-==========
-
-Spaces are recommended for indentation_, but tabs may also be used.
-Tabs will be converted to spaces. Tab stops are at every 8th column.
-
-Other whitespace characters (form feeds [chr(12)] and vertical tabs
-[chr(11)]) are converted to single spaces before processing.
-
-
-Blank Lines
------------
-
-Blank lines are used to separate paragraphs and other elements.
-Multiple successive blank lines are equivalent to a single blank line,
-except within literal blocks (where all whitespace is preserved).
-Blank lines may be omitted when the markup makes element separation
-unambiguous, in conjunction with indentation. The first line of a
-document is treated as if it is preceded by a blank line, and the last
-line of a document is treated as if it is followed by a blank line.
-
-
-Indentation
------------
-
-Indentation is used to indicate, and is only significant in
-indicating:
-
-- multi-line contents of list items,
-- multiple body elements within a list item (including nested lists),
-- the definition part of a definition list item,
-- block quotes,
-- the extent of literal blocks, and
-- the extent of explicit markup blocks.
-
-Any text whose indentation is less than that of the current level
-(i.e., unindented text or "dedents") ends the current level of
-indentation.
-
-Since all indentation is significant, the level of indentation must be
-consistent. For example, indentation is the sole markup indicator for
-`block quotes`_::
-
- This is a top-level paragraph.
-
- This paragraph belongs to a first-level block quote.
-
- Paragraph 2 of the first-level block quote.
-
-Multiple levels of indentation within a block quote will result in
-more complex structures::
-
- This is a top-level paragraph.
-
- This paragraph belongs to a first-level block quote.
-
- This paragraph belongs to a second-level block quote.
-
- Another top-level paragraph.
-
- This paragraph belongs to a second-level block quote.
-
- This paragraph belongs to a first-level block quote. The
- second-level block quote above is inside this first-level
- block quote.
-
-When a paragraph or other construct consists of more than one line of
-text, the lines must be left-aligned::
-
- This is a paragraph. The lines of
- this paragraph are aligned at the left.
-
- This paragraph has problems. The
- lines are not left-aligned. In addition
- to potential misinterpretation, warning
- and/or error messages will be generated
- by the parser.
-
-Several constructs begin with a marker, and the body of the construct
-must be indented relative to the marker. For constructs using simple
-markers (`bullet lists`_, `enumerated lists`_, footnotes_, citations_,
-`hyperlink targets`_, directives_, and comments_), the level of
-indentation of the body is determined by the position of the first
-line of text, which begins on the same line as the marker. For
-example, bullet list bodies must be indented by at least two columns
-relative to the left edge of the bullet::
-
- - This is the first line of a bullet list
- item's paragraph. All lines must align
- relative to the first line. [1]_
-
- This indented paragraph is interpreted
- as a block quote.
-
- Because it is not sufficiently indented,
- this paragraph does not belong to the list
- item.
-
- .. [1] Here's a footnote. The second line is aligned
- with the beginning of the footnote label. The ".."
- marker is what determines the indentation.
-
-For constructs using complex markers (`field lists`_ and `option
-lists`_), where the marker may contain arbitrary text, the indentation
-of the first line *after* the marker determines the left edge of the
-body. For example, field lists may have very long markers (containing
-the field names)::
-
- :Hello: This field has a short field name, so aligning the field
- body with the first line is feasible.
-
- :Number-of-African-swallows-required-to-carry-a-coconut: It would
- be very difficult to align the field body with the left edge
- of the first line. It may even be preferable not to begin the
- body on the same line as the marker.
-
-
-Escaping Mechanism
-==================
-
-The character set universally available to plaintext documents, 7-bit
-ASCII, is limited. No matter what characters are used for markup,
-they will already have multiple meanings in written text. Therefore
-markup characters *will* sometimes appear in text **without being
-intended as markup**. Any serious markup system requires an escaping
-mechanism to override the default meaning of the characters used for
-the markup. In reStructuredText we use the backslash, commonly used
-as an escaping character in other domains.
-
-A backslash followed by any character (except whitespace characters)
-escapes that character. The escaped character represents the
-character itself, and is prevented from playing a role in any markup
-interpretation. The backslash is removed from the output. A literal
-backslash is represented by two backslashes in a row (the first
-backslash "escapes" the second, preventing it being interpreted in an
-"escaping" role).
-
-Backslash-escaped whitespace characters are removed from the document.
-This allows for character-level `inline markup`_.
-
-There are two contexts in which backslashes have no special meaning:
-literal blocks and inline literals. In these contexts, a single
-backslash represents a literal backslash, without having to double up.
-
-Please note that the reStructuredText specification and parser do not
-address the issue of the representation or extraction of text input
-(how and in what form the text actually *reaches* the parser).
-Backslashes and other characters may serve a character-escaping
-purpose in certain contexts and must be dealt with appropriately. For
-example, Python uses backslashes in strings to escape certain
-characters, but not others. The simplest solution when backslashes
-appear in Python docstrings is to use raw docstrings::
-
- r"""This is a raw docstring. Backslashes (\) are not touched."""
-
-
-Reference Names
-===============
-
-Simple reference names are single words consisting of alphanumerics
-plus isolated (no two adjacent) internal hyphens, underscores, and
-periods; no whitespace or other characters are allowed. Footnote
-labels (Footnotes_ & `Footnote References`_), citation labels
-(Citations_ & `Citation References`_), `interpreted text`_ roles, and
-some `hyperlink references`_ use the simple reference name syntax.
-
-Reference names using punctuation or whose names are phrases (two or
-more space-separated words) are called "phrase-references".
-Phrase-references are expressed by enclosing the phrase in backquotes
-and treating the backquoted text as a reference name::
-
- Want to learn about `my favorite programming language`_?
-
- .. _my favorite programming language: http://www.python.org
-
-Simple reference names may also optionally use backquotes.
-
-Reference names are whitespace-neutral and case-insensitive. When
-resolving reference names internally:
-
-- whitespace is normalized (one or more spaces, horizontal or vertical
- tabs, newlines, carriage returns, or form feeds, are interpreted as
- a single space), and
-
-- case is normalized (all alphabetic characters are converted to
- lowercase).
-
-For example, the following `hyperlink references`_ are equivalent::
-
- - `A HYPERLINK`_
- - `a hyperlink`_
- - `A
- Hyperlink`_
-
-Hyperlinks_, footnotes_, and citations_ all share the same namespace
-for reference names. The labels of citations (simple reference names)
-and manually-numbered footnotes (numbers) are entered into the same
-database as other hyperlink names. This means that a footnote
-(defined as "``.. [1]``") which can be referred to by a footnote
-reference (``[1]_``), can also be referred to by a plain hyperlink
-reference (1_). Of course, each type of reference (hyperlink,
-footnote, citation) may be processed and rendered differently. Some
-care should be taken to avoid reference name conflicts.
-
-
-Document Structure
-==================
-
-Document
---------
-
-Doctree element: document.
-
-The top-level element of a parsed reStructuredText document is the
-"document" element. After initial parsing, the document element is a
-simple container for a document fragment, consisting of `body
-elements`_, transitions_, and sections_, but lacking a document title
-or other bibliographic elements. The code that calls the parser may
-choose to run one or more optional post-parse transforms_,
-rearranging the document fragment into a complete document with a
-title and possibly other metadata elements (author, date, etc.; see
-`Bibliographic Fields`_).
-
-Specifically, there is no way to indicate a document title and
-subtitle explicitly in reStructuredText. Instead, a lone top-level
-section title (see Sections_ below) can be treated as the document
-title. Similarly, a lone second-level section title immediately after
-the "document title" can become the document subtitle. See the
-`DocTitle transform`_ for details.
-
-
-Sections
---------
-
-Doctree elements: section, title.
-
-Sections are identified through their titles, which are marked up with
-adornment: "underlines" below the title text, or underlines and
-matching "overlines" above the title. An underline/overline is a
-single repeated punctuation character that begins in column 1 and
-forms a line extending at least as far as the right edge of the title
-text. Specifically, an underline/overline character may be any
-non-alphanumeric printable 7-bit ASCII character [#]_. When an
-overline is used, the length and character used must match the
-underline. Underline-only adornment styles are distinct from
-overline-and-underline styles that use the same character. There may
-be any number of levels of section titles, although some output
-formats may have limits (HTML has 6 levels).
-
-.. [#] The following are all valid section title adornment
- characters::
-
- ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
-
- Some characters are more suitable than others. The following are
- recommended::
-
- = - ` : . ' " ~ ^ _ * + #
-
-Rather than imposing a fixed number and order of section title
-adornment styles, the order enforced will be the order as encountered.
-The first style encountered will be an outermost title (like HTML H1),
-the second style will be a subtitle, the third will be a subsubtitle,
-and so on.
-
-Below are examples of section title styles::
-
- ===============
- Section Title
- ===============
-
- ---------------
- Section Title
- ---------------
-
- Section Title
- =============
-
- Section Title
- -------------
-
- Section Title
- `````````````
-
- Section Title
- '''''''''''''
-
- Section Title
- .............
-
- Section Title
- ~~~~~~~~~~~~~
-
- Section Title
- *************
-
- Section Title
- +++++++++++++
-
- Section Title
- ^^^^^^^^^^^^^
-
-When a title has both an underline and an overline, the title text may
-be inset, as in the first two examples above. This is merely
-aesthetic and not significant. Underline-only title text may *not* be
-inset.
-
-A blank line after a title is optional. All text blocks up to the
-next title of the same or higher level are included in a section (or
-subsection, etc.).
-
-All section title styles need not be used, nor need any specific
-section title style be used. However, a document must be consistent
-in its use of section titles: once a hierarchy of title styles is
-established, sections must use that hierarchy.
-
-Each section title automatically generates a hyperlink target pointing
-to the section. The text of the hyperlink target (the "reference
-name") is the same as that of the section title. See `Implicit
-Hyperlink Targets`_ for a complete description.
-
-Sections may contain `body elements`_, transitions_, and nested
-sections.
-
-
-Transitions
------------
-
-Doctree element: transition.
-
- Instead of subheads, extra space or a type ornament between
- paragraphs may be used to mark text divisions or to signal
- changes in subject or emphasis.
-
- (The Chicago Manual of Style, 14th edition, section 1.80)
-
-Transitions are commonly seen in novels and short fiction, as a gap
-spanning one or more lines, with or without a type ornament such as a
-row of asterisks. Transitions separate other body elements. A
-transition should not begin or end a section or document, nor should
-two transitions be immediately adjacent.
-
-The syntax for a transition marker is a horizontal line of 4 or more
-repeated punctuation characters. The syntax is the same as section
-title underlines without title text. Transition markers require blank
-lines before and after::
-
- Para.
-
- ----------
-
- Para.
-
-Unlike section title underlines, no hierarchy of transition markers is
-enforced, nor do differences in transition markers accomplish
-anything. It is recommended that a single consistent style be used.
-
-The processing system is free to render transitions in output in any
-way it likes. For example, horizontal rules (``<hr>``) in HTML output
-would be an obvious choice.
-
-
-Body Elements
-=============
-
-Paragraphs
-----------
-
-Doctree element: paragraph.
-
-Paragraphs consist of blocks of left-aligned text with no markup
-indicating any other body element. Blank lines separate paragraphs
-from each other and from other body elements. Paragraphs may contain
-`inline markup`_.
-
-Syntax diagram::
-
- +------------------------------+
- | paragraph |
- | |
- +------------------------------+
-
- +------------------------------+
- | paragraph |
- | |
- +------------------------------+
-
-
-Bullet Lists
-------------
-
-Doctree elements: bullet_list, list_item.
-
-A text block which begins with a "-", "*", or "+", followed by
-whitespace, is a bullet list item (a.k.a. "unordered" list item).
-List item bodies must be left-aligned and indented relative to the
-bullet; the text immediately after the bullet determines the
-indentation. For example::
-
- - This is the first bullet list item. The blank line above the
- first list item is required; blank lines between list items
- (such as below this paragraph) are optional.
-
- - This is the first paragraph in the second item in the list.
-
- This is the second paragraph in the second item in the list.
- The blank line above this paragraph is required. The left edge
- of this paragraph lines up with the paragraph above, both
- indented relative to the bullet.
-
- - This is a sublist. The bullet lines up with the left edge of
- the text blocks above. A sublist is a new list so requires a
- blank line above and below.
-
- - This is the third item of the main list.
-
- This paragraph is not part of the list.
-
-Here are examples of **incorrectly** formatted bullet lists::
-
- - This first line is fine.
- A blank line is required between list items and paragraphs.
- (Warning)
-
- - The following line appears to be a new sublist, but it is not:
- - This is a paragraph continuation, not a sublist (since there's
- no blank line). This line is also incorrectly indented.
- - Warnings may be issued by the implementation.
-
-Syntax diagram::
-
- +------+-----------------------+
- | "- " | list item |
- +------| (body elements)+ |
- +-----------------------+
-
-
-Enumerated Lists
-----------------
-
-Doctree elements: enumerated_list, list_item.
-
-Enumerated lists (a.k.a. "ordered" lists) are similar to bullet lists,
-but use enumerators instead of bullets. An enumerator consists of an
-enumeration sequence member and formatting, followed by whitespace.
-The following enumeration sequences are recognized:
-
-- arabic numerals: 1, 2, 3, ... (no upper limit).
-- uppercase alphabet characters: A, B, C, ..., Z.
-- lower-case alphabet characters: a, b, c, ..., z.
-- uppercase Roman numerals: I, II, III, IV, ..., MMMMCMXCIX (4999).
-- lowercase Roman numerals: i, ii, iii, iv, ..., mmmmcmxcix (4999).
-
-The following formatting types are recognized:
-
-- suffixed with a period: "1.", "A.", "a.", "I.", "i.".
-- surrounded by parentheses: "(1)", "(A)", "(a)", "(I)", "(i)".
-- suffixed with a right-parenthesis: "1)", "A)", "a)", "I)", "i)".
-
-While parsing an enumerated list, a new list will be started whenever:
-
-- An enumerator is encountered which does not have the same format and
- sequence type as the current list (e.g. "1.", "(a)" produces two
- separate lists).
-
-- The enumerators are not in sequence (e.g., "1.", "3." produces two
- separate lists).
-
-It is recommended that the enumerator of the first list item be
-ordinal-1 ("1", "A", "a", "I", or "i"). Although other start-values
-will be recognized, they may not be supported by the output format. A
-level-1 [info] system message will be generated for any list beginning
-with a non-ordinal-1 enumerator.
-
-Lists using Roman numerals must begin with "I"/"i" or a
-multi-character value, such as "II" or "XV". Any other
-single-character Roman numeral ("V", "X", "L", "C", "D", "M") will be
-interpreted as a letter of the alphabet, not as a Roman numeral.
-Likewise, lists using letters of the alphabet may not begin with
-"I"/"i", since these are recognized as Roman numeral 1.
-
-The second line of each enumerated list item is checked for validity.
-This is to prevent ordinary paragraphs from being mistakenly
-interpreted as list items, when they happen to begin with text
-identical to enumerators. For example, this text is parsed as an
-ordinary paragraph::
-
- A. Einstein was a really
- smart dude.
-
-However, ambiguity cannot be avoided if the paragraph consists of only
-one line. This text is parsed as an enumerated list item::
-
- A. Einstein was a really smart dude.
-
-If a single-line paragraph begins with text identical to an enumerator
-("A.", "1.", "(b)", "I)", etc.), the first character will have to be
-escaped in order to have the line parsed as an ordinary paragraph::
-
- \A. Einstein was a really smart dude.
-
-Nested enumerated lists must be created with indentation. For
-example::
-
- 1. Item 1.
-
- a) Item 1a.
- b) Item 1b.
-
-Example syntax diagram::
-
- +-------+----------------------+
- | "1. " | list item |
- +-------| (body elements)+ |
- +----------------------+
-
-
-Definition Lists
-----------------
-
-Doctree elements: definition_list, definition_list_item, term,
-classifier, definition.
-
-Each definition list item contains a term, an optional classifier, and
-a definition. A term is a simple one-line word or phrase. An
-optional classifier may follow the term on the same line, after an
-inline " : " (space, colon, space). A definition is a block indented
-relative to the term, and may contain multiple paragraphs and other
-body elements. There may be no blank line between a term line and a
-definition block (this distinguishes definition lists from `block
-quotes`_). Blank lines are required before the first and after the
-last definition list item, but are optional in-between. For example::
-
- term 1
- Definition 1.
-
- term 2
- Definition 2, paragraph 1.
-
- Definition 2, paragraph 2.
-
- term 3 : classifier
- Definition 3.
-
-Inline markup is parsed in the term line before the term/classifier
-delimiter (" : ") is recognized. The delimiter will only be
-recognized if it appears outside of any inline markup.
-
-A definition list may be used in various ways, including:
-
-- As a dictionary or glossary. The term is the word itself, a
- classifier may be used to indicate the usage of the term (noun,
- verb, etc.), and the definition follows.
-
-- To describe program variables. The term is the variable name, a
- classifier may be used to indicate the type of the variable (string,
- integer, etc.), and the definition describes the variable's use in
- the program. This usage of definition lists supports the classifier
- syntax of Grouch_, a system for describing and enforcing a Python
- object schema.
-
-Syntax diagram::
-
- +---------------------------+
- | term [ " : " classifier ] |
- +--+------------------------+--+
- | definition |
- | (body elements)+ |
- +---------------------------+
-
-
-Field Lists
------------
-
-Doctree elements: field_list, field, field_name, field_body.
-
-Field lists are used as part of an extension syntax, such as options
-for directives_, or database-like records meant for further
-processing. They may also be used for two-column table-like
-structures resembling database records (label & data pairs).
-Applications of reStructuredText may recognize field names and
-transform fields or field bodies in certain contexts. For examples,
-see `Bibliographic Fields`_ below, or the "image" and "meta"
-directives in `reStructuredText Directives`_.
-
-Field lists are mappings from field names to field bodies, modeled on
-RFC822_ headers. A field name is made up of one or more letters,
-numbers, whitespace, and punctuation, except colons (":"). Field
-names are case-insensitive. The field name, along with a single colon
-prefix and suffix, together form the field marker. The field marker
-is followed by whitespace and the field body. The field body may
-contain multiple body elements, indented relative to the field marker.
-The first line after the field name marker determines the indentation
-of the field body. For example::
-
- :Date: 2001-08-16
- :Version: 1
- :Authors: - Me
- - Myself
- - I
- :Indentation: Since the field marker may be quite long, the second
- and subsequent lines of the field body do not have to line up
- with the first line, but they must be indented relative to the
- field name marker, and they must line up with each other.
- :Parameter i: integer
-
-The interpretation of individual words in a multi-word field name is
-up to the application. The application may specify a syntax for the
-field name. For example, second and subsequent words may be treated
-as "arguments", quoted phrases may be treated as a single argument,
-and direct support for the "name=value" syntax may be added.
-
-Standard RFC822_ headers cannot be used for this construct because
-they are ambiguous. A word followed by a colon at the beginning of a
-line is common in written text. However, in well-defined contexts
-such as when a field list invariably occurs at the beginning of a
-document (PEPs and email messages), standard RFC822 headers could be
-used.
-
-Syntax diagram (simplified)::
-
- +--------------------+----------------------+
- | ":" field name ":" | field body |
- +-------+------------+ |
- | (body elements)+ |
- +-----------------------------------+
-
-
-Bibliographic Fields
-````````````````````
-
-Doctree elements: docinfo, author, authors, organization, contact,
-version, status, date, copyright, field, topic.
-
-When a field list is the first non-comment element in a document
-(after the document title, if there is one), it may have its fields
-transformed to document bibliographic data. This bibliographic data
-corresponds to the front matter of a book, such as the title page and
-copyright page.
-
-Certain registered field names (listed below) are recognized and
-transformed to the corresponding doctree elements, most becoming child
-elements of the "docinfo" element. No ordering is required of these
-fields, although they may be rearranged to fit the document structure,
-as noted. Unless otherwise indicated below, each of the bibliographic
-elements' field bodies may contain a single paragraph only. Field
-bodies may be checked for `RCS keywords`_ and cleaned up. Any
-unrecognized fields will remain as generic fields in the docinfo
-element.
-
-The registered bibliographic field names and their corresponding
-doctree elements are as follows:
-
-- Field name "Author": author element.
-- "Authors": authors.
-- "Organization": organization.
-- "Contact": contact.
-- "Address": address.
-- "Version": version.
-- "Status": status.
-- "Date": date.
-- "Copyright": copyright.
-- "Dedication": topic.
-- "Abstract": topic.
-
-The "Authors" field may contain either: a single paragraph consisting
-of a list of authors, separated by ";" or ","; or a bullet list whose
-elements each contain a single paragraph per author. ";" is checked
-first, so "Doe, Jane; Doe, John" will work. In some languages
-(e.g. Swedish), there is no singular/plural distinction between
-"Author" and "Authors", so only an "Authors" field is provided, and a
-single name is interpreted as an "Author". If a single name contains
-a comma, end it with a semicolon to disambiguate: ":Authors: Doe,
-Jane;".
-
-The "Address" field is for a multi-line surface mailing address. A
-specialized form of line block`_ (see `reStructuredText Directives`_),
-newlines and whitespace will be preserved.
-
-The "Dedication" and "Abstract" fields may contain arbitrary body
-elements. Only one of each is allowed. They become topic elements
-with "Dedication" or "Abstract" titles (or language equivalents)
-immediately following the docinfo element.
-
-This field-name-to-element mapping can be replaced for other
-languages. See the `DocInfo transform`_ implementation documentation
-for details.
-
-Unregistered/generic fields may contain one or more paragraphs or
-arbitrary body elements.
-
-
-RCS Keywords
-````````````
-
-`Bibliographic fields`_ recognized by the parser are normally checked
-for RCS [#]_ keywords and cleaned up [#]_. RCS keywords may be
-entered into source files as "$keyword$", and once stored under RCS or
-CVS [#]_, they are expanded to "$keyword: expansion text $". For
-example, a "Status" field will be transformed to a "status" element::
-
- :Status: $keyword: expansion text $
-
-.. [#] Revision Control System.
-.. [#] RCS keyword processing can be turned off (unimplemented).
-.. [#] Concurrent Versions System. CVS uses the same keywords as RCS.
-
-Processed, the "status" element's text will become simply "expansion
-text". The dollar sign delimiters and leading RCS keyword name are
-removed.
-
-The RCS keyword processing only kicks in when all of these conditions
-hold:
-
-1. The field list is in bibliographic context (first non-comment
- construct in the document, after a document title if there is
- one).
-
-2. The field name is a recognized bibliographic field name.
-
-3. The sole contents of the field is an expanded RCS keyword, of the
- form "$Keyword: data $".
-
-
-Option Lists
-------------
-
-Doctree elements: option_list, option_list_item, option_group, option,
-option_string, option_argument, description.
-
-Option lists are two-column lists of command-line options and
-descriptions, documenting a program's options. For example::
-
- -a Output all.
- -b Output both (this description is
- quite long).
- -c arg Output just arg.
- --long Output all day long.
-
- -p This option has two paragraphs in the description.
- This is the first.
-
- This is the second. Blank lines may be omitted between
- options (as above) or left in (as here and below).
-
- --very-long-option A VMS-style option. Note the adjustment for
- the required two spaces.
-
- --an-even-longer-option
- The description can also start on the next line.
-
- -2, --two This option has two variants.
-
- -f FILE, --file=FILE These two options are synonyms; both have
- arguments.
-
- /V A VMS/DOS-style option.
-
-There are several types of options recognized by reStructuredText:
-
-- Short POSIX options consist of one dash and an option letter.
-- Long POSIX options consist of two dashes and an option word; some
- systems use a single dash.
-- Old GNU-style "plus" options consist of one plus and an option
- letter ("plus" options are deprecated now, their use discouraged).
-- DOS/VMS options consist of a slash and an option letter or word.
-
-Please note that both POSIX-style and DOS/VMS-style options may be
-used by DOS or Windows software. These and other variations are
-sometimes used mixed together. The names above have been chosen for
-convenience only.
-
-The syntax for short and long POSIX options is based on the syntax
-supported by Python's getopt.py_ module, which implements an option
-parser similar to the `GNU libc getopt_long()`_ function but with some
-restrictions. There are many variant option systems, and
-reStructuredText option lists do not support all of them.
-
-Although long POSIX and DOS/VMS option words may be allowed to be
-truncated by the operating system or the application when used on the
-command line, reStructuredText option lists do not show or support
-this with any special syntax. The complete option word should be
-given, supported by notes about truncation if and when applicable.
-
-Options may be followed by an argument placeholder, whose role and
-syntax should be explained in the description text. Either a space or
-an equals sign may be used as a delimiter between options and option
-argument placeholders.
-
-Multiple option "synonyms" may be listed, sharing a single
-description. They must be separated by comma-space.
-
-There must be at least two spaces between the option(s) and the
-description. The description may contain multiple body elements. The
-first line after the option marker determines the indentation of the
-description. As with other types of lists, blank lines are required
-before the first option list item and after the last, but are optional
-between option entries.
-
-Syntax diagram (simplified)::
-
- +----------------------------+-------------+
- | option [" " argument] " " | description |
- +-------+--------------------+ |
- | (body elements)+ |
- +----------------------------------+
-
-
-Literal Blocks
---------------
-
-Doctree element: literal_block.
-
-A paragraph consisting of two colons ("::") signifies that all
-following **indented** text blocks comprise a literal block. No
-markup processing is done within a literal block. It is left as-is,
-and is typically rendered in a monospaced typeface::
-
- This is a typical paragraph. A literal block follows.
-
- ::
-
- for a in [5,4,3,2,1]: # this is program code, shown as-is
- print a
- print "it's..."
- # a literal block continues until the indentation ends
-
- This text has returned to the indentation of the first paragraph,
- is outside of the literal block, and is therefore treated as an
- ordinary paragraph.
-
-The paragraph containing only "::" will be completely removed from the
-output; no empty paragraph will remain.
-
-As a convenience, the "::" is recognized at the end of any paragraph.
-If immediately preceded by whitespace, both colons will be removed
-from the output (this is the "partially minimized" form). When text
-immediately precedes the "::", *one* colon will be removed from the
-output, leaving only one colon visible (i.e., "::" will be replaced by
-":"; this is the "fully minimized" form).
-
-In other words, these are all equivalent (please pay attention to the
-colons after "Paragraph"):
-
-1. Expanded form::
-
- Paragraph:
-
- ::
-
- Literal block
-
-2. Partially minimized form::
-
- Paragraph: ::
-
- Literal block
-
-3. Fully minimized form::
-
- Paragraph::
-
- Literal block
-
-The minimum leading whitespace will be removed from each line of the
-literal block. Other than that, all whitespace (including line
-breaks) is preserved. Blank lines are required before and after a
-literal block, but these blank lines are not included as part of the
-literal block.
-
-Syntax diagram::
-
- +------------------------------+
- | paragraph |
- | (ends with "::") |
- +------------------------------+
- +---------------------------+
- | literal block |
- +---------------------------+
-
-
-Block Quotes
-------------
-
-Doctree element: block_quote, attribution.
-
-A text block that is indented relative to the preceding text, without
-markup indicating it to be a literal block, is a block quote. All
-markup processing (for body elements and inline markup) continues
-within the block quote::
-
- This is an ordinary paragraph, introducing a block quote.
-
- "It is my business to know things. That is my trade."
-
- -- Sherlock Holmes
-
-If the final block of a block quote begins with "--" (flush left
-within the block quote), it is interpreted as an attribution. If the
-attribution consists of multiple lines, the left edges of the second
-and subsequent lines must align.
-
-Blank lines are required before and after a block quote, but these
-blank lines are not included as part of the block quote.
-
-Syntax diagram::
-
- +------------------------------+
- | (current level of |
- | indentation) |
- +------------------------------+
- +---------------------------+
- | block quote |
- | (body elements)+ |
- | |
- | -- attribution text |
- | (optional) |
- +---------------------------+
-
-
-Doctest Blocks
---------------
-
-Doctree element: doctest_block.
-
-Doctest blocks are interactive Python sessions cut-and-pasted into
-docstrings. They are meant to illustrate usage by example, and
-provide an elegant and powerful testing environment via the `doctest
-module`_ in the Python standard library.
-
-Doctest blocks are text blocks which begin with ``">>> "``, the Python
-interactive interpreter main prompt, and end with a blank line.
-Doctest blocks are treated as a special case of literal blocks,
-without requiring the literal block syntax. If both are present, the
-literal block syntax takes priority over Doctest block syntax::
-
- This is an ordinary paragraph.
-
- >>> print 'this is a Doctest block'
- this is a Doctest block
-
- The following is a literal block::
-
- >>> This is not recognized as a doctest block by
- reStructuredText. It *will* be recognized by the doctest
- module, though!
-
-Indentation is not required for doctest blocks.
-
-
-Tables
-------
-
-Doctree elements: table, tgroup, colspec, thead, tbody, row, entry.
-
-ReStructuredText provides two syntaxes for delineating table cells:
-`Grid Tables`_ and `Simple Tables`_.
-
-As with other body elements, blank lines are required before and after
-tables. Tables' left edges should align with the left edge of
-preceding text blocks; if indented, the table is considered to be part
-of a block quote.
-
-Once isolated, each table cell is treated as a miniature document; the
-top and bottom cell boundaries act as delimiting blank lines. Each
-cell contains zero or more body elements. Cell contents may include
-left and/or right margins, which are removed before processing.
-
-
-Grid Tables
-```````````
-
-Grid tables provide a complete table representation via grid-like
-"ASCII art". Grid tables allow arbitrary cell contents (body
-elements), and both row and column spans. However, grid tables can be
-cumbersome to produce, especially for simple data sets. The `Emacs
-table mode`_ is a tool that allows easy editing of grid tables, in
-Emacs. See `Simple Tables`_ for a simpler (but limited)
-representation.
-
-Grid tables are described with a visual grid made up of the characters
-"-", "=", "|", and "+". The hyphen ("-") is used for horizontal lines
-(row separators). The equals sign ("=") may be used to separate
-optional header rows from the table body (not supported by the `Emacs
-table mode`_). The vertical bar ("|") is used for vertical lines
-(column separators). The plus sign ("+") is used for intersections of
-horizontal and vertical lines. Example::
-
- +------------------------+------------+----------+----------+
- | 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. |
- +------------------------+------------+---------------------+
-
-Some care must be taken with grid tables to avoid undesired
-interactions with cell text in rare cases. For example, the following
-table contains a cell in row 2 spanning from column 2 to column 4::
-
- +--------------+----------+-----------+-----------+
- | row 1, col 1 | column 2 | column 3 | column 4 |
- +--------------+----------+-----------+-----------+
- | row 2 | |
- +--------------+----------+-----------+-----------+
- | row 3 | | | |
- +--------------+----------+-----------+-----------+
-
-If a vertical bar is used in the text of that cell, it could have
-unintended effects if accidentally aligned with column boundaries::
-
- +--------------+----------+-----------+-----------+
- | row 1, col 1 | column 2 | column 3 | column 4 |
- +--------------+----------+-----------+-----------+
- | row 2 | Use the command ``ls | more``. |
- +--------------+----------+-----------+-----------+
- | row 3 | | | |
- +--------------+----------+-----------+-----------+
-
-Several solutions are possible. All that is needed is to break the
-continuity of the cell outline rectangle. One possibility is to shift
-the text by adding an extra space before::
-
- +--------------+----------+-----------+-----------+
- | row 1, col 1 | column 2 | column 3 | column 4 |
- +--------------+----------+-----------+-----------+
- | row 2 | Use the command ``ls | more``. |
- +--------------+----------+-----------+-----------+
- | row 3 | | | |
- +--------------+----------+-----------+-----------+
-
-Another possibility is to add an extra line to row 2::
-
- +--------------+----------+-----------+-----------+
- | row 1, col 1 | column 2 | column 3 | column 4 |
- +--------------+----------+-----------+-----------+
- | row 2 | Use the command ``ls | more``. |
- | | |
- +--------------+----------+-----------+-----------+
- | row 3 | | | |
- +--------------+----------+-----------+-----------+
-
-
-Simple Tables
-`````````````
-
-Simple tables provide a compact and easy to type but limited
-row-oriented table representation for simple data sets. Cell contents
-are typically single paragraphs, although arbitrary body elements may
-be represented in most cells. Simple tables allow multi-line rows (in
-all but the first column) and column spans, but not row spans. See
-`Grid Tables`_ above for a complete table representation.
-
-Simple tables are described with horizontal borders made up of "=" and
-"-" characters. The equals sign ("=") is used for top and bottom
-table borders, and to separate optional header rows from the table
-body. The hyphen ("-") is used to indicate column spans in a single
-row by underlining the joined columns.
-
-A simple table begins with a top border of equals signs with one or
-more spaces at each column boundary (two or more spaces recommended).
-Regardless of spans, the top border *must* fully describe all table
-columns. There must be at least two columns in the table (to
-differentiate it from section headers). The last of the optional
-header rows is underlined with '=', again with spaces at column
-boundaries. There may not be a blank line below the header row
-separator; it would be interpreted as the bottom border of the table.
-The bottom boundary of the table consists of '=' underlines, also with
-spaces at column boundaries. For example, here is a truth table, a
-three-column table with one header row and four body rows::
-
- ===== ===== =======
- A B A and B
- ===== ===== =======
- False False False
- True False False
- False True False
- True True True
- ===== ===== =======
-
-Underlines of '-' may be used to indicate column spans by "filling in"
-column margins to join adjacent columns. Column span underlines must
-be complete (they must cover all columns) and align with established
-column boundaries. Text lines containing column span underlines may
-not contain any other text. A column span underline applies only to
-one row immediately above it. For example, here is a table with a
-column span in the header::
-
- ===== ===== ======
- Inputs Output
- ------------ ------
- A B A or B
- ===== ===== ======
- False False False
- True False True
- False True True
- True True True
- ===== ===== ======
-
-Each line of text must contain spaces at column boundaries, except
-where cells have been joined by column spans. Each line of text
-starts a new row, except when there is a blank cell in the first
-column. In that case, that line of text is parsed as a continuation
-line. For this reason, cells in the first column of new rows (*not*
-continuation lines) *must* contain some text; blank cells would lead
-to a misinterpretation. An empty comment ("..") is sufficient and
-will be omitted from the processed output (see Comments_ below).
-Also, this mechanism limits cells in the first column to only one line
-of text. Use `grid tables`_ if this limitation is unacceptable.
-
-Underlines of '-' may also be used to visually separate rows, even if
-there are no column spans. This is especially useful in long tables,
-where rows are many lines long.
-
-Blank lines are permitted within simple tables. Their interpretation
-depends on the context. Blank lines *between* rows are ignored.
-Blank lines *within* multi-line rows may separate paragraphs or other
-body elements within cells.
-
-The rightmost column is unbounded; text may continue past the edge of
-the table (as indicated by the table borders). However, it is
-recommended that borders be made long enough to contain the entire
-text.
-
-The following example illustrates continuation lines (row 2 consists
-of two lines of text, and four lines for row 3), a blank line
-separating paragraphs (row 3, column 2), and text extending past the
-right edge of the table::
-
- ===== =====
- col 1 col 2
- ===== =====
- 1 Second column of row 1.
- 2 Second column of row 2.
- Second line of paragraph.
- 3 - Second column of row 3.
-
- - Second item in bullet
- list (row 3, column 2).
- ===== =====
-
-
-Explicit Markup Blocks
-----------------------
-
-An explicit markup block is a text block:
-
-- whose first line begins with ".." followed by whitespace (the
- "explicit markup start"),
-- whose second and subsequent lines (if any) are indented relative to
- the first, and
-- which ends before an unindented line.
-
-Explicit markup blocks are analogous to bullet list items, with ".."
-as the bullet. The text immediately after the explicit markup start
-determines the indentation of the block body. Blank lines are
-required between explicit markup blocks and other elements, but are
-optional between explicit markup blocks where unambiguous.
-
-The explicit markup syntax is used for footnotes, citations, hyperlink
-targets, directives, substitution definitions, and comments.
-
-
-Footnotes
-`````````
-
-Doctree elements: footnote, label.
-
-Each footnote consists of an explicit markup start (".. "), a left
-square bracket, the footnote label, a right square bracket, and
-whitespace, followed by indented body elements. A footnote label can
-be:
-
-- a whole decimal number consisting of one or more digits,
-
-- a single "#" (denoting `auto-numbered footnotes`_),
-
-- a "#" followed by a simple reference name (an `autonumber label`_),
- or
-
-- a single "*" (denoting `auto-symbol footnotes`_).
-
-If the first body element within a footnote is a simple paragraph, it
-may begin on the same line as the footnote label. Other elements must
-begin on a new line, consistently indented (by at least 3 spaces) and
-left-aligned.
-
-Footnotes may occur anywhere in the document, not only at the end.
-Where or how they appear in the processed output depends on the
-processing system.
-
-Here is a manually numbered footnote::
-
- .. [1] Body elements go here.
-
-Each footnote automatically generates a hyperlink target pointing to
-itself. The text of the hyperlink target name is the same as that of
-the footnote label. `Auto-numbered footnotes`_ generate a number as
-their footnote label and reference name. See `Implicit Hyperlink
-Targets`_ for a complete description of the mechanism.
-
-Syntax diagram::
-
- +-------+-------------------------+
- | ".. " | "[" label "]" footnote |
- +-------+ |
- | (body elements)+ |
- +-------------------------+
-
-
-Auto-Numbered Footnotes
-.......................
-
-A number sign ("#") may be used as the first character of a footnote
-label to request automatic numbering of the footnote or footnote
-reference.
-
-The first footnote to request automatic numbering is assigned the
-label "1", the second is assigned the label "2", and so on (assuming
-there are no manually numbered footnotes present; see `Mixed Manual
-and Auto-Numbered Footnotes`_ below). A footnote which has
-automatically received a label "1" generates an implicit hyperlink
-target with name "1", just as if the label was explicitly specified.
-
-.. _autonumber label: `autonumber labels`_
-
-A footnote may specify a label explicitly while at the same time
-requesting automatic numbering: ``[#label]``. These labels are called
-_`autonumber labels`. Autonumber labels do two things:
-
-- On the footnote itself, they generate a hyperlink target whose name
- is the autonumber label (doesn't include the "#").
-
-- They allow an automatically numbered footnote to be referred to more
- than once, as a footnote reference or hyperlink reference. For
- example::
-
- If [#note]_ is the first footnote reference, it will show up as
- "[1]". We can refer to it again as [#note]_ and again see
- "[1]". We can also refer to it as note_ (an ordinary internal
- hyperlink reference).
-
- .. [#note] This is the footnote labeled "note".
-
-The numbering is determined by the order of the footnotes, not by the
-order of the references. For footnote references without autonumber
-labels (``[#]_``), the footnotes and footnote references must be in
-the same relative order but need not alternate in lock-step. For
-example::
-
- [#]_ is a reference to footnote 1, and [#]_ is a reference to
- footnote 2.
-
- .. [#] This is footnote 1.
- .. [#] This is footnote 2.
- .. [#] This is footnote 3.
-
- [#]_ is a reference to footnote 3.
-
-Special care must be taken if footnotes themselves contain
-auto-numbered footnote references, or if multiple references are made
-in close proximity. Footnotes and references are noted in the order
-they are encountered in the document, which is not necessarily the
-same as the order in which a person would read them.
-
-
-Auto-Symbol Footnotes
-.....................
-
-An asterisk ("*") may be used for footnote labels to request automatic
-symbol generation for footnotes and footnote references. The asterisk
-may be the only character in the label. For example::
-
- Here is a symbolic footnote reference: [*]_.
-
- .. [*] This is the footnote.
-
-A transform will insert symbols as labels into corresponding footnotes
-and footnote references. The number of references must be equal to
-the number of footnotes. One symbol footnote cannot have multiple
-references.
-
-The standard Docutils system uses the following symbols for footnote
-marks [#]_:
-
-- asterisk/star ("*")
-- dagger (HTML character entity "&dagger;")
-- double dagger ("&Dagger;")
-- section mark ("&sect;")
-- pilcrow or paragraph mark ("&para;")
-- number sign ("#")
-- spade suit ("&spades;")
-- heart suit ("&hearts;")
-- diamond suit ("&diams;")
-- club suit ("&clubs;")
-
-.. [#] This list was inspired by the list of symbols for "Note
- Reference Marks" in The Chicago Manual of Style, 14th edition,
- section 12.51. "Parallels" ("||") were given in CMoS instead of
- the pilcrow. The last four symbols (the card suits) were added
- arbitrarily.
-
-If more than ten symbols are required, the same sequence will be
-reused, doubled and then tripled, and so on ("**" etc.).
-
-
-Mixed Manual and Auto-Numbered Footnotes
-........................................
-
-Manual and automatic footnote numbering may both be used within a
-single document, although the results may not be expected. Manual
-numbering takes priority. Only unused footnote numbers are assigned
-to auto-numbered footnotes. The following example should be
-illustrative::
-
- [2]_ will be "2" (manually numbered),
- [#]_ will be "3" (anonymous auto-numbered), and
- [#label]_ will be "1" (labeled auto-numbered).
-
- .. [2] This footnote is labeled manually, so its number is fixed.
-
- .. [#label] This autonumber-labeled footnote will be labeled "1".
- It is the first auto-numbered footnote and no other footnote
- with label "1" exists. The order of the footnotes is used to
- determine numbering, not the order of the footnote references.
-
- .. [#] This footnote will be labeled "3". It is the second
- auto-numbered footnote, but footnote label "2" is already used.
-
-
-Citations
-`````````
-
-Citations are identical to footnotes except that they use only
-non-numeric labels such as ``[note]`` or ``[GVR2001]``. Citation
-labels are simple `reference names`_ (case-insensitive single words
-consisting of alphanumerics plus internal hyphens, underscores, and
-periods; no whitespace). Citations may be rendered separately and
-differently from footnotes. For example::
-
- Here is a citation reference: [CIT2002]_.
-
- .. [CIT2002] This is the citation. It's just like a footnote,
- except the label is textual.
-
-
-.. _hyperlinks:
-
-Hyperlink Targets
-`````````````````
-
-Doctree element: target.
-
-These are also called _`explicit hyperlink targets`, to differentiate
-them from `implicit hyperlink targets`_ defined below.
-
-Hyperlink targets identify a location within or outside of a document,
-which may be linked to by `hyperlink references`_.
-
-Hyperlink targets may be named or anonymous. Named hyperlink targets
-consist of an explicit markup start (".. "), an underscore, the
-reference name (no trailing underscore), a colon, whitespace, and a
-link block::
-
- .. _hyperlink-name: link-block
-
-Reference names are whitespace-neutral and case-insensitive. See
-`Reference Names`_ for details and examples.
-
-Anonymous hyperlink targets consist of an explicit markup start
-(".. "), two underscores, a colon, whitespace, and a link block; there
-is no reference name::
-
- .. __: anonymous-hyperlink-target-link-block
-
-An alternate syntax for anonymous hyperlinks consists of two
-underscores, a space, and a link block::
-
- __ anonymous-hyperlink-target-link-block
-
-See `Anonymous Hyperlinks`_ below.
-
-There are three types of hyperlink targets: internal, external, and
-indirect.
-
-1. _`Internal hyperlink targets` have empty link blocks. They provide
- an end point allowing a hyperlink to connect one place to another
- within a document. An internal hyperlink target points to the
- element following the target. For example::
-
- Clicking on this internal hyperlink will take us to the target_
- below.
-
- .. _target:
-
- The hyperlink target above points to this paragraph.
-
- Internal hyperlink targets may be "chained". Multiple adjacent
- internal hyperlink targets all point to the same element::
-
- .. _target1:
- .. _target2:
-
- The targets "target1" and "target2" are synonyms; they both
- point to this paragraph.
-
- If the element "pointed to" is an external hyperlink target (with a
- URI in its link block; see #2 below) the URI from the external
- hyperlink target is propagated to the internal hyperlink targets;
- they will all "point to" the same URI. There is no need to
- duplicate a URI. For example, all three of the following hyperlink
- targets refer to the same URI::
-
- .. _Python DOC-SIG mailing list archive:
- .. _archive:
- .. _Doc-SIG: http://mail.python.org/pipermail/doc-sig/
-
- An inline form of internal hyperlink target is available; see
- `Inline Internal Targets`_.
-
-2. _`External hyperlink targets` have an absolute or relative URI or
- email address in their link blocks. For example, take the
- following input::
-
- See the Python_ home page for info.
-
- `Write to me`_ with your questions.
-
- .. _Python: http://www.python.org
- .. _Write to me: jdoe@example.com
-
- After processing into HTML, the hyperlinks might be expressed as::
-
- See the <a href="http://www.python.org">Python</a> home page
- for info.
-
- <a href="mailto:jdoe@example.com">Write to me</a> with your
- questions.
-
- An external hyperlink's URI may begin on the same line as the
- explicit markup start and target name, or it may begin in an
- indented text block immediately following, with no intervening
- blank lines. If there are multiple lines in the link block, they
- are stripped of leading and trailing whitespace and concatenated.
- The following external hyperlink targets are equivalent::
-
- .. _one-liner: http://docutils.sourceforge.net/rst.html
-
- .. _starts-on-this-line: http://
- docutils.sourceforge.net/rst.html
-
- .. _entirely-below:
- http://docutils.
- sourceforge.net/rst.html
-
- If an external hyperlink target's URI contains an underscore as its
- last character, it must be escaped to avoid being mistaken for an
- indirect hyperlink target::
-
- This link_ refers to a file called ``underscore_``.
-
- .. _link: underscore\_
-
- It is possible (although not generally recommended) to include URIs
- directly within hyperlink references. See `Embedded URIs`_ below.
-
-3. _`Indirect hyperlink targets` have a hyperlink reference in their
- link blocks. In the following example, target "one" indirectly
- references whatever target "two" references, and target "two"
- references target "three", an internal hyperlink target. In
- effect, all three reference the same thing::
-
- .. _one: two_
- .. _two: three_
- .. _three:
-
- Just as with `hyperlink references`_ anywhere else in a document,
- if a phrase-reference is used in the link block it must be enclosed
- in backquotes. As with `external hyperlink targets`_, the link
- block of an indirect hyperlink target may begin on the same line as
- the explicit markup start or the next line. It may also be split
- over multiple lines, in which case the lines are joined with
- whitespace before being normalized.
-
- For example, the following indirect hyperlink targets are
- equivalent::
-
- .. _one-liner: `A HYPERLINK`_
- .. _entirely-below:
- `a hyperlink`_
- .. _split: `A
- Hyperlink`_
-
-If a reference name contains a colon followed by whitespace, either:
-
-- the phrase must be enclosed in backquotes::
-
- .. _`FAQTS: Computers: Programming: Languages: Python`:
- http://python.faqts.com/
-
-- or the colon(s) must be backslash-escaped in the link target::
-
- .. _Chapter One\: "Tadpole Days":
-
- It's not easy being green...
-
-See `Implicit Hyperlink Targets`_ below for the resolution of
-duplicate reference names.
-
-Syntax diagram::
-
- +-------+----------------------+
- | ".. " | "_" name ":" link |
- +-------+ block |
- | |
- +----------------------+
-
-
-Anonymous Hyperlinks
-....................
-
-The `World Wide Web Consortium`_ recommends in its `HTML Techniques
-for Web Content Accessibility Guidelines`_ that authors should
-"clearly identify the target of each link." Hyperlink references
-should be as verbose as possible, but duplicating a verbose hyperlink
-name in the target is onerous and error-prone. Anonymous hyperlinks
-are designed to allow convenient verbose hyperlink references, and are
-analogous to `Auto-Numbered Footnotes`_. They are particularly useful
-in short or one-off documents. However, this feature is easily abused
-and can result in unreadable plaintext and/or unmaintainable
-documents. Caution is advised.
-
-Anonymous `hyperlink references`_ are specified with two underscores
-instead of one::
-
- See `the web site of my favorite programming language`__.
-
-Anonymous targets begin with ".. __:"; no reference name is required
-or allowed::
-
- .. __: http://www.python.org
-
-As a convenient alternative, anonymous targets may begin with "__"
-only::
-
- __ http://www.python.org
-
-The reference name of the reference is not used to match the reference
-to its target. Instead, the order of anonymous hyperlink references
-and targets within the document is significant: the first anonymous
-reference will link to the first anonymous target. The number of
-anonymous hyperlink references in a document must match the number of
-anonymous targets. For readability, it is recommended that targets be
-kept close to references. Take care when editing text containing
-anonymous references; adding, removing, and rearranging references
-require attention to the order of corresponding targets.
-
-
-Directives
-``````````
-
-Doctree elements: depend on the directive.
-
-Directives are an extension mechanism for reStructuredText, a way of
-adding support for new constructs without adding new syntax. All
-standard directives (those implemented and registered in the reference
-reStructuredText parser) are described in the `reStructuredText
-Directives`_ document, and are always available. Any other directives
-are domain-specific, and may require special action to make them
-available when processing the document.
-
-For example, here's how an image may be placed::
-
- .. image:: mylogo.jpeg
-
-A figure (a graphic with a caption) may placed like this::
-
- .. figure:: larch.png
-
- The larch.
-
-An admonition (note, caution, etc.) contains other body elements::
-
- .. note:: This is a paragraph
-
- - Here is a bullet list.
-
-Directives are indicated by an explicit markup start (".. ") followed
-by the directive type, two colons, and whitespace (together called the
-"directive marker"). Directive types are case-insensitive single
-words (alphanumerics plus internal hyphens, underscores, and periods;
-no whitespace). Two colons are used after the directive type for
-these reasons:
-
-- To avoid clashes with common comment text like::
-
- .. Danger: modify at your own risk!
-
-- If an implementation of reStructuredText does not recognize a
- directive (i.e., the directive-handler is not installed), the entire
- directive block (including the directive itself) will be treated as
- a literal block, and a level-3 (error) system message generated.
- Thus "::" is a natural choice.
-
-The directive block is consists of any text on the first line of the
-directive after the directive marker, and any subsequent indented
-text. The interpretation of the directive block is up to the
-directive code. There are three logical parts to the directive block:
-
-1. Directive arguments.
-2. Directive options.
-3. Directive content.
-
-Individual directives can employ any combination of these parts.
-Directive arguments can be filesystem paths, URLs, title text, etc.
-Directive options are indicated using `field lists`_; the field names
-and contents are directive-specific. Arguments and options must form
-a contiguous block beginning on the first or second line of the
-directive; a blank line indicates the beginning of the directive
-content block. If either arguments and/or options are employed by the
-directive, a blank line must separate them from the directive content.
-The "figure" directive employs all three parts::
-
- .. figure:: larch.png
- :scale: 50
-
- The larch.
-
-Simple directives may not require any content. If a directive that
-does not employ a content block is followed by indented text anyway,
-it is an error. If a block quote should immediately follow a
-directive, use an empty comment in-between (see Comments_ below).
-
-Actions taken in response to directives and the interpretation of text
-in the directive content block or subsequent text block(s) are
-directive-dependent. See `reStructuredText Directives`_ for details.
-
-Directives are meant for the arbitrary processing of their contents,
-which can be transformed into something possibly unrelated to the
-original text. It may also be possible for directives to be used as
-pragmas, to modify the behavior of the parser, such as to experiment
-with alternate syntax. There is no parser support for this
-functionality at present; if a reasonable need for pragma directives
-is found, they may be supported.
-
-Directives do not generate "directive" elements; they are a *parser
-construct* only, and have no intrinsic meaning outside of
-reStructuredText. Instead, the parser will transform recognized
-directives into (possibly specialized) document elements. Unknown
-directives will trigger level-3 (error) system messages.
-
-Syntax diagram::
-
- +-------+-------------------------------+
- | ".. " | directive type "::" directive |
- +-------+ block |
- | |
- +-------------------------------+
-
-
-Substitution Definitions
-````````````````````````
-
-Doctree element: substitution_definition.
-
-Substitution definitions are indicated by an explicit markup start
-(".. ") followed by a vertical bar, the substitution text, another
-vertical bar, whitespace, and the definition block. Substitution text
-may not begin or end with whitespace. A substitution definition block
-contains an embedded inline-compatible directive (without the leading
-".. "), such as an image. For example::
-
- The |biohazard| symbol must be used on containers used to
- dispose of medical waste.
-
- .. |biohazard| image:: biohazard.png
-
-It is an error for a substitution definition block to directly or
-indirectly contain a circular substitution reference.
-
-`Substitution references`_ are replaced in-line by the processed
-contents of the corresponding definition (linked by matching
-substitution text). Matches are case-sensitive but forgiving; if no
-exact match is found, a case-insensitive comparison is attempted.
-
-Substitution definitions allow the power and flexibility of
-block-level directives_ to be shared by inline text. They are a way
-to include arbitrarily complex inline structures within text, while
-keeping the details out of the flow of text. They are the equivalent
-of SGML/XML's named entities or programming language macros.
-
-Without the substitution mechanism, every time someone wants an
-application-specific new inline structure, they would have to petition
-for a syntax change. In combination with existing directive syntax,
-any inline structure can be coded without new syntax (except possibly
-a new directive).
-
-Syntax diagram::
-
- +-------+-----------------------------------------------------+
- | ".. " | "|" substitution text "| " directive type "::" data |
- +-------+ directive block |
- | |
- +-----------------------------------------------------+
-
-Following are some use cases for the substitution mechanism. Please
-note that most of the embedded directives shown are examples only and
-have not been implemented.
-
-Objects
- Substitution references may be used to associate ambiguous text
- with a unique object identifier.
-
- For example, many sites may wish to implement an inline "user"
- directive::
-
- |Michael| and |Jon| are our widget-wranglers.
-
- .. |Michael| user:: mjones
- .. |Jon| user:: jhl
-
- Depending on the needs of the site, this may be used to index the
- document for later searching, to hyperlink the inline text in
- various ways (mailto, homepage, mouseover Javascript with profile
- and contact information, etc.), or to customize presentation of
- the text (include username in the inline text, include an icon
- image with a link next to the text, make the text bold or a
- different color, etc.).
-
- The same approach can be used in documents which frequently refer
- to a particular type of objects with unique identifiers but
- ambiguous common names. Movies, albums, books, photos, court
- cases, and laws are possible. For example::
-
- |The Transparent Society| offers a fascinating alternate view
- on privacy issues.
-
- .. |The Transparent Society| book:: isbn=0738201448
-
- Classes or functions, in contexts where the module or class names
- are unclear and/or interpreted text cannot be used, are another
- possibility::
-
- 4XSLT has the convenience method |runString|, so you don't
- have to mess with DOM objects if all you want is the
- transformed output.
-
- .. |runString| function:: module=xml.xslt class=Processor
-
-Images
- Images are a common use for substitution references::
-
- West led the |H| 3, covered by dummy's |H| Q, East's |H| K,
- and trumped in hand with the |S| 2.
-
- .. |H| image:: /images/heart.png
- :height: 11
- :width: 11
- .. |S| image:: /images/spade.png
- :height: 11
- :width: 11
-
- * |Red light| means stop.
- * |Green light| means go.
- * |Yellow light| means go really fast.
-
- .. |Red light| image:: red_light.png
- .. |Green light| image:: green_light.png
- .. |Yellow light| image:: yellow_light.png
-
- |-><-| is the official symbol of POEE_.
-
- .. |-><-| image:: discord.png
- .. _POEE: http://www.poee.org/
-
- The "image" directive has been implemented.
-
-Styles [#]_
- Substitution references may be used to associate inline text with
- an externally defined presentation style::
-
- Even |the text in Texas| is big.
-
- .. |the text in Texas| style:: big
-
- The style name may be meaningful in the context of some particular
- output format (CSS class name for HTML output, LaTeX style name
- for LaTeX, etc), or may be ignored for other output formats (such
- as plaintext).
-
- .. @@@ This needs to be rethought & rewritten or removed:
-
- Interpreted text is unsuitable for this purpose because the set
- of style names cannot be predefined - it is the domain of the
- content author, not the author of the parser and output
- formatter - and there is no way to associate a style name
- argument with an interpreted text style role. Also, it may be
- desirable to use the same mechanism for styling blocks::
-
- .. style:: motto
- At Bob's Underwear Shop, we'll do anything to get in
- your pants.
-
- .. style:: disclaimer
- All rights reversed. Reprint what you like.
-
- .. [#] There may be sufficient need for a "style" mechanism to
- warrant simpler syntax such as an extension to the interpreted
- text role syntax. The substitution mechanism is cumbersome for
- simple text styling.
-
-Templates
- Inline markup may be used for later processing by a template
- engine. For example, a Zope_ author might write::
-
- Welcome back, |name|!
-
- .. |name| tal:: replace user/getUserName
-
- After processing, this ZPT output would result::
-
- Welcome back,
- <span tal:replace="user/getUserName">name</span>!
-
- Zope would then transform this to something like "Welcome back,
- David!" during a session with an actual user.
-
-Replacement text
- The substitution mechanism may be used for simple macro
- substitution. This may be appropriate when the replacement text
- is repeated many times throughout one or more documents,
- especially if it may need to change later. A short example is
- unavoidably contrived::
-
- |RST| is a little annoying to type over and over, especially
- when writing about |RST| itself, and spelling out the
- bicapitalized word |RST| every time isn't really necessary for
- |RST| source readability.
-
- .. |RST| replace:: reStructuredText_
- .. _reStructuredText: http://docutils.sourceforge.net/rst.html
-
- Substitution is also appropriate when the replacement text cannot
- be represented using other inline constructs, or is obtrusively
- long::
-
- But still, that's nothing compared to a name like
- |j2ee-cas|__.
-
- .. |j2ee-cas| replace::
- the Java `TM`:super: 2 Platform, Enterprise Edition Client
- Access Services
- __ http://developer.java.sun.com/developer/earlyAccess/
- j2eecas/
-
-
-Comments
-````````
-
-Doctree element: comment.
-
-Arbitrary indented text may follow the explicit markup start and will
-be processed as a comment element. No further processing is done on
-the comment block text; a comment contains a single "text blob".
-Depending on the output formatter, comments may be removed from the
-processed output. The only restriction on comments is that they not
-use the same syntax as any of the other explicit markup constructs:
-substitution definitions, directives, footnotes, citations, or
-hyperlink targets. To ensure that none of the other explicit markup
-constructs is recognized, leave the ".." on a line by itself::
-
- .. This is a comment
- ..
- _so: is this!
- ..
- [and] this!
- ..
- this:: too!
- ..
- |even| this:: !
-
-A explicit markup start followed by a blank line and nothing else
-(apart from whitespace) is an "empty comment". It serves to terminate
-a preceding construct, and does **not** consume any indented text
-following. To have a block quote follow a list or any indented
-construct, insert an unindented empty comment in-between.
-
-Syntax diagram::
-
- +-------+----------------------+
- | ".. " | comment |
- +-------+ block |
- | |
- +----------------------+
-
-
-Implicit Hyperlink Targets
-==========================
-
-Implicit hyperlink targets are generated by section titles, footnotes,
-and citations, and may also be generated by extension constructs.
-Implicit hyperlink targets otherwise behave identically to explicit
-`hyperlink targets`_.
-
-Problems of ambiguity due to conflicting duplicate implicit and
-explicit reference names are avoided by following this procedure:
-
-1. `Explicit hyperlink targets`_ override any implicit targets having
- the same reference name. The implicit hyperlink targets are
- removed, and level-1 (info) system messages are inserted.
-
-2. Duplicate implicit hyperlink targets are removed, and level-1
- (info) system messages inserted. For example, if two or more
- sections have the same title (such as "Introduction" subsections of
- a rigidly-structured document), there will be duplicate implicit
- hyperlink targets.
-
-3. Duplicate explicit hyperlink targets are removed, and level-2
- (warning) system messages are inserted. Exception: duplicate
- `external hyperlink targets`_ (identical hyperlink names and
- referenced URIs) do not conflict, and are not removed.
-
-System messages are inserted where target links have been removed.
-See "Error Handling" in `PEP 258`_.
-
-The parser must return a set of *unique* hyperlink targets. The
-calling software (such as the Docutils_) can warn of unresolvable
-links, giving reasons for the messages.
-
-
-Inline Markup
-=============
-
-In reStructuredText, inline markup applies to words or phrases within
-a text block. The same whitespace and punctuation that serves to
-delimit words in written text is used to delimit the inline markup
-syntax constructs. The text within inline markup may not begin or end
-with whitespace. Arbitrary `character-level inline markup`_ is
-supported although not encouraged. Inline markup cannot be nested.
-
-There are nine inline markup constructs. Five of the constructs use
-identical start-strings and end-strings to indicate the markup:
-
-- emphasis_: "*"
-- `strong emphasis`_: "**"
-- `interpreted text`_: "`"
-- `inline literals`_: "``"
-- `substitution references`_: "|"
-
-Three constructs use different start-strings and end-strings:
-
-- `inline internal targets`_: "_`" and "`"
-- `footnote references`_: "[" and "]_"
-- `hyperlink references`_: "`" and "\`_" (phrases), or just a
- trailing "_" (single words)
-
-`Standalone hyperlinks`_ are recognized implicitly, and use no extra
-markup.
-
-The inline markup start-string and end-string recognition rules are as
-follows. If any of the conditions are not met, the start-string or
-end-string will not be recognized or processed.
-
-1. Inline markup start-strings must start a text block or be
- immediately preceded by whitespace or one of::
-
- ' " ( [ { < - / :
-
-2. Inline markup start-strings must be immediately followed by
- non-whitespace.
-
-3. Inline markup end-strings must be immediately preceded by
- non-whitespace.
-
-4. Inline markup end-strings must end a text block or be immediately
- followed by whitespace or one of::
-
- ' " ) ] } > - / : . , ; ! ? \
-
-5. If an inline markup start-string is immediately preceded by a
- single or double quote, "(", "[", "{", or "<", it must not be
- immediately followed by the corresponding single or double quote,
- ")", "]", "}", or ">".
-
-6. An inline markup end-string must be separated by at least one
- character from the start-string.
-
-7. An unescaped backslash preceding a start-string or end-string will
- disable markup recognition, except for the end-string of `inline
- literals`_. See `Escaping Mechanism`_ above for details.
-
-For example, none of the following are recognized as containing inline
-markup start-strings:
-
-- asterisks: * "*" '*' (*) (* [*] {*} 1*x BOM32_*
-- double asterisks: ** a**b O(N**2) etc.
-- backquotes: ` `` etc.
-- underscores: _ __ __init__ __init__() etc.
-- vertical bars: | || etc.
-
-It may be desirable to use inline literals for some of these anyhow,
-especially if they represent code snippets. It's a judgment call.
-
-These cases *do* require either literal-quoting or escaping to avoid
-misinterpretation::
-
- *4, class_, *args, **kwargs, `TeX-quoted', *ML, *.txt
-
-The inline markup recognition rules were devised intentionally to
-allow 90% of non-markup uses of "*", "`", "_", and "|" *without*
-resorting to backslashes. For 9 of the remaining 10%, use inline
-literals or literal blocks::
-
- "``\*``" -> "\*" (possibly in another font or quoted)
-
-Only those who understand the escaping and inline markup rules should
-attempt the remaining 1%. ;-)
-
-Inline markup delimiter characters are used for multiple constructs,
-so to avoid ambiguity there must be a specific recognition order for
-each character. The inline markup recognition order is as follows:
-
-- Asterisks: `Strong emphasis`_ ("**") is recognized before emphasis_
- ("*").
-
-- Backquotes: `Inline literals`_ ("``"), `inline internal targets`_
- (leading "_`", trailing "`"), are mutually independent, and are
- recognized before phrase `hyperlink references`_ (leading "`",
- trailing "\`_") and `interpreted text`_ ("`").
-
-- Trailing underscores: Footnote references ("[" + label + "]_") and
- simple `hyperlink references`_ (name + trailing "_") are mutually
- independent.
-
-- Vertical bars: `Substitution references`_ ("|") are independently
- recognized.
-
-- `Standalone hyperlinks`_ are the last to be recognized.
-
-
-Character-Level Inline Markup
------------------------------
-
-It is possible to mark up individual characters within a word with
-backslash escapes (see `Escaping Mechanism`_ above). Backslash
-escapes can be used to allow arbitrary text to immediately follow
-inline markup::
-
- Python ``list``\s use square bracket syntax.
-
-The backslash will disappear from the processed document. The word
-"list" will appear as inline literal text, and the letter "s" will
-immediately follow it as normal text, with no space in-between.
-
-Arbitrary text may immediately precede inline markup using
-backslash-escaped whitespace::
-
- Possible in *re*\ ``Structured``\ *Text*, though not encouraged.
-
-The backslashes and spaces separating "re", "Structured", and "Text"
-above will disappear from the processed document.
-
-.. CAUTION::
-
- The use of backslash-escapes for character-level inline markup is
- not encouraged. Such use is ugly and detrimental to the
- unprocessed document's readability. Please use this feature
- sparingly and only where absolutely necessary.
-
-
-Emphasis
---------
-
-Doctree element: emphasis.
-
-Start-string = end-string = "*".
-
-Text enclosed by single asterisk characters is emphasized::
-
- This is *emphasized text*.
-
-Emphasized text is typically displayed in italics.
-
-
-Strong Emphasis
----------------
-
-Doctree element: strong.
-
-Start-string = end-string = "**".
-
-Text enclosed by double-asterisks is emphasized strongly::
-
- This is **strong text**.
-
-Strongly emphasized text is typically displayed in boldface.
-
-
-Interpreted Text
-----------------
-
-Doctree element: depends on the explicit or implicit role and
-processing.
-
-Start-string = end-string = "`".
-
-Interpreted text is text that is meant to be related, indexed, linked,
-summarized, or otherwise processed, but the text itself is typically
-left alone. Interpreted text is enclosed by single backquote
-characters::
-
- This is `interpreted text`.
-
-The "role" of the interpreted text determines how the text is
-interpreted. The role may be inferred implicitly (as above; the
-"default role" is used) or indicated explicitly, using a role marker.
-A role marker consists of a colon, the role name, and another colon.
-A role name is a single word consisting of alphanumerics plus internal
-hyphens, underscores, and periods; no whitespace or other characters
-are allowed. A role marker is either a prefix or a suffix to the
-interpreted text, whichever reads better; it's up to the author::
-
- :role:`interpreted text`
-
- `interpreted text`:role:
-
-Interpreted text allows extensions to the available inline descriptive
-markup constructs. To emphasis_, `strong emphasis`_, `inline
-literals`_, and `hyperlink references`_, we can add "title reference",
-"index entry", "acronym", "class", "red", "blinking" or anything else
-we want. Only pre-determined roles are recognized; unknown roles will
-generate errors. A core set of standard roles is implemented in the
-reference parser; see `reStructuredText Interpreted Text Roles`_ for
-individual descriptions. In addition, applications may support
-specialized roles.
-
-
-Inline Literals
----------------
-
-Doctree element: literal.
-
-Start-string = end-string = "``".
-
-Text enclosed by double-backquotes is treated as inline literals::
-
- This text is an example of ``inline literals``.
-
-Inline literals may contain any characters except two adjacent
-backquotes in an end-string context (according to the recognition
-rules above). No markup interpretation (including backslash-escape
-interpretation) is done within inline literals.
-
-Line breaks are *not* preserved in inline literals. Although a
-reStructuredText parser will preserve runs of spaces in its output,
-the final representation of the processed document is dependent on the
-output formatter, thus the preservation of whitespace cannot be
-guaranteed. If the preservation of line breaks and/or other
-whitespace is important, `literal blocks`_ should be used.
-
-Inline literals are useful for short code snippets. For example::
-
- The regular expression ``[+-]?(\d+(\.\d*)?|\.\d+)`` matches
- floating-point numbers (without exponents).
-
-
-Hyperlink References
---------------------
-
-Doctree element: reference.
-
-- Named hyperlink references:
-
- - Start-string = "" (empty string), end-string = "_".
- - Start-string = "`", end-string = "\`_". (Phrase references.)
-
-- Anonymous hyperlink references:
-
- - Start-string = "" (empty string), end-string = "__".
- - Start-string = "`", end-string = "\`__". (Phrase references.)
-
-Hyperlink references are indicated by a trailing underscore, "_",
-except for `standalone hyperlinks`_ which are recognized
-independently. The underscore can be thought of as a right-pointing
-arrow. The trailing underscores point away from hyperlink references,
-and the leading underscores point toward `hyperlink targets`_.
-
-Hyperlinks consist of two parts. In the text body, there is a source
-link, a reference name with a trailing underscore (or two underscores
-for `anonymous hyperlinks`_)::
-
- See the Python_ home page for info.
-
-A target link with a matching reference name must exist somewhere else
-in the document. See `Hyperlink Targets`_ for a full description).
-
-`Anonymous hyperlinks`_ (which see) do not use reference names to
-match references to targets, but otherwise behave similarly to named
-hyperlinks.
-
-
-Embedded URIs
-`````````````
-
-A hyperlink reference may directly embed a target URI inline, within
-angle brackets ("<...>") as follows::
-
- See the `Python home page <http://www.python.org>`_ for info.
-
-This is exactly equivalent to::
-
- See the `Python home page`_ for info.
-
- .. _Python home page: http://www.python.org
-
-The bracketed URI must be preceded by whitespace and be the last text
-before the end string. With a single trailing underscore, the
-reference is named and the same target URI may be referred to again.
-
-With two trailing underscores, the reference and target are both
-anonymous, and the target cannot be referred to again. These are
-"one-off" hyperlinks. For example::
-
- `RFC 2396 <http://www.rfc-editor.org/rfc/rfc2396.txt>`__ and `RFC
- 2732 <http://www.rfc-editor.org/rfc/rfc2732.txt>`__ together
- define the syntax of URIs.
-
-Equivalent to::
-
- `RFC 2396`__ and `RFC 2732`__ together define the syntax of URIs.
-
- __ http://www.rfc-editor.org/rfc/rfc2396.txt
- __ http://www.rfc-editor.org/rfc/rfc2732.txt
-
-If reference text happens to end with angle-bracketed text that is
-*not* a URI, the open-angle-bracket needs to be backslash-escaped.
-For example, here is a reference to a title describing a tag::
-
- See `HTML Element: \<a>`_ below.
-
-.. CAUTION::
-
- This construct offers easy authoring and maintenance of hyperlinks
- at the expense of general readability. Inline URIs, especially
- long ones, inevitably interrupt the natural flow of text. For
- documents meant to be read in source form, the use of independent
- block-level `hyperlink targets`_ is **strongly recommended**. The
- embedded URI construct is most suited to documents intended *only*
- to be read in processed form.
-
-
-Inline Internal Targets
-------------------------
-
-Doctree element: target.
-
-Start-string = "_`", end-string = "`".
-
-Inline internal targets are the equivalent of explicit `internal
-hyperlink targets`_, but may appear within running text. The syntax
-begins with an underscore and a backquote, is followed by a hyperlink
-name or phrase, and ends with a backquote. Inline internal targets
-may not be anonymous.
-
-For example, the following paragraph contains a hyperlink target named
-"Norwegian Blue"::
-
- Oh yes, the _`Norwegian Blue`. What's, um, what's wrong with it?
-
-See `Implicit Hyperlink Targets`_ for the resolution of duplicate
-reference names.
-
-
-Footnote References
--------------------
-
-Doctree element: footnote_reference.
-
-Start-string = "[", end-string = "]_".
-
-Each footnote reference consists of a square-bracketed label followed
-by a trailing underscore. Footnote labels are one of:
-
-- one or more digits (i.e., a number),
-
-- a single "#" (denoting `auto-numbered footnotes`_),
-
-- a "#" followed by a simple reference name (an `autonumber label`_),
- or
-
-- a single "*" (denoting `auto-symbol footnotes`_).
-
-For example::
-
- Please RTFM [1]_.
-
- .. [1] Read The Fine Manual
-
-
-Citation References
--------------------
-
-Doctree element: citation_reference.
-
-Start-string = "[", end-string = "]_".
-
-Each citation reference consists of a square-bracketed label followed
-by a trailing underscore. Citation labels are simple `reference
-names`_ (case-insensitive single words, consisting of alphanumerics
-plus internal hyphens, underscores, and periods; no whitespace).
-
-For example::
-
- Here is a citation reference: [CIT2002]_.
-
-See Citations_ for the citation itself.
-
-
-Substitution References
------------------------
-
-Doctree element: substitution_reference, reference.
-
-Start-string = "|", end-string = "|" (optionally followed by "_" or
-"__").
-
-Vertical bars are used to bracket the substitution reference text. A
-substitution reference may also be a hyperlink reference by appending
-a "_" (named) or "__" (anonymous) suffix; the substitution text is
-used for the reference text in the named case.
-
-The processing system replaces substitution references with the
-processed contents of the corresponding `substitution definitions`_
-(which see for the definition of "correspond"). Substitution
-definitions produce inline-compatible elements.
-
-Examples::
-
- This is a simple |substitution reference|. It will be replaced by
- the processing system.
-
- This is a combination |substitution and hyperlink reference|_. In
- addition to being replaced, the replacement text or element will
- refer to the "substitution and hyperlink reference" target.
-
-
-Standalone Hyperlinks
----------------------
-
-Doctree element: reference.
-
-Start-string = end-string = "" (empty string).
-
-A URI (absolute URI [#URI]_ or standalone email address) within a text
-block is treated as a general external hyperlink with the URI itself
-as the link's text. For example::
-
- See http://www.python.org for info.
-
-would be marked up in HTML as::
-
- See <a href="http://www.python.org">http://www.python.org</a> for
- info.
-
-Two forms of URI are recognized:
-
-1. Absolute URIs. These consist of a scheme, a colon (":"), and a
- scheme-specific part whose interpretation depends on the scheme.
-
- The scheme is the name of the protocol, such as "http", "ftp",
- "mailto", or "telnet". The scheme consists of an initial letter,
- followed by letters, numbers, and/or "+", "-", ".". Recognition is
- limited to known schemes, per the W3C's `Index of WWW Addressing
- Schemes`_.
-
- The scheme-specific part of the resource identifier may be either
- hierarchical or opaque:
-
- - Hierarchical identifiers begin with one or two slashes and may
- use slashes to separate hierarchical components of the path.
- Examples are web pages and FTP sites::
-
- http://www.python.org
-
- ftp://ftp.python.org/pub/python
-
- - Opaque identifiers do not begin with slashes. Examples are
- email addresses and newsgroups::
-
- mailto:someone@somewhere.com
-
- news:comp.lang.python
-
- With queries, fragments, and %-escape sequences, URIs can become
- quite complicated. A reStructuredText parser must be able to
- recognize any absolute URI, as defined in RFC2396_ and RFC2732_.
-
-2. Standalone email addresses, which are treated as if they were
- absolute URIs with a "mailto:" scheme. Example::
-
- someone@somewhere.com
-
-Punctuation at the end of a URI is not considered part of the URI.
-
-.. [#URI] Uniform Resource Identifier. URIs are a general form of
- URLs (Uniform Resource Locators). For the syntax of URIs see
- RFC2396_ and RFC2732_.
-
-
-----------------
- Error Handling
-----------------
-
-Doctree element: system_message, problematic.
-
-Markup errors are handled according to the specification in `PEP
-258`_.
-
-
-.. _reStructuredText: http://docutils.sourceforge.net/rst.html
-.. _Docutils: http://docutils.sourceforge.net/
-.. _The Docutils Document Tree: ../doctree.html
-.. _Docutils Generic DTD: ../gpdi.dtd
-.. _transforms:
- http://docutils.sourceforge.net/docutils/transforms/
-.. _Grouch: http://www.mems-exchange.org/software/grouch/
-.. _RFC822: http://www.rfc-editor.org/rfc/rfc822.txt
-.. _DocTitle transform:
-.. _DocInfo transform:
- http://docutils.sourceforge.net/docutils/transforms/frontmatter.py
-.. _getopt.py:
- http://www.python.org/doc/current/lib/module-getopt.html
-.. _GNU libc getopt_long():
- http://www.gnu.org/manual/glibc-2.2.3/html_node/libc_516.html
-.. _doctest module:
- http://www.python.org/doc/current/lib/module-doctest.html
-.. _Emacs table mode: http://table.sourceforge.net/
-.. _Index of WWW Addressing Schemes:
- http://www.w3.org/Addressing/schemes.html
-.. _World Wide Web Consortium: http://www.w3.org/
-.. _HTML Techniques for Web Content Accessibility Guidelines:
- http://www.w3.org/TR/WCAG10-HTML-TECHS/#link-text
-.. _reStructuredText Directives: directives.html
-.. _reStructuredText Interpreted Text Roles: interpreted.html
-.. _RFC2396: http://www.rfc-editor.org/rfc/rfc2396.txt
-.. _RFC2732: http://www.rfc-editor.org/rfc/rfc2732.txt
-.. _Zope: http://www.zope.com/
-.. _PEP 258: http://docutils.sourceforge.net/spec/pep-0258.txt
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
diff --git a/docutils/docs/ref/rst/roles.txt b/docutils/docs/ref/rst/roles.txt
deleted file mode 100644
index a34c4a5ed..000000000
--- a/docutils/docs/ref/rst/roles.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-=========================================
- reStructuredText Interpreted Text Roles
-=========================================
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-This document describes the interpreted text roles implemented in the
-reference reStructuredText parser.
-
-Interpreted text uses backquotes (`) around the text. An explicit
-role marker may optionally appear before or after the text, delimited
-with colons. For example::
-
- This is `interpreted text` using the default role.
-
- This is :title:`interpreted text` using an explicit role.
-
-A default role may be defined by applications of reStructuredText; it
-is used if no explicit ``:role:`` prefix or suffix is given. The
-"default default role" is `:title-reference:`_.
-
-See the `Interpreted Text`_ section in the `reStructuredText Markup
-Specification`_ for syntax details.
-
-.. _Interpreted Text: ./reStructuredText.html#interpreted-text
-.. _reStructuredText Markup Specification: ./reStructuredText.html
-
-
-.. contents::
-
-
-``:emphasis:``
-==============
-
-:Aliases: None
-:DTD Element: emphasis
-
-Implements emphasis. These are equivalent::
-
- *text*
- :emphasis:`text`
-
-
-``:literal:``
-==============
-
-:Aliases: None
-:DTD Element: literal
-
-Implements inline literal text. These are equivalent::
-
- ``text``
- :literal:`text`
-
-Care must be taken with backslash-escapes though. These are *not*
-equivalent::
-
- ``text \ and \ backslashes``
- :literal:`text \ and \ backslashes`
-
-The backslashes in the first line are preserved (and do nothing),
-whereas the backslashes in the second line escape the following
-spaces.
-
-
-``:pep-reference:``
-===================
-
-:Aliases: ``:PEP:``
-:DTD Element: reference
-
-The ``:pep-reference:`` role is used to create an HTTP reference to a
-PEP (Python Enhancement Proposal). The ``:PEP:`` alias is usually
-used. For example::
-
- See :PEP:`287` for more information about reStructuredText.
-
-This is equivalent to::
-
- See `PEP 287`__ for more information about reStructuredText.
-
- __ http://www.python.org/peps/pep-0287.html
-
-
-``:rfc-reference:``
-===================
-
-:Aliases: ``:RFC:``
-:DTD Element: reference
-
-The ``:rfc-reference:`` role is used to create an HTTP reference to an
-RFC (Internet Request for Comments). The ``:RFC:`` alias is usually
-used. For example::
-
- See :RFC:`2822` for information about email headers.
-
-This is equivalent to::
-
- See `RFC 2822`__ for information about email headers.
-
- __ http://www.faqs.org/rfcs/rfc2822.html
-
-
-``:strong:``
-============
-
-:Aliases: None
-:DTD Element: strong
-
-Implements strong emphasis. These are equivalent::
-
- **text**
- :strong:`text`
-
-
-``:subscript:``
-===============
-
-:Aliases: ``:sub:``
-:DTD Element: subscript
-
-Implements subscripts.
-
-
-``:superscript:``
-=================
-
-:Aliases: ``:sup:``
-:DTD Element: superscript
-
-Implements superscripts.
-
-
-``:title-reference:``
-=====================
-
-:Aliases: ``:title:``, ``:t:``.
-:DTD Element: title_reference
-
-The ``:title-reference:`` role is used to describe the titles of
-books, periodicals, and other materials. It is the equivalent of the
-HTML "cite" element, and it is expected that HTML writers will
-typically render "title_reference" elements using "cite".
-
-Since title references are typically rendered with italics, they are
-often marked up using ``*emphasis*``, which is misleading and vague.
-The "title_reference" element provides accurate and unambiguous
-descriptive markup.
-
-Let's assume ``:title-reference:`` is the default interpreted text
-role (see below) for this example::
-
- `Design Patterns` [GoF95]_ is an excellent read.
-
-The following document fragment (pseudo-XML_) will result from
-processing::
-
- <paragraph>
- <title_reference>
- Design Patterns
-
- <citation_reference refname="gof95">
- GoF95
- is an excellent read.
-
-``:title-reference:`` is the default interpreted text role in the
-standard reStructuredText parser. This means that no explicit role is
-required. Applications of reStructuredText may designate a different
-default role, in which case the explicit role must be used.
-
-
-.. _pseudo-XML: ../doctree.html#pseudo-xml
diff --git a/docutils/docs/ref/soextblx.dtd b/docutils/docs/ref/soextblx.dtd
deleted file mode 100644
index 56ba311ba..000000000
--- a/docutils/docs/ref/soextblx.dtd
+++ /dev/null
@@ -1,312 +0,0 @@
-<!--
-===========================================================================
- OASIS XML Exchange Table Model Declaration Module
-===========================================================================
-:Date: 1999-03-15
--->
-
-<!-- This set of declarations defines the XML version of the Exchange
- Table Model as of the date shown in the Formal Public Identifier
- (FPI) for this entity.
-
- This set of declarations may be referred to using a public external
- entity declaration and reference as shown in the following three
- lines:
-
- <!ENTITY % calstblx
- PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN">
- %calstblx;
-
- If various parameter entities used within this set of declarations
- are to be given non-default values, the appropriate declarations
- should be given before calling in this package (i.e., before the
- "%calstblx;" reference).
--->
-
-<!-- The motivation for this XML version of the Exchange Table Model
- is simply to create an XML version of the SGML Exchange Table
- Model. By design, no effort has been made to "improve" the model.
-
- This XML version incorporates the logical bare minimum changes
- necessary to make the Exchange Table Model a valid XML DTD.
--->
-
-<!-- The XML version of the Exchange Table Model differs from
- the SGML version in the following ways:
-
- The following parameter entities have been removed:
-
- - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep
- There are no exceptions in XML. The following normative statement
- is made in lieu of exceptions: the exchange table model explicitly
- forbids a table from occurring within another table. If the
- content model of an entry includes a table element, then this
- cannot be enforced by the DTD, but it is a deviation from the
- exchange table model to include a table within a table.
-
- - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att
- The motivation for these elements was to change the table
- header/footer elements. Since XML does not allow element declarations
- to contain name groups, and the exchange table model does not
- allow a table to contain footers, the continued presence of these
- attributes seems unnecessary.
-
- The following parameter entity has been added:
-
- - tbl.thead.att
- This entity parameterizes the attributes on thead. It replaces
- the tbl.hdft.att parameter entity.
-
- Other miscellaneous changes:
-
- - Tag ommission indicators have been removed
- - Comments have been removed from declarations
- - NUMBER attributes have been changed to NMTOKEN
- - NUTOKEN attributes have been to changed to NMTOKEN
- - Removed the grouping characters around the content model
- parameter entry for the 'entry' element. This is necessary
- so that an entry can contain #PCDATA and be defined as an
- optional, repeatable OR group beginning with #PCDATA.
--->
-
-<!-- This entity includes a set of element and attribute declarations
- that partially defines the Exchange table model. However, the model
- is not well-defined without the accompanying natural language
- description of the semantics (meanings) of these various elements,
- attributes, and attribute values. The semantic writeup, also available
- from SGML Open, should be used in conjunction with this entity.
--->
-
-<!-- In order to use the Exchange table model, various parameter entity
- declarations are required. A brief description is as follows:
-
- ENTITY NAME WHERE USED WHAT IT IS
-
- %yesorno In ATTLIST of: An attribute declared value
- almost all elements for a "boolean" attribute
-
- %paracon In content model of: The "text" (logical content)
- <entry> of the model group for <entry>
-
- %titles In content model of: The "title" part of the model
- table element group for the table element
-
- %tbl.table.name In declaration of: The name of the "table"
- table element element
-
- %tbl.table-titles.mdl In content model of: The model group for the title
- table elements part of the content model for
- table element
-
- %tbl.table.mdl In content model of: The model group for the content
- table elements model for table element,
- often (and by default) defined
- in terms of %tbl.table-titles.mdl
- and tgroup
-
- %tbl.table.att In ATTLIST of: Additional attributes on the
- table element table element
-
- %bodyatt In ATTLIST of: Additional attributes on the
- table element table element (for backward
- compatibility with the SGML
- model)
-
- %tbl.tgroup.mdl In content model of: The model group for the content
- <tgroup> model for <tgroup>
-
- %tbl.tgroup.att In ATTLIST of: Additional attributes on the
-4 <tgroup> <tgroup> element
-
- %tbl.thead.att In ATTLIST of: Additional attributes on the
- <thead> <thead> element
-
- %tbl.tbody.att In ATTLIST of: Additional attributes on the
- <tbody> <tbody> element
-
- %tbl.colspec.att In ATTLIST of: Additional attributes on the
- <colspec> <colspec> element
-
- %tbl.row.mdl In content model of: The model group for the content
- <row> model for <row>
-
- %tbl.row.att In ATTLIST of: Additional attributes on the
- <row> <row> element
-
- %tbl.entry.mdl In content model of: The model group for the content
- <entry> model for <entry>
-
- %tbl.entry.att In ATTLIST of: Additional attributes on the
- <entry> <entry> element
-
- This set of declarations will use the default definitions shown below
- for any of these parameter entities that are not declared before this
- set of declarations is referenced.
--->
-
-<!-- These definitions are not directly related to the table model, but are
- used in the default CALS table model and may be defined elsewhere (and
- prior to the inclusion of this table module) in the referencing DTD. -->
-
-<!ENTITY % yesorno 'NMTOKEN'> <!-- no if zero(s), yes if any other value -->
-<!ENTITY % titles 'title?'>
-<!ENTITY % paracon '#PCDATA'> <!-- default for use in entry content -->
-
-<!--
-The parameter entities as defined below change and simplify the CALS table
-model as published (as part of the Example DTD) in MIL-HDBK-28001. The
-resulting simplified DTD has support from the SGML Open vendors and is
-therefore more interoperable among different systems.
-
-These following declarations provide the Exchange default definitions
-for these entities. However, these entities can be redefined (by giving
-the appropriate parameter entity declaration(s) prior to the reference
-to this Table Model declaration set entity) to fit the needs of the
-current application.
-
-Note, however, that changes may have significant effect on the ability to
-interchange table information. These changes may manifest themselves
-in useability, presentation, and possible structure information degradation.
--->
-
-<!ENTITY % tbl.table.name "table">
-<!ENTITY % tbl.table-titles.mdl "%titles;,">
-<!ENTITY % tbl.table-main.mdl "tgroup+">
-<!ENTITY % tbl.table.mdl "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
-<!ENTITY % tbl.table.att "
- pgwide %yesorno; #IMPLIED ">
-<!ENTITY % bodyatt "">
-<!ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody">
-<!ENTITY % tbl.tgroup.att "">
-<!ENTITY % tbl.thead.att "">
-<!ENTITY % tbl.tbody.att "">
-<!ENTITY % tbl.colspec.att "">
-<!ENTITY % tbl.row.mdl "entry+">
-<!ENTITY % tbl.row.att "">
-<!ENTITY % tbl.entry.mdl "(%paracon;)*">
-<!ENTITY % tbl.entry.att "">
-
-<!-- ===== Element and attribute declarations follow. ===== -->
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % tbl.table.name "table"
- ENTITY % tbl.table-titles.mdl "%titles;,"
- ENTITY % tbl.table.mdl "%tbl.table-titles; tgroup+"
- ENTITY % tbl.table.att "
- pgwide %yesorno; #IMPLIED "
--->
-
-<!ELEMENT %tbl.table.name; (%tbl.table.mdl;)>
-
-<!ATTLIST %tbl.table.name;
- frame (top|bottom|topbot|all|sides|none) #IMPLIED
- colsep %yesorno; #IMPLIED
- rowsep %yesorno; #IMPLIED
- %tbl.table.att;
- %bodyatt;
->
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody"
- ENTITY % tbl.tgroup.att ""
--->
-
-<!ELEMENT tgroup (%tbl.tgroup.mdl;) >
-
-<!ATTLIST tgroup
- cols NMTOKEN #REQUIRED
- colsep %yesorno; #IMPLIED
- rowsep %yesorno; #IMPLIED
- align (left|right|center|justify|char) #IMPLIED
- %tbl.tgroup.att;
->
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % tbl.colspec.att ""
--->
-
-<!ELEMENT colspec EMPTY >
-
-<!ATTLIST colspec
- colnum NMTOKEN #IMPLIED
- colname NMTOKEN #IMPLIED
- colwidth CDATA #IMPLIED
- colsep %yesorno; #IMPLIED
- rowsep %yesorno; #IMPLIED
- align (left|right|center|justify|char) #IMPLIED
- char CDATA #IMPLIED
- charoff NMTOKEN #IMPLIED
- %tbl.colspec.att;
->
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % tbl.thead.att ""
--->
-
-<!ELEMENT thead (row+)>
-
-<!ATTLIST thead
- valign (top|middle|bottom) #IMPLIED
- %tbl.thead.att;
->
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % tbl.tbody.att ""
--->
-
-<!ELEMENT tbody (row+)>
-
-<!ATTLIST tbody
- valign (top|middle|bottom) #IMPLIED
- %tbl.tbody.att;
->
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % tbl.row.mdl "entry+"
- ENTITY % tbl.row.att ""
--->
-
-<!ELEMENT row (%tbl.row.mdl;)>
-
-<!ATTLIST row
- rowsep %yesorno; #IMPLIED
- valign (top|middle|bottom) #IMPLIED
- %tbl.row.att;
->
-
-
-<!--
- Default declarations previously defined in this entity and
- referenced below include:
- ENTITY % paracon "#PCDATA"
- ENTITY % tbl.entry.mdl "(%paracon;)*"
- ENTITY % tbl.entry.att ""
--->
-
-<!ELEMENT entry %tbl.entry.mdl;>
-
-<!ATTLIST entry
- colname NMTOKEN #IMPLIED
- namest NMTOKEN #IMPLIED
- nameend NMTOKEN #IMPLIED
- morerows NMTOKEN #IMPLIED
- colsep %yesorno; #IMPLIED
- rowsep %yesorno; #IMPLIED
- align (left|right|center|justify|char) #IMPLIED
- char CDATA #IMPLIED
- charoff NMTOKEN #IMPLIED
- valign (top|middle|bottom) #IMPLIED
- %tbl.entry.att;
->
diff --git a/docutils/docs/ref/transforms.txt b/docutils/docs/ref/transforms.txt
deleted file mode 100644
index 4c5fe135a..000000000
--- a/docutils/docs/ref/transforms.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-=====================
- Docutils Transforms
-=====================
-
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-
-.. contents::
-
-
-For background about transforms and the Transformer object, see `PEP
-258`_.
-
-.. _PEP 258: pep-0258.html#transformer
-
-
-Transforms Listed in Priority Order
-===================================
-
-============================== ============================ ========
-Transform: module.Class Added By Priority
-============================== ============================ ========
-misc.class "class" (d/p) 210
-
-references.Substitutions standalone (r), pep (r) 220
-
-frontmatter.DocTitle standalone (r) 320
-
-frontmatter.DocInfo standalone (r) 340
-
-peps.Headers pep (r) 360
-
-peps.Contents pep (r) 380
-
-references.ChainedTargets standalone (r), pep (r) 420
-
-references.AnonymousHyperlinks standalone (r), pep (r) 440
-
-references.IndirectHyperlinks standalone (r), pep (r) 460
-
-peps.TargetNotes pep (r) 520
-
-references.TargetNotes peps.TargetNotes (t/p) 0
-
-misc.CallBack peps.TargetNotes (t/p) 1
-
-references.TargetNotes "target-notes" (d/p) 540
-
-references.Footnotes standalone (r), pep (r) 620
-
-references.ExternalTargets standalone (r), pep (r) 640
-
-references.InternalTargets standalone (r), pep (r) 660
-
-parts.SectNum "sectnum" (d/p) 710
-
-parts.Contents "contents" (d/p), 720
- peps.Contents (t/p)
-
-peps.PEPZero pep.Headers (t/p) 760
-
-components.Filter "meta" (d/p) 780
-
-universal.Decorations Transformer 820
-
-universal.FinalChecks Transformer 840
-
-universal.Messages Transformer 860
-
-universal.TestMessages DocutilsTestSupport 890
-
-misc.CallBack n/a 990
-============================== ============================ ========
-
-Key:
-
-* (r): Reader
-* (d): Directive
-* (t): Transform
-* (/p): Via a "pending" node
-
-
-Transform Priority Range Categories
-===================================
-
-==== ==== ================================================
- Priority
----------- ------------------------------------------------
-From To Category
-==== ==== ================================================
- 0 99 immediate execution (added by another transform)
- 100 199 very early (non-standard)
- 200 299 very early
- 300 399 early
- 400 699 main
- 700 799 late
- 800 899 very late
- 900 999 very late (non-standard)
-==== ==== ================================================
diff --git a/docutils/docs/user/latex.txt b/docutils/docs/user/latex.txt
deleted file mode 100644
index 1b3d0b53b..000000000
--- a/docutils/docs/user/latex.txt
+++ /dev/null
@@ -1,263 +0,0 @@
-=======================
- Docutils LaTex Writer
-=======================
-
-:Author: Engelbert Gruber
-:Contact: grubert@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-.. contents::
-
-
-Introduction
-============
-
-Producing latex code from reST input could be done in at least two ways:
-
-a. Transform the internal markup into corresponding latex markup e.g.
- a section title would be written as ```\section{this section ...}``.
-b. Using latex as a typesetting system to produce desired paperwork
- without caring about loosing document structure information.
-
-The former might be preferable, but limits to latexs capabilities, so
-in reality it is a mix.
-
-
-Options
-=======
-
-Configuration can be done in two ways (again):
-
-1. Options to the docutils tool: e.g. language selection.
-2. Options to latex via the stylesheet file.
-
-The generated latex documents should be kept processable by a standard
-latex installation (if such a thing exists), therefore the document
-contains default settings. To allow *overwriting defaults* the stylesheet
-is included at last.
-
-Options on the Commandline
---------------------------
-
-===================== ================================================
-Setting/Config Entry Description
-===================== ================================================
---use-latex-toc To get pagenumbers in the table of contents the
- table of contents must be generated by latex.
- Usually latex must be run twice to get numbers
- correct.
---------------------- ------------------------------------------------
---hyperlink-color Color of any hyperlinks embedded in text
- (default: "blue", "0" to disable).
---------------------- ------------------------------------------------
---documentclass Specify latex documentclass, *but* beaware that
- books have chapters articles not.
- (default: "article").
---------------------- ------------------------------------------------
---stylesheet Specify a stylesheet file. The file will be
- ``input`` by latex in the document header.
- If this is set to "" disables generation of
- input latex command.
- (default: "style.tex").
---------------------- ------------------------------------------------
---footnote-references Format for footnote references: one of
- "superscript" or "brackets".
- Default is "brackets".
---------------------- ------------------------------------------------
---attribution Format for block quote attributions: one of
- "dash" (em-dash prefix), "parentheses"/"parens",
- or "none".
-
- Default: "dash". Options: ``--attribution``.
-===================== ================================================
-
-
-Options in the Stylesheet
--------------------------
-
-===================== ================================================
-Setting/Config Entry Description
-===================== ================================================
-papersize Default: a4paper. Paper geometry can be changed
- using ``\geometry{xxx}`` entries.
-
- Some possibilities:
-
- * a4paper, b3paper, letterpaper, executivepaper,
- legalpaper
- * landscape, portrait, twoside.
-
- and a ton of other option setting margins.
-
- An example::
-
- \geometry{a5paper,landscape}
---------------------- ------------------------------------------------
-paragraph indent By default latex indents the forst line in a
- paragraph. The following lines set indentation
- to zero but add a vertical space between
- paragraphs.::
-
- \setlength{\parindent}{0pt}
- \setlength{\parskip}{6pt plus 2pt minus 1pt}
---------------------- ------------------------------------------------
-admonitionwidth The width for admonitions.
- Default: 0.9*textwidth, this can be changed
- e.g.::
-
- \setlength{\admonitionwidth}{0.7\textwidth}
---------------------- ------------------------------------------------
-docinfowidth The width for the docinfo table.
- Default: 0.9*textwidth, changed to e.g.::
-
- \setlength{\docinfowidth}{0.7\textwidth}
---------------------- ------------------------------------------------
-rubric style The header contains the definition of a new
- LaTeX command rubric. Inserting::
-
- \renewcommand{\rubric}[1]{\subsection*{
- ~\hfill {\color{red} #1} \hfill ~}}
-
- sets rubric to subsection style in red.
-
- Default: subsection style italic.
---------------------- ------------------------------------------------
-font selection see below
-===================== ================================================
-
-Missing options
----------------
-
-* Selection of latex fontsize.
-* Assumed reST linelength for table width setting.
-
-Font selection
---------------
-
-When generating pdf-files from LaTeX, use the pdflatex command, the files
-are a lot smaller if postscript fonts are used. To do so put
-``\usepackage{times}`` into the styleshee
-
-It is said that the typewriter font in computer modern font, the default
-LaTeX font package, is too heavy compared to the others. There is a package
-or some commands too fix this, which i currently cannot find.
-
-Some people diagnose a similar unbalance for the postscript fonts, the
-package to fix this is ```\usepackage{pslatex}``.
-
-
-Commands directly to LaTeX
-==========================
-
-By means of the reST-raw directive one can give commands directly to
-LaTeX, e.g. forcing a page break::
-
- .. raw:: latex
-
- \newpage
-
-
-Or setting formulas in LaTeX::
-
- .. raw:: latex
-
- $$x^3 + 3x^2a + 3xa^2 + a^3,$$
-
-
-Or making a colorbox: If someone wants to get a red background for a textblock,
-she/he can put \definecolor{bg}{rgb}{.9,0,0} into style.tex and in
-reStructuredText do something like this::
-
- |begincolorbox|
- Nobody expects the spanish inquisition.
- |endcolorbox|
-
- .. |begincolorbox| raw:: latex
-
- \\begin{center}
- \\colorbox{bg}{
- \\parbox{0.985\\linewidth}{
-
- .. |endcolorbox| raw:: latex
-
- }}
- \\end{center}
-
-
-Problems
-========
-
-Open to be fixed or open to discussion.
-
-Tables
-------
-
-:Tablewidth: reST-documents line length is assumed to be 80 characters. The
- tablewidth is set relative to this value. If someone produces
- documents with line length of 132 this will fail.
-
- Table width is tried to fit in page even if it is wider than
- the assumed linewidth, still assumed linewidth is a hook.
-
-* In tools.txt the option tables right column, there should be some more spacing
- between the description and the next paragraph "Default:".
-
- Paragraph separation in tables is hairy.
- see http://www.tex.ac.uk/cgi-bin/texfaq2html?label=struttab
-
- - The strut solution did not work.
- - setting extrarowheight added ad top of row not between paragraphs in
- a cell. ALTHOUGH i set it to 2pt because, text is too close to the topline.
- - baselineskip/stretch does not help.
-* Should there be two hlines after table head and on table end ?
-* Table: multicol cells are always {l}.
-* Table heads and footer for longtable (firstpage lastpage ..).
-* Longtable does not work with multirow
-* Tabularx says "do not use any multicolmn which spans any X column.
- maybe use ltxtable instead of tabularx (Longtable combined with tabularx).
- but ltxtable disables longtable's multicolumn.
-* Table cells with multirow and multicolumn
-* Tables have borders, and the border is missing in empty cells.
-
-
-Miscellaneous
--------------
-
-* recongize LaTeX (or even latex) and replace by ```\LaTeX``.
-* Support embed-stylesheet.
-* the ^-sign is problematic: using mathmode wedge is usually the wrong font.
-* Sidebar handling.
-* Maybe add end of line after term in definition list. see
- http://roundup.sf.net/doc-0.5/features.pdf
-* Pdfbookmark level 4 (and greater) does not work (might be settable but OTOH).
-* center subsection{Abstract} gives a latex error here.
- ``! LaTeX Error: Something's wrong--perhaps a missing \item.``
- Committed a HACK: centering by hfill.
-* Document errors are also too silent.
-* Use optionlist for docinfo, the table does only work for single page.
-* Consider peter funk's hooks for TeXpert:
-
- * Define his own document preamble (including the choice to
- choose his own documentclass. That would make the ``--documentclass``
- option superfluous). I suggest to call this option ``--preamble``
- * Use two additional hooks to put additional stuff just behind the
- ``\begin{document}`` and just before the ``\end{document}`` macros.
- Typical uses would be ``\tableofcontents``, ``\listoffigures`` and
- ``\appendix``, ``\makeindex``, ``\makeglossary`` and some such
- for larger documents.
-
-* Hyphens: co-developers should be co--developers ?
-* The indentional problematic error in test.txt is not referring anywhere.
-* Footnotes are not all on the same page (as in tools/test.txt) and do not link back
- and forth.
-* No link to system errors.
-* Hyperlinks are not hyphenated this leads to bad spacing. see tools/test.txt
- 2.14 directives directives
-* Meta keywords into pdf ?
-* Pagestyle headings does not work, when sections are starred.
-* For additional docinfo items: the field_body is inserted as text, i.e. no
- markup is done.
-* Multiple author entries in docinfo (same thing as in html).
-
diff --git a/docutils/docs/user/rst/images/ball1.gif b/docutils/docs/user/rst/images/ball1.gif
deleted file mode 100644
index 3e14441d9..000000000
--- a/docutils/docs/user/rst/images/ball1.gif
+++ /dev/null
Binary files differ
diff --git a/docutils/docs/user/rst/images/biohazard.png b/docutils/docs/user/rst/images/biohazard.png
deleted file mode 100644
index ae4629d8b..000000000
--- a/docutils/docs/user/rst/images/biohazard.png
+++ /dev/null
Binary files differ
diff --git a/docutils/docs/user/rst/images/title.png b/docutils/docs/user/rst/images/title.png
deleted file mode 100644
index cc6218efe..000000000
--- a/docutils/docs/user/rst/images/title.png
+++ /dev/null
Binary files differ
diff --git a/docutils/docs/user/rst/quickref.html b/docutils/docs/user/rst/quickref.html
deleted file mode 100644
index b60cbf1b0..000000000
--- a/docutils/docs/user/rst/quickref.html
+++ /dev/null
@@ -1,1243 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
- <head>
- <title>Quick reStructuredText</title>
-
- <style type="text/css"><!--
- a.backref { text-decoration: none ; color: black }
- --></style>
-
- </head>
-
- <body>
- <h1>Quick <i>re</i><font size="+4"><tt>Structured</tt></font><i>Text</i></h1>
-
- <!-- Caveat: if you're reading the HTML for the examples, -->
- <!-- beware that it was hand-generated, not by Docutils/ReST. -->
-
- <p align="right"><em><a href="http://docutils.sourceforge.net/docs/rst/quickref.html"
- >http://docutils.sourceforge.net/docs/rst/quickref.html</a></em>
- <br align="right"><em>Being a cheat-sheet for reStructuredText</em>
- <br align="right"><em>Updated 2003-06-10</em>
-
- <blockquote>
- <p>Copyright: This document has been placed in the public domain.
- </blockquote>
-
-
- <p>The full details of the markup may be found on the
- <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>
- page. This document is just intended as a reminder.
-
- <p>Links that look like "(<a href="#details">details</a>)" point
- into the HTML version of the full <a
- href="../../spec/rst/reStructuredText.html">reStructuredText
- specification</a> document. These are relative links; if they
- don't work, please use the <a
- href="http://docutils.sourceforge.net/docs/rst/quickref.html"
- >master "Quick reStructuredText"</a> document.
-
- <h2><a name="contents">Contents</a></h2>
-
- <ul>
- <li><a href="#inline-markup">Inline Markup</a></li>
- <li><a href="#escaping">Escaping with Backslashes</a></li>
- <li><a href="#section-structure">Section Structure</a></li>
- <li><a href="#paragraphs">Paragraphs</a></li>
- <li><a href="#bullet-lists">Bullet Lists</a></li>
- <li><a href="#enumerated-lists">Enumerated Lists</a></li>
- <li><a href="#definition-lists">Definition Lists</a></li>
- <li><a href="#field-lists">Field Lists</a></li>
- <li><a href="#option-lists">Option Lists</a></li>
- <li><a href="#literal-blocks">Literal Blocks</a></li>
- <li><a href="#block-quotes">Block Quotes</a></li>
- <li><a href="#doctest-blocks">Doctest Blocks</a></li>
- <li><a href="#tables">Tables</a></li>
- <li><a href="#transitions">Transitions</a></li>
- <li><a href="#explicit-markup">Explicit Markup</a>
- <ul>
- <li><a href="#footnotes">Footnotes</a></li>
- <li><a href="#citations">Citations</a></li>
- <li><a href="#hyperlink-targets">Hyperlink Targets</a>
- <ul>
- <li><a href="#external-hyperlink-targets">External Hyperlink Targets</a></li>
- <li><a href="#internal-hyperlink-targets">Internal Hyperlink Targets</a></li>
- <li><a href="#indirect-hyperlink-targets">Indirect Hyperlink Targets</a></li>
- <li><a href="#implicit-hyperlink-targets">Implicit Hyperlink Targets</a></li>
- </ul></li>
- <li><a href="#directives">Directives</a></li>
- <li><a href="#substitution-references-and-definitions">Substitution References and Definitions</a></li>
- <li><a href="#comments">Comments</a></li>
- </ul></li>
- <li><a href="#getting-help">Getting Help</a></li>
- </ul>
-
- <h2><a href="#contents" name="inline-markup" class="backref"
- >Inline Markup</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#inline-markup">details</a>)
-
- <p>Inline markup allows words and phrases within text to have
- character styles (like italics and boldface) and functionality
- (like hyperlinks).
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th>Plain text
- <th>Typical result
- <th>Notes
- </thead>
- <tbody>
- <tr valign="top">
- <td nowrap><samp>*emphasis*</samp>
- <td><em>emphasis</em>
- <td>Normally rendered as italics.
-
- <tr valign="top">
- <td nowrap><samp>**strong&nbsp;emphasis**</samp>
- <td><strong>strong emphasis</strong>
- <td>Normally rendered as boldface.
-
- <tr valign="top">
- <td nowrap><samp>`interpreted&nbsp;text`</samp>
- <td>(see note at right)
- <td>The rendering and <em>meaning</em> of interpreted text is
- domain- or application-dependent. It can be used for things
- like index entries or explicit descriptive markup (like program
- identifiers).
-
- <tr valign="top">
- <td nowrap><samp>``inline&nbsp;literal``</samp>
- <td><code>inline&nbsp;literal</code>
- <td>Normally rendered as monospaced text. Spaces should be
- preserved, but line breaks will not be.
-
- <tr valign="top">
- <td nowrap><samp>reference_</samp>
- <td><a href="#hyperlink-targets">reference</a>
- <td>A simple, one-word hyperlink reference. See <a
- href="#hyperlinks" >Hyperlinks</a>.
-
- <tr valign="top">
- <td nowrap><samp>`phrase reference`_</samp>
- <td><a href="#hyperlink-targets">phrase reference</a>
- <td>A hyperlink reference with spaces or punctuation needs to be
- quoted with backquotes. See <a
- href="#hyperlink-targets">Hyperlinks</a>.
-
- <tr valign="top">
- <td nowrap><samp>anonymous__</samp>
- <td><a href="#hyperlink-targets">anonymous</a>
- <td>With two underscores instead of one, both simple and phrase
- references may be anonymous (the reference text is not repeated
- at the target). See <a
- href="#hyperlink-targets">Hyperlinks</a>.
-
- <tr valign="top">
- <td nowrap><samp>_`inline internal target`</samp>
- <td><a name="inline-internal-target">inline internal target</a>
- <td>A crossreference target within text.
- See <a href="#hyperlink-targets">Hyperlinks</a>.
-
- <tr valign="top">
- <td nowrap><samp>|substitution reference|</samp>
- <td>(see note at right)
- <td>The result is substituted in from the <a
- href="#substitution-references-and-definitions">substitution
- definition</a>. It could be text, an image, a hyperlink, or a
- combination of these and others.
-
- <tr valign="top">
- <td nowrap><samp>footnote reference [1]_</samp>
- <td>footnote reference <sup><a href="#footnotes">1</a></sup>
- <td>See <a href="#footnotes">Footnotes</a>.
-
- <tr valign="top">
- <td nowrap><samp>citation reference [CIT2002]_</samp>
- <td>citation reference <a href="#citations">[CIT2002]</a>
- <td>See <a href="#citations">Citations</a>.
-
- <tr valign="top">
- <td nowrap><samp>http://docutils.sf.net/</samp>
- <td><a href="http://docutils.sf.net/">http://docutils.sf.net/</a>
- <td>A standalone hyperlink.
-
- </table>
-
- <p>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, <a href="#escaping">escape
- (with backslash)</a> or quote them (with double backquotes; i.e.
- use inline literals).
-
- <p>In detail, the reStructuredText specification says that in
- inline markup, the following rules apply to start-strings and
- end-strings (inline markup delimiters):
-
- <ol>
- <li>The start-string must start a text block or be
- immediately preceded by whitespace or any of&nbsp;
- <samp>' " ( [ {</samp> or&nbsp;<samp>&lt;</samp>.
- <li>The start-string must be immediately followed by non-whitespace.
- <li>The end-string must be immediately preceded by non-whitespace.
- <li>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&nbsp;<samp>' " . , : ; ! ? - ) ] } / \</samp>
- or&nbsp;<samp>&gt;</samp>.
- <li>If a start-string is immediately preceded by one of&nbsp;
- <samp>' " ( [ {</samp> or&nbsp;<samp>&lt;</samp>, it must not be
- immediately followed by the corresponding character from&nbsp;
- <samp>' " ) ] }</samp> or&nbsp;<samp>&gt;</samp>.
- <li>An end-string must be separated by at least one
- character from the start-string.
- <li>An <a href="#escaping">unescaped</a> backslash preceding a
- start-string or end-string will disable markup recognition, except
- for the end-string of inline literals.
- </ol>
-
- <p>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).
-
- <h2><a href="#contents" name="escaping" class="backref"
- >Escaping with Backslashes</a></h2>
-
- <p>(<a
- href="../../spec/rst/reStructuredText.html#backslashes">details</a>)
-
- <p>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:
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Raw reStructuredText
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top"><td>
- <samp>*escape*&nbsp;``with``&nbsp;"\"</samp>
- <td><em>escape</em> <samp>with</samp> ""
- <tr valign="top"><td>
- <samp>\*escape*&nbsp;\``with``&nbsp;"\\"</samp>
- <td>*escape* ``with`` "\"
- </table>
-
- <p>In Python strings it will, of course, be necessary
- to escape any backslash characters so that they actually
- <em>reach</em> reStructuredText.
- The simplest way to do this is to use raw strings:
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Python string
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top"><td>
- <samp>r"""\*escape*&nbsp;\`with`&nbsp;"\\""""</samp>
- <td>*escape* `with` "\"
- <tr valign="top"><td>
- <samp>&nbsp;"""\\*escape*&nbsp;\\`with`&nbsp;"\\\\""""</samp>
- <td>*escape* `with` "\"
- <tr valign="top"><td>
- <samp>&nbsp;"""\*escape*&nbsp;\`with`&nbsp;"\\""""</samp>
- <td><em>escape</em> with ""
- </table>
-
- <h2><a href="#contents" name="section-structure" class="backref"
- >Section Structure</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#sections">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>=====</samp>
-<br><samp>Title</samp>
-<br><samp>=====</samp>
-<br><samp>Subtitle</samp>
-<br><samp>--------</samp>
-<br><samp>Titles&nbsp;are&nbsp;underlined&nbsp;(or&nbsp;over-</samp>
-<br><samp>and&nbsp;underlined)&nbsp;with&nbsp;a&nbsp;printing</samp>
-<br><samp>nonalphanumeric&nbsp;7-bit&nbsp;ASCII</samp>
-<br><samp>character.&nbsp;Recommended&nbsp;choices</samp>
-<br><samp>are&nbsp;"``=&nbsp;-&nbsp;`&nbsp;:&nbsp;'&nbsp;"&nbsp;~&nbsp;^&nbsp;_&nbsp;*&nbsp;+&nbsp;#&nbsp;&lt;&nbsp;&gt;``".</samp>
-<br><samp>The&nbsp;underline/overline&nbsp;must&nbsp;be&nbsp;at</samp>
-<br><samp>least&nbsp;as&nbsp;long&nbsp;as&nbsp;the&nbsp;title&nbsp;text.</samp>
-
- <td>
- <font size="+2"><strong>Title</strong></font>
- <p><font size="+1"><strong>Subtitle</strong></font>
- <p>Titles are underlined (or over-
- and underlined) with a printing
- nonalphanumeric 7-bit ASCII
- character. Recommended choices
- are "<samp>= - ` : ' " ~ ^ _ * + # &lt; &gt;</samp>".
- The underline/overline must be at
- least as long as the title text.
- </table>
-
- <h2><a href="#contents" name="paragraphs" class="backref"
- >Paragraphs</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#paragraphs">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<p><samp>This&nbsp;is&nbsp;a&nbsp;paragraph.</samp>
-
-<p><samp>Paragraphs&nbsp;line&nbsp;up&nbsp;at&nbsp;their&nbsp;left</samp>
-<br><samp>edges,&nbsp;and&nbsp;are&nbsp;normally&nbsp;separated</samp>
-<br><samp>by&nbsp;blank&nbsp;lines.</samp>
-
- <td>
- <p>This is a paragraph.
-
- <p>Paragraphs line up at their left edges, and are normally
- separated by blank lines.
-
- </table>
-
- <h2><a href="#contents" name="bullet-lists" class="backref"
- >Bullet Lists</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#bullet-lists">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>Bullet&nbsp;lists:</samp>
-
-<p><samp>-&nbsp;This&nbsp;is&nbsp;item&nbsp;1</samp>
-<br><samp>-&nbsp;This&nbsp;is&nbsp;item&nbsp;2</samp>
-
-<p><samp>-&nbsp;Bullets&nbsp;are&nbsp;"-",&nbsp;"*"&nbsp;or&nbsp;"+".</samp>
-<br><samp>&nbsp;&nbsp;Continuing&nbsp;text&nbsp;must&nbsp;be&nbsp;aligned</samp>
-<br><samp>&nbsp;&nbsp;after&nbsp;the&nbsp;bullet&nbsp;and&nbsp;whitespace.</samp>
-
-<p><samp>Note&nbsp;that&nbsp;a&nbsp;blank&nbsp;line&nbsp;is&nbsp;required</samp>
-<br><samp>before&nbsp;the&nbsp;first&nbsp;item&nbsp;and&nbsp;after&nbsp;the</samp>
-<br><samp>last,&nbsp;but&nbsp;is&nbsp;optional&nbsp;between&nbsp;items.</samp>
- <td>Bullet lists:
- <ul>
- <li>This is item 1
- <li>This is item 2
- <li>Bullets are "-", "*" or "+".
- Continuing text must be aligned
- after the bullet and whitespace.
- </ul>
- <p>Note that a blank line is required before the first
- item and after the last, but is optional between items.
- </table>
-
- <h2><a href="#contents" name="enumerated-lists" class="backref"
- >Enumerated Lists</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#enumerated-lists">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>Enumerated&nbsp;lists:</samp>
-
-<p><samp>3.&nbsp;This&nbsp;is&nbsp;the&nbsp;first&nbsp;item</samp>
-<br><samp>4.&nbsp;This&nbsp;is&nbsp;the&nbsp;second&nbsp;item</samp>
-<br><samp>5.&nbsp;Enumerators&nbsp;are&nbsp;arabic&nbsp;numbers,</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;single&nbsp;letters,&nbsp;or&nbsp;roman&nbsp;numerals</samp>
-<br><samp>6.&nbsp;List&nbsp;items&nbsp;should&nbsp;be&nbsp;sequentially</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;numbered,&nbsp;but&nbsp;need&nbsp;not&nbsp;start&nbsp;at&nbsp;1</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;(although&nbsp;not&nbsp;all&nbsp;formatters&nbsp;will</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;honour&nbsp;the&nbsp;first&nbsp;index).</samp>
- <td>Enumerated lists:
- <ol type="1">
- <li value="3">This is the first item
- <li>This is the second item
- <li>Enumerators are arabic numbers, single letters,
- or roman numerals
- <li>List items should be sequentially numbered,
- but need not start at 1 (although not all
- formatters will honour the first index).
- </ol>
- </table>
-
- <h2><a href="#contents" name="definition-lists" class="backref"
- >Definition Lists</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#definition-lists">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>Definition&nbsp;lists:</samp>
-<br>
-<br><samp>what</samp>
-<br><samp>&nbsp;&nbsp;Definition&nbsp;lists&nbsp;associate&nbsp;a&nbsp;term&nbsp;with</samp>
-<br><samp>&nbsp;&nbsp;a&nbsp;definition.</samp>
-<br>
-<br><samp>how</samp>
-<br><samp>&nbsp;&nbsp;The&nbsp;term&nbsp;is&nbsp;a&nbsp;one-line&nbsp;phrase,&nbsp;and&nbsp;the</samp>
-<br><samp>&nbsp;&nbsp;definition&nbsp;is&nbsp;one&nbsp;or&nbsp;more&nbsp;paragraphs&nbsp;or</samp>
-<br><samp>&nbsp;&nbsp;body&nbsp;elements,&nbsp;indented&nbsp;relative&nbsp;to&nbsp;the</samp>
-<br><samp>&nbsp;&nbsp;term.&nbsp;Blank&nbsp;lines&nbsp;are&nbsp;not&nbsp;allowed</samp>
-<br><samp>&nbsp;&nbsp;between&nbsp;term&nbsp;and&nbsp;definition.</samp>
- <td>Definition lists:
- <dl>
- <dt><strong>what</strong>
- <dd>Definition lists associate a term with
- a definition.
-
- <dt><strong>how</strong>
- <dd>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.
- </dl>
- </table>
-
- <h2><a href="#contents" name="field-lists" class="backref"
- >Field Lists</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#field-lists">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>:Authors:</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;Tony&nbsp;J.&nbsp;(Tibs)&nbsp;Ibbs,</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;David&nbsp;Goodger</samp>
-
-<p><samp>&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;sundry&nbsp;other&nbsp;good-natured&nbsp;folks)</samp>
-
-<p><samp>:Version:&nbsp;1.0&nbsp;of&nbsp;2001/08/08</samp>
-<br><samp>:Dedication:&nbsp;To&nbsp;my&nbsp;father.</samp>
- <td>
- <table>
- <tr valign="top">
- <td><strong>Authors:</strong>
- <td>Tony J. (Tibs) Ibbs,
- David Goodger
- <tr><td><td>(and sundry other good-natured folks)
- <tr><td><strong>Version:</strong><td>1.0 of 2001/08/08
- <tr><td><strong>Dedication:</strong><td>To my father.
- </table>
- </table>
-
- <p>Field lists are used as part of an extension syntax, such as
- options for <a href="#directives">directives</a>, or database-like
- records meant for further processing. Field lists may also be
- used as generic two-column table constructs in documents.
-
- <h2><a href="#contents" name="option-lists" class="backref"
- >Option Lists</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#option-lists">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
- <p><samp>
--a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command-line&nbsp;option&nbsp;"a"
-<br>-b&nbsp;file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;can&nbsp;have&nbsp;arguments
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;long&nbsp;descriptions
-<br>--long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;can&nbsp;be&nbsp;long&nbsp;also
-<br>--input=file&nbsp;&nbsp;long&nbsp;options&nbsp;can&nbsp;also&nbsp;have
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arguments
-<br>/V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOS/VMS-style&nbsp;options&nbsp;too
-</samp>
-
- <td>
- <table border="0" width="100%">
- <tbody valign="top">
- <tr>
- <td width="30%"><p><samp>-a</samp>
- <td><p>command-line option "a"
- <tr>
- <td><p><samp>-b <i>file</i></samp>
- <td><p>options can have arguments and long descriptions
- <tr>
- <td><p><samp>--long</samp>
- <td><p>options can be long also
- <tr>
- <td><p><samp>--input=<i>file</i></samp>
- <td><p>long options can also have arguments
- <tr>
- <td><p><samp>/V</samp>
- <td><p>DOS/VMS-style options too
- </table>
- </table>
-
- <p>There must be at least two spaces between the option and the
- description.
-
- <h2><a href="#contents" name="literal-blocks" class="backref"
- >Literal Blocks</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#literal-blocks">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>A&nbsp;paragraph&nbsp;containing&nbsp;only&nbsp;two&nbsp;colons</samp>
-<br><samp>indicates&nbsp;that&nbsp;the&nbsp;following&nbsp;indented</samp>
-<br><samp>text&nbsp;is&nbsp;a&nbsp;literal&nbsp;block.</samp>
-<br>
-<br><samp>::</samp>
-<br>
-<br><samp>&nbsp;&nbsp;Whitespace,&nbsp;newlines,&nbsp;blank&nbsp;lines,&nbsp;and</samp>
-<br><samp>&nbsp;&nbsp;all&nbsp;kinds&nbsp;of&nbsp;markup&nbsp;(like&nbsp;*this*&nbsp;or</samp>
-<br><samp>&nbsp;&nbsp;\this)&nbsp;is&nbsp;preserved&nbsp;by&nbsp;literal&nbsp;blocks.</samp>
-<br>
-<br><samp>&nbsp;&nbsp;The&nbsp;paragraph&nbsp;containing&nbsp;only&nbsp;'::'</samp>
-<br><samp>&nbsp;&nbsp;will&nbsp;be&nbsp;omitted&nbsp;from&nbsp;the&nbsp;result.</samp>
-<br>
-<br><samp>The&nbsp;``::``&nbsp;may&nbsp;be&nbsp;tacked&nbsp;onto&nbsp;the&nbsp;very</samp>
-<br><samp>end&nbsp;of&nbsp;any&nbsp;paragraph.&nbsp;The&nbsp;``::``&nbsp;will&nbsp;be</samp>
-<br><samp>omitted&nbsp;if&nbsp;it&nbsp;is&nbsp;preceded&nbsp;by&nbsp;whitespace.</samp>
-<br><samp>The&nbsp;``::``&nbsp;will&nbsp;be&nbsp;converted&nbsp;to&nbsp;a&nbsp;single</samp>
-<br><samp>colon&nbsp;if&nbsp;preceded&nbsp;by&nbsp;text,&nbsp;like&nbsp;this::</samp>
-<br>
-<br><samp>&nbsp;&nbsp;It's&nbsp;very&nbsp;convenient&nbsp;to&nbsp;use&nbsp;this&nbsp;form.</samp>
-<br>
-<br><samp>Literal&nbsp;blocks&nbsp;end&nbsp;when&nbsp;text&nbsp;returns&nbsp;to</samp>
-<br><samp>the&nbsp;preceding&nbsp;paragraph's&nbsp;indentation.</samp>
-<br><samp>This&nbsp;means&nbsp;that&nbsp;something&nbsp;like::</samp>
-<br>
-<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;We&nbsp;start&nbsp;here</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;continue&nbsp;here</samp>
-<br><samp>&nbsp;&nbsp;and&nbsp;end&nbsp;here.</samp>
-<br>
-<br><samp>is&nbsp;possible.</samp>
-
- <td>
- <p>A paragraph containing only two colons
-indicates that the following indented
-text is a literal block.
-
- <pre>
- 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.</pre>
-
- <p>The <samp>::</samp> may be tacked onto the very
-end of any paragraph. The <samp>::</samp> will be
-omitted if it is preceded by whitespace.
-The <samp>::</samp> will be converted to a single
-colon if preceded by text, like this:
-
- <pre>
- It's very convenient to use this form.</pre>
-
- <p>Literal blocks end when text returns to
-the preceding paragraph's indentation.
-This means that something like:
-
- <pre>
- We start here
- and continue here
- and end here.</pre>
-
- <p>is possible.
- </table>
-
- <h2><a href="#contents" name="block-quotes" class="backref"
- >Block Quotes</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#block-quotes">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<samp>Block&nbsp;quotes&nbsp;are&nbsp;just:</samp>
-
-<p><samp>&nbsp;&nbsp;&nbsp;&nbsp;Indented&nbsp;paragraphs,</samp>
-
-<p><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;they&nbsp;may&nbsp;nest.</samp>
- <td>
- Block quotes are just:
- <blockquote>
- <p>Indented paragraphs,
- <blockquote>
- <p>and they may nest.
- </blockquote>
- </blockquote>
- </table>
-
- <h2><a href="#contents" name="doctest-blocks" class="backref"
- >Doctest Blocks</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#doctest-blocks">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
- <p><samp>Doctest&nbsp;blocks&nbsp;are&nbsp;interactive
-<br>Python&nbsp;sessions.&nbsp;They&nbsp;begin&nbsp;with
-<br>"``&gt;&gt;&gt;``"&nbsp;and&nbsp;end&nbsp;with&nbsp;a&nbsp;blank&nbsp;line.</samp>
-
- <p><samp>&gt;&gt;&gt;&nbsp;print&nbsp;"This&nbsp;is&nbsp;a&nbsp;doctest&nbsp;block."
-<br>This&nbsp;is&nbsp;a&nbsp;doctest&nbsp;block.</samp>
-
- <td>
- <p>Doctest blocks are interactive
- Python sessions. They begin with
- "<samp>&gt;&gt;&gt;</samp>" and end with a blank line.
-
- <p><samp>&gt;&gt;&gt;&nbsp;print&nbsp;"This&nbsp;is&nbsp;a&nbsp;doctest&nbsp;block."
-<br>This&nbsp;is&nbsp;a&nbsp;doctest&nbsp;block.</samp>
- </table>
-
- <p>"The <a
- href="http://www.python.org/doc/current/lib/module-doctest.html">doctest</a>
- 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.)
-
- <h2><a href="#contents" name="tables" class="backref"
- >Tables</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#tables">details</a>)
-
- <p>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.).</p>
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
-<p><samp>Grid table:</samp></p>
-
-<p><samp>+------------+------------+-----------+</samp>
-<br><samp>|&nbsp;Header&nbsp;1&nbsp;&nbsp;&nbsp;|&nbsp;Header&nbsp;2&nbsp;&nbsp;&nbsp;|&nbsp;Header&nbsp;3&nbsp;&nbsp;|</samp>
-<br><samp>+============+============+===========+</samp>
-<br><samp>|&nbsp;body&nbsp;row&nbsp;1&nbsp;|&nbsp;column&nbsp;2&nbsp;&nbsp;&nbsp;|&nbsp;column&nbsp;3&nbsp;&nbsp;|</samp>
-<br><samp>+------------+------------+-----------+</samp>
-<br><samp>|&nbsp;body&nbsp;row&nbsp;2&nbsp;|&nbsp;Cells&nbsp;may&nbsp;span&nbsp;columns.|</samp>
-<br><samp>+------------+------------+-----------+</samp>
-<br><samp>|&nbsp;body&nbsp;row&nbsp;3&nbsp;|&nbsp;Cells&nbsp;may&nbsp;&nbsp;|&nbsp;-&nbsp;Cells&nbsp;&nbsp;&nbsp;|</samp>
-<br><samp>+------------+&nbsp;span&nbsp;rows.&nbsp;|&nbsp;-&nbsp;contain&nbsp;|</samp>
-<br><samp>|&nbsp;body&nbsp;row&nbsp;4&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;-&nbsp;blocks.&nbsp;|</samp>
-<br><samp>+------------+------------+-----------+</samp></p>
- <td>
- <p>Grid table:</p>
- <table border="1">
- <tr valign="top">
- <th>Header 1
- <th>Header 2
- <th>Header 3
- <tr>
- <td>body row 1
- <td>column 2
- <td>column 3
- <tr>
- <td>body row 2
- <td colspan="2">Cells may span columns.
- <tr valign="top">
- <td>body row 3
- <td rowspan="2">Cells may<br>span rows.
- <td rowspan="2">
- <ul>
- <li>Cells
- <li>contain
- <li>blocks.
- </ul>
- <tr valign="top">
- <td>body row 4
- </table>
- <tr valign="top">
- <td>
-<p><samp>Simple table:</samp></p>
-
-<p><samp>=====&nbsp;&nbsp;=====&nbsp;&nbsp;======</samp>
-<br><samp>&nbsp;&nbsp;&nbsp;Inputs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output</samp>
-<br><samp>------------&nbsp;&nbsp;------</samp>
-<br><samp>&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;or&nbsp;B</samp>
-<br><samp>=====&nbsp;&nbsp;=====&nbsp;&nbsp;======</samp>
-<br><samp>False&nbsp;&nbsp;False&nbsp;&nbsp;False</samp>
-<br><samp>True&nbsp;&nbsp;&nbsp;False&nbsp;&nbsp;True</samp>
-<br><samp>False&nbsp;&nbsp;True&nbsp;&nbsp;&nbsp;True</samp>
-<br><samp>True&nbsp;&nbsp;&nbsp;True&nbsp;&nbsp;&nbsp;True</samp>
-<br><samp>=====&nbsp;&nbsp;=====&nbsp;&nbsp;======</samp></p>
-
- <td>
- <p>Simple table:</p>
- <table frame="border" rules="all">
- <colgroup>
- <col colwidth="31%" />
- <col colwidth="31%" />
- <col colwidth="38%" />
- </colgroup>
- <thead valign="bottom">
- <tr>
- <th colspan="2">Inputs
- <th>Output
- <tr>
- <th>A
- <th>B
- <th>A or B
- <tbody valign="top">
- <tr>
- <td>False
- <td>False
- <td>False
- <tr>
- <td>True
- <td>False
- <td>True
- <tr>
- <td>False
- <td>True
- <td>True
- <tr>
- <td>True
- <td>True
- <td>True
- </table>
-
- </table>
-
- <h2><a href="#contents" name="transitions" class="backref"
- >Transitions</a></h2>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#transitions">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td>
- <p><samp>
-A&nbsp;transition&nbsp;marker&nbsp;is&nbsp;a&nbsp;horizontal&nbsp;line
-<br>of&nbsp;4&nbsp;or&nbsp;more&nbsp;repeated&nbsp;punctuation
-<br>characters.</samp>
-
- <p><samp>------------</samp>
-
- <p><samp>A&nbsp;transition&nbsp;should&nbsp;not&nbsp;begin&nbsp;or&nbsp;end&nbsp;a
-<br>section&nbsp;or&nbsp;document,&nbsp;nor&nbsp;should&nbsp;two
-<br>transitions&nbsp;be&nbsp;immediately&nbsp;adjacent.</samp>
-
- <td>
- <p>A transition marker is a horizontal line
- of 4 or more repeated punctuation
- characters.</p>
-
- <hr>
-
- <p>A transition should not begin or end a
- section or document, nor should two
- transitions be immediately adjacent.
- </table>
-
- <p>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.
-
- <h2><a href="#contents" name="explicit-markup" class="backref"
- >Explicit Markup</a></h2>
-
- <p>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".
-
- <h3><a href="#contents" name="footnotes" class="backref"
- >Footnotes</a></h3>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#footnotes">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
-
- <tr valign="top">
- <td>
- <samp>Footnote&nbsp;references,&nbsp;like&nbsp;[5]_.</samp>
- <br><samp>Note&nbsp;that&nbsp;footnotes&nbsp;may&nbsp;get</samp>
- <br><samp>rearranged,&nbsp;e.g.,&nbsp;to&nbsp;the&nbsp;bottom&nbsp;of</samp>
- <br><samp>the&nbsp;"page".</samp>
-
- <p><samp>..&nbsp;[5]&nbsp;A&nbsp;numerical&nbsp;footnote.&nbsp;Note</samp>
- <br><samp>&nbsp;&nbsp;&nbsp;there's&nbsp;no&nbsp;colon&nbsp;after&nbsp;the&nbsp;``]``.</samp>
-
- <td>
- Footnote references, like <sup><a href="#5">5</a></sup>.
- Note that footnotes may get rearranged, e.g., to the bottom of
- the "page".
-
- <p><table>
- <tr><td colspan="2"><hr>
- <!-- <tr><td colspan="2">Footnotes: -->
- <tr><td><a name="5"><strong>[5]</strong></a><td> A numerical footnote.
- Note there's no colon after the <samp>]</samp>.
- </table>
-
- <tr valign="top">
- <td>
- <samp>Autonumbered&nbsp;footnotes&nbsp;are</samp>
- <br><samp>possible,&nbsp;like&nbsp;using&nbsp;[#]_&nbsp;and&nbsp;[#]_.</samp>
- <p><samp>..&nbsp;[#]&nbsp;This&nbsp;is&nbsp;the&nbsp;first&nbsp;one.</samp>
- <br><samp>..&nbsp;[#]&nbsp;This&nbsp;is&nbsp;the&nbsp;second&nbsp;one.</samp>
-
- <p><samp>They&nbsp;may&nbsp;be&nbsp;assigned&nbsp;'autonumber</samp>
- <br><samp>labels'&nbsp;-&nbsp;for&nbsp;instance,
- <br>[#fourth]_&nbsp;and&nbsp;[#third]_.</samp>
-
- <p><samp>..&nbsp;[#third]&nbsp;a.k.a.&nbsp;third_</samp>
- <p><samp>..&nbsp;[#fourth]&nbsp;a.k.a.&nbsp;fourth_</samp>
- <td>
- Autonumbered footnotes are possible, like using <sup><a
- href="#auto1">1</a></sup> and <sup><a href="#auto2">2</a></sup>.
-
- <p>They may be assigned 'autonumber labels' - for instance,
- <sup><a href="#fourth">4</a></sup> and <sup><a
- href="#third">3</a></sup>.
-
- <p><table>
- <tr><td colspan="2"><hr>
- <!-- <tr><td colspan="2">Footnotes: -->
- <tr><td><a name="auto1"><strong>[1]</strong></a><td> This is the first one.
- <tr><td><a name="auto2"><strong>[2]</strong></a><td> This is the second one.
- <tr><td><a name="third"><strong>[3]</strong></a><td> a.k.a. <a href="#third">third</a>
- <tr><td><a name="fourth"><strong>[4]</strong></a><td> a.k.a. <a href="#fourth">fourth</a>
- </table>
-
- <tr valign="top">
- <td>
- <samp>Auto-symbol&nbsp;footnotes&nbsp;are&nbsp;also</samp>
- <br><samp>possible,&nbsp;like&nbsp;this:&nbsp;[*]_&nbsp;and&nbsp;[*]_.</samp>
- <p><samp>..&nbsp;[*]&nbsp;This&nbsp;is&nbsp;the&nbsp;first&nbsp;one.</samp>
- <br><samp>..&nbsp;[*]&nbsp;This&nbsp;is&nbsp;the&nbsp;second&nbsp;one.</samp>
-
- <td>
- Auto-symbol footnotes are also
- possible, like this: <sup><a href="#symbol1">*</a></sup>
- and <sup><a href="#symbol2">&dagger;</a></sup>.
-
- <p><table>
- <tr><td colspan="2"><hr>
- <!-- <tr><td colspan="2">Footnotes: -->
- <tr><td><a name="symbol1"><strong>[*]</strong></a><td> This is the first symbol footnote
- <tr><td><a name="symbol2"><strong>[&dagger;]</strong></a><td> This is the second one.
- </table>
-
- </table>
-
- <p>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
- ("<samp>[#]_</samp>"), the references and footnotes must be in the
- same relative order. Similarly for auto-symbol footnotes
- ("<samp>[*]_</samp>").
-
- <h3><a href="#contents" name="citations" class="backref"
- >Citations</a></h3>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#citations">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
-
- <tr valign="top">
- <td>
- <samp>Citation&nbsp;references,&nbsp;like&nbsp;[CIT2002]_.</samp>
- <br><samp>Note&nbsp;that&nbsp;citations&nbsp;may&nbsp;get</samp>
- <br><samp>rearranged,&nbsp;e.g.,&nbsp;to&nbsp;the&nbsp;bottom&nbsp;of</samp>
- <br><samp>the&nbsp;"page".</samp>
-
- <p><samp>..&nbsp;[CIT2002]&nbsp;A&nbsp;citation</samp>
- <br><samp>&nbsp;&nbsp;&nbsp;(as&nbsp;often&nbsp;used&nbsp;in&nbsp;journals).</samp>
-
- <p><samp>Citation&nbsp;labels&nbsp;contain&nbsp;alphanumerics,</samp>
- <br><samp>underlines,&nbsp;hyphens&nbsp;and&nbsp;fullstops.</samp>
- <br><samp>Case&nbsp;is&nbsp;not&nbsp;significant.</samp>
-
- <p><samp>Given&nbsp;a&nbsp;citation&nbsp;like&nbsp;[this]_,&nbsp;one</samp>
- <br><samp>can&nbsp;also&nbsp;refer&nbsp;to&nbsp;it&nbsp;like&nbsp;this_.</samp>
-
- <p><samp>..&nbsp;[this]&nbsp;here.</samp>
-
- <td>
- Citation references, like <a href="#cit2002">[CIT2002]</a>.
- Note that citations may get rearranged, e.g., to the bottom of
- the "page".
-
- <p>Citation labels contain alphanumerics, underlines, hyphens
- and fullstops. Case is not significant.
-
- <p>Given a citation like <a href="#this">[this]</a>, one
- can also refer to it like <a href="#this">this</a>.
-
- <p><table>
- <tr><td colspan="2"><hr>
- <!-- <tr><td colspan="2">Citations: -->
- <tr><td><a name="cit2002"><strong>[CIT2002]</strong></a><td> A citation
- (as often used in journals).
- <tr><td><a name="this"><strong>[this]</strong></a><td> here.
- </table>
-
- </table>
-
- <h3><a href="#contents" name="hyperlink-targets" class="backref"
- >Hyperlink Targets</a></h3>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#hyperlink-targets">details</a>)
-
- <h4><a href="#contents" name="external-hyperlink-targets" class="backref"
- >External Hyperlink Targets</a></h4>
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
-
- <tr valign="top">
- <td>
- <samp>External&nbsp;hyperlinks,&nbsp;like&nbsp;Python_.</samp>
-
- <p><samp>..&nbsp;_Python:&nbsp;http://www.python.org/</samp>
- <td>
- <table width="100%">
- <tr bgcolor="#99CCFF"><td><em>Fold-in form</em>
- <tr><td>Indirect hyperlinks, like
- <a href="http://www.python.org">Python</a>.
- <tr bgcolor="#99CCFF"><td><em>Call-out form</em>
- <tr><td>External hyperlinks, like
- <a href="#labPython"><i>Python</i></a>.
-
- <p><table>
- <tr><td colspan="2"><hr>
- <tr><td><a name="labPython"><i>Python:</i></a>
- <td> <a href="http://www.python.org/">http://www.python.org/</a>
- </table>
- </table>
- </table>
-
- <p>"<em>Fold-in</em>" is the representation typically used in HTML
- documents (think of the indirect hyperlink being "folded in" like
- ingredients into a cake), and "<em>call-out</em>" is more suitable for
- printed documents, where the link needs to be presented explicitly, for
- example as a footnote.
-
- <h4><a href="#contents" name="internal-hyperlink-targets" class="backref"
- >Internal Hyperlink Targets</a></h4>
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
-
- <tr valign="top">
- <td><samp>Internal&nbsp;crossreferences,&nbsp;like&nbsp;example_.</samp>
-
- <p><samp>..&nbsp;_example:</samp>
-
- <p><samp>This&nbsp;is&nbsp;an&nbsp;example&nbsp;crossreference&nbsp;target.</samp>
- <td>
- <table width="100%">
- <tr bgcolor="#99CCFF"><td><em>Fold-in form</em>
- <!-- Note that some browsers may not like an "a" tag that -->
- <!-- does not have any content, so we could arbitrarily -->
- <!-- use the first word as content - *or* just trust to -->
- <!-- luck! -->
- <tr><td>Internal crossreferences, like <a href="#example-foldin">example</a>
- <p><a name="example-foldin">This</a> is an example
- crossreference target.
- <tr><td bgcolor="#99CCFF"><em>Call-out form</em>
- <tr><td>Internal crossreferences, like <a href="#example-callout">example</a>
-
- <p><a name="example-callout"><i>example:</i></a>
- <br>This is an example crossreference target.
- </table>
-
- </table>
-
- <h4><a href="#contents" name="indirect-hyperlink-targets" class="backref"
- >Indirect Hyperlink Targets</a></h4>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#indirect-hyperlink-targets">details</a>)
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
-
- <tr valign="top">
- <td>
- <samp>Python_&nbsp;is&nbsp;`my&nbsp;favourite
-<br>programming&nbsp;language`__.</samp>
-
- <p><samp>..&nbsp;_Python:&nbsp;http://www.python.org/</samp>
-
- <p><samp>__&nbsp;Python_</samp>
-
- <td>
- <p><a href="http://www.python.org/">Python</a> is
- <a href="http://www.python.org/">my favourite
- programming language</a>.
-
- </table>
-
- <p>The second hyperlink target (the line beginning with
- "<samp>__</samp>") is both an indirect hyperlink target
- (<i>indirectly</i> pointing at the Python website via the
- "<samp>Python_</samp>" reference) and an <b>anonymous hyperlink
- target</b>. In the text, a double-underscore suffix is used to
- indicate an <b>anonymous hyperlink reference</b>. 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.
-
- <h4><a href="#contents" name="implicit-hyperlink-targets" class="backref"
- >Implicit Hyperlink Targets</a></h4>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#implicit-hyperlink-targets">details</a>)
-
- <p>Section titles, footnotes, and citations automatically generate
- hyperlink targets (the title text or footnote/citation label is
- used as the hyperlink name).
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3"> <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
-
- <tr valign="top">
- <td>
- <samp>Titles&nbsp;are&nbsp;targets,&nbsp;too</samp>
- <br><samp>=======================</samp>
- <br><samp>Implict&nbsp;references,&nbsp;like&nbsp;`Titles&nbsp;are</samp>
- <br><samp>targets,&nbsp;too`_.</samp>
- <td>
- <font size="+2"><strong><a name="title">Titles are targets, too</a></strong></font>
- <p>Implict references, like <a href="#Title">Titles are
- targets, too</a>.
- </table>
-
- <h3><a href="#contents" name="directives" class="backref"
- >Directives</a></h3>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#directives">details</a>)
-
- <p>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 <a
- href="../../spec/rst/directives.html" >reStructuredText
- Directives</a>.
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td><samp>For&nbsp;instance:</samp>
-
- <p><samp>..&nbsp;image::&nbsp;images/ball1.gif</samp>
-
- <td>
- For instance:
- <p><img src="images/ball1.gif" alt="ball1">
- </table>
-
- <h3><a href="#contents" name="substitution-references-and-definitions"
- class="backref" >Substitution References and Definitions</a></h3>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#substitution-definitions">details</a>)
-
- <p>Substitutions are like inline directives, allowing graphics and
- arbitrary constructs within text.
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td><samp>
-The&nbsp;|biohazard|&nbsp;symbol&nbsp;must&nbsp;be
-used&nbsp;on&nbsp;containers&nbsp;used&nbsp;to
-dispose&nbsp;of&nbsp;medical&nbsp;waste.</samp>
-
- <p><samp>
-..&nbsp;|biohazard|&nbsp;image::&nbsp;biohazard.png</samp>
-
- <td>
-
- <p>The <img src="images/biohazard.png" align="bottom" alt="biohazard"> symbol
- must be used on containers used to dispose of medical waste.
-
- </table>
-
- <h3><a href="#contents" name="comments" class="backref"
- >Comments</a></h3>
-
- <p>(<a href="../../spec/rst/reStructuredText.html#comments">details</a>)
-
- <p>Any text which begins with an explicit markup start but doesn't
- use the syntax of any of the constructs above, is a comment.
-
- <p><table border="1" width="100%" bgcolor="#ffffcc" cellpadding="3">
- <thead>
- <tr align="left" bgcolor="#99CCFF">
- <th width="50%">Plain text
- <th width="50%">Typical result
- </thead>
- <tbody>
- <tr valign="top">
- <td><samp>..&nbsp;This&nbsp;text&nbsp;will&nbsp;not&nbsp;be&nbsp;shown</samp>
- <br><samp>&nbsp;&nbsp;&nbsp;(but,&nbsp;for&nbsp;instance,&nbsp;in&nbsp;HTML&nbsp;might&nbsp;be</samp>
- <br><samp>&nbsp;&nbsp;&nbsp;rendered&nbsp;as&nbsp;an&nbsp;HTML&nbsp;comment)</samp>
-
- <td>&nbsp;
- <!-- This text will not be shown -->
- <!-- (but, for instance in HTML might be -->
- <!-- rendered as an HTML comment) -->
-
- <tr valign="top">
- <td>
- <samp>An&nbsp;empty&nbsp;"comment"&nbsp;does&nbsp;not</samp>
- <br><samp>"consume"&nbsp;following&nbsp;blocks.</samp>
- <p><samp>..</samp>
- <p><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;So&nbsp;this&nbsp;block&nbsp;is&nbsp;not&nbsp;"lost",</samp>
- <br><samp>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;despite&nbsp;its&nbsp;indentation.</samp>
- <td>
- An empty "comment" does not
- "consume" following blocks.
- <blockquote>
- So this block is not "lost",
- despite its indentation.
- </blockquote>
- </table>
-
- <h2><a href="#contents" name="getting-help" class="backref"
- >Getting Help</a></h2>
-
- <p>Users who have questions or need assistance with Docutils or
- reStructuredText should <a
- href="mailto:docutils-users@lists.sourceforge.net" >post a
- message</a> to the <a
- href="http://lists.sourceforge.net/lists/listinfo/docutils-users"
- >Docutils-Users mailing list</a>. The <a
- href="http://docutils.sourceforge.net/" >Docutils project web
- site</a> has more information.
-
- <p><hr>
- <address>
- <p>Authors:
- <a href="http://www.tibsnjoan.co.uk/">Tibs</a>
- (<a href="mailto:tibs@tibsnjoan.co.uk"><tt>tibs@tibsnjoan.co.uk</tt></a>)
- and David Goodger
- (<a href="mailto:goodger@users.sourceforge.net">goodger@users.sourceforge.net</a>)
- </address>
- <!-- Created: Fri Aug 03 09:11:57 GMT Daylight Time 2001 -->
- </body>
-</html>
diff --git a/docutils/docs/user/rst/quickstart.txt b/docutils/docs/user/rst/quickstart.txt
deleted file mode 100644
index d936147b0..000000000
--- a/docutils/docs/user/rst/quickstart.txt
+++ /dev/null
@@ -1,382 +0,0 @@
-A ReStructuredText Primer
-=========================
-
-:Author: Richard Jones
-:Version: $Revision$
-:Copyright: This document has been placed in the public domain.
-
-.. contents::
-
-
-The text below contains links that look like "(quickref__)". These
-are relative links that point to the `Quick reStructuredText`_ user
-reference. If these links don't work, please refer to the `master
-quick reference`_ document.
-
-__
-.. _Quick reStructuredText: quickref.html
-.. _master quick reference:
- http://docutils.sourceforge.net/docs/rst/quickref.html
-
-
-Structure
----------
-
-From the outset, let me say that "Structured Text" is probably a bit
-of a misnomer. It's more like "Relaxed Text" that uses certain
-consistent patterns. These patterns are interpreted by a HTML
-converter to produce "Very Structured Text" that can be used by a web
-browser.
-
-The most basic pattern recognised is a **paragraph** (quickref__).
-That's a chunk of text that is separated by blank lines (one is
-enough). Paragraphs must have the same indentation -- that is, line
-up at their left edge. Paragraphs that start indented will result in
-indented quote paragraphs. For example::
-
- This is a paragraph. It's quite
- short.
-
- This paragraph will result in an indented block of
- text, typically used for quoting other text.
-
- This is another one.
-
-Results in:
-
- This is a paragraph. It's quite
- short.
-
- This paragraph will result in an indented block of
- text, typically used for quoting other text.
-
- This is another one.
-
-__ quickref.html#paragraphs
-
-Text styles
------------
-
-(quickref__)
-
-__ quickref.html#inline-markup
-
-Inside paragraphs and other bodies of text, you may additionally mark
-text for *italics* with "``*italics*``" or **bold** with
-"``**bold**``".
-
-If you want something to appear as a fixed-space literal, use
-"````double back-quotes````". Note that no further fiddling is done
-inside the double back-quotes -- so asterisks "``*``" etc. are left
-alone.
-
-If you find that you want to use one of the "special" characters in
-text, it will generally be OK -- reStructuredText is pretty smart.
-For example, this * asterisk is handled just fine. If you actually
-want text \*surrounded by asterisks* to **not** be italicised, then
-you need to indicate that the asterisk is not special. You do this by
-placing a backslash just before it, like so "``\*``" (quickref__), or
-by enclosing it in double back-quotes (inline literals), like this::
-
- ``\*``
-
-__ quickref.html#escaping
-
-Lists
------
-
-Lists of items come in three main flavours: **enumerated**,
-**bulleted** and **definitions**. In all list cases, you may have as
-many paragraphs, sublists, etc. as you want, as long as the left-hand
-side of the paragraph or whatever aligns with the first line of text
-in the list item.
-
-Lists must always start a new paragraph -- that is, they must appear
-after a blank line.
-
-**enumerated** lists (numbers, letters or roman numerals; quickref__)
- __ quickref.html#enumerated-lists
-
- Start a line off with a number or letter followed by a period ".",
- right bracket ")" or surrounded by brackets "( )" -- whatever you're
- comfortable with. All of the following forms are recognised::
-
- 1. numbers
-
- A. upper-case letters
- and it goes over many lines
-
- with two paragraphs and all!
-
- a. lower-case letters
-
- 3. with a sub-list starting at a different number
- 4. make sure the numbers are in the correct sequence though!
-
- I. upper-case roman numerals
-
- i. lower-case roman numerals
-
- (1) numbers again
-
- 1) and again
-
- Results in (note: the different enumerated list styles are not
- always supported by every web browser, so you may not get the full
- effect here):
-
- 1. numbers
-
- A. upper-case letters
- and it goes over many lines
-
- with two paragraphs and all!
-
- a. lower-case letters
-
- 3. with a sub-list starting at a different number
- 4. make sure the numbers are in the correct sequence though!
-
- I. upper-case roman numerals
-
- i. lower-case roman numerals
-
- (1) numbers again
-
- 1) and again
-
-**bulleted** lists (quickref__)
- __ quickref.html#bullet-lists
-
- Just like enumerated lists, start the line off with a bullet point
- character - either "-", "+" or "*"::
-
- * a bullet point using "*"
-
- - a sub-list using "-"
-
- + yet another sub-list
-
- - another item
-
- Results in:
-
- * a bullet point using "*"
-
- - a sub-list using "-"
-
- + yet another sub-list
-
- - another item
-
-**definition** lists (quickref__)
- __ quickref.html#definition-lists
-
- Unlike the other two, the definition lists consist of a term, and
- the definition of that term. The format of a definition list is::
-
- 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.
-
- Results in:
-
- 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.
-
-Preformatting (code samples)
-----------------------------
-(quickref__)
-
-__ quickref.html#literal-blocks
-
-To just include a chunk of preformatted, never-to-be-fiddled-with
-text, finish the prior paragraph with "``::``". The preformatted
-block is finished when the text falls back to the same indentation
-level as a paragraph prior to the preformatted block. For example::
-
- An example::
-
- Whitespace, newlines, blank lines, and all kinds of markup
- (like *this* or \this) is preserved by literal blocks.
- Lookie here, I've dropped an indentation level
- (but not far enough)
-
- no more example
-
-Results in:
-
- An example::
-
- Whitespace, newlines, blank lines, and all kinds of markup
- (like *this* or \this) is preserved by literal blocks.
- Lookie here, I've dropped an indentation level
- (but not far enough)
-
- no more example
-
-Note that if a paragraph consists only of "``::``", then it's removed
-from the output::
-
- ::
-
- This is preformatted text, and the
- last "::" paragraph is removed
-
-Results in:
-
-::
-
- This is preformatted text, and the
- last "::" paragraph is removed
-
-Sections
---------
-
-(quickref__)
-
-__ quickref.html#section-structure
-
-To break longer text up into sections, you use **section headers**.
-These are a single line of text (one or more words) with adornment: an
-underline alone, or an overline and an overline together, in dashes
-"``-----``", equals "``======``", tildes "``~~~~~~``" or any of the
-non-alphanumeric characters ``= - ` : ' " ~ ^ _ * + # < >`` that you
-feel comfortable with. An underline-only adornment is distinct from
-an overline-and-underline adornment using the same character. The
-underline/overline must be at least as long as the title text. Be
-consistent, since all sections marked with the same adornment style
-are deemed to be at the same level::
-
- Chapter 1 Title
- ===============
-
- Section 1.1 Title
- -----------------
-
- Subsection 1.1.1 Title
- ~~~~~~~~~~~~~~~~~~~~~~
-
- Section 1.2 Title
- -----------------
-
- Chapter 2 Title
- ===============
-
-This results in the following structure, illustrated by simplified
-pseudo-XML::
-
- <section>
- <title>
- Chapter 1 Title
- <section>
- <title>
- Section 1.1 Title
- <section>
- <title>
- Subsection 1.1.1 Title
- <section>
- <title>
- Section 1.2 Title
- <section>
- <title>
- Chapter 2 Title
-
-(Pseudo-XML uses indentation for nesting and has no end-tags. It's
-not possible to show actual processed output, as in the other
-examples, because sections cannot exist inside block quotes. For a
-concrete example, compare the section structure of this document's
-source text and processed output.)
-
-Note that section headers are available as link targets, just using
-their name. To link to the Lists_ heading, I write "``Lists_``". If
-the heading has a space in it like `text styles`_, we need to quote
-the heading "```text styles`_``".
-
-To indicate the document title, use a unique adornment style at the
-beginning of the document. To indicate the document subtitle, use
-another unique adornment style immediately after the document title.
-For example::
-
- ================
- Document Title
- ================
- ----------
- Subtitle
- ----------
-
- Section Title
- =============
-
- ...
-
-Note that "Document Title" and "Section Title" both use equals signs,
-but are distict and unrelated styles. The text of
-overline-and-underlined titles (but not underlined-only) may be inset
-for aesthetics.
-
-
-Images
-------
-
-(quickref__)
-
-__ quickref.html#directives
-
-To include an image in your document, you use the the ``image`` directive__.
-For example::
-
- .. image:: images/biohazard.png
-
-results in:
-
-.. image:: images/biohazard.png
-
-The ``images/biohazard.png`` part indicates the filename of the image
-you wish to appear in the document. There's no restriction placed on
-the image (format, size etc). If the image is to appear in HTML and
-you wish to supply additional information, you may::
-
- .. image:: images/biohazard.png
- :height: 100
- :width: 200
- :scale: 50
- :alt: alternate text
-
-See the full image directive documentation__ for more info.
-
-__ ../../spec/rst/directives.html
-__ ../../spec/rst/directives.html#images
-
-
-What Next?
-----------
-
-This primer introduces the most common features of reStructuredText,
-but there are a lot more to explore. The `Quick reStructuredText`_
-user reference is a good place to go next. For complete details, the
-`reStructuredText Markup Specification`_ is the place to go [#]_.
-
-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.
-
-.. [#] If that relative link doesn't work, try the master document:
- http://docutils.sourceforge.net/spec/rst/reStructuredText.html.
-
-.. _reStructuredText Markup Specification:
- ../../spec/rst/reStructuredText.html
-.. _post a message: mailto:docutils-users@lists.sourceforge.net
-.. _Docutils-Users mailing list:
- http://lists.sourceforge.net/lists/listinfo/docutils-users
-.. _Docutils project web site: http://docutils.sourceforge.net/
diff --git a/docutils/docs/user/tools.txt b/docutils/docs/user/tools.txt
deleted file mode 100644
index b9af291f6..000000000
--- a/docutils/docs/user/tools.txt
+++ /dev/null
@@ -1,724 +0,0 @@
-==========================
- Docutils Front-End Tools
-==========================
-
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Revision: $Revision$
-:Date: $Date$
-:Copyright: This document has been placed in the public domain.
-
-.. contents::
-
-
-Introduction
-============
-
-Once the Docutils package is unpacked, you will discover a "``tools``"
-directory containing several front ends for common Docutils
-processing. Rather than a single all-purpose program, Docutils has
-many small front ends, each specialized for a specific "Reader" (which
-knows how to interpret a file in context), a "Parser" (which
-understands the syntax of the text), and a "Writer" (which knows how
-to generate a specific data format). Most front ends have common
-options and the same command-line usage pattern::
-
- toolname [options] [<source> [<destination]]
-
-The exceptions are buildhtml.py_ and pep2html.py_. See html.py_ for
-concrete examples. Each tool has a "``--help``" option which lists
-the `command-line options`_ and arguments it supports. Processing can
-also be customized with `configuration files`_.
-
-The two arguments, "source" and "destination", are optional. If only
-one argument (source) is specified, the standard output (stdout) is
-used for the destination. If no arguments are specified, the standard
-input (stdin) is used for the source as well.
-
-
-Getting Help
-------------
-
-First, try the "``--help``" option each front-end tool has.
-
-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.
-
-.. _post a message: mailto:docutils-users@lists.sourceforge.net
-.. _Docutils-Users mailing list:
- http://lists.sourceforge.net/lists/listinfo/docutils-users
-.. _Docutils project web site: http://docutils.sourceforge.net/
-
-
-The Tools
-=========
-
-buildhtml.py
-------------
-
-:Readers: Standalone, PEP
-:Parser: reStructuredText
-:Writers: HTML, PEP/HTML
-
-Use ``buildhtml.py`` to generate .html from all the .txt files
-(including PEPs) in each <directory> given, and their subdirectories
-too. (Use the ``--local`` option to skip subdirectories.)
-
-Usage::
-
- buildhtml.py [options] [<directory> ...]
-
-After unpacking the Docutils package, the following shell commands
-will generate HTML for all included documentation::
-
- cd docutils/tools
- buildhtml.py ..
-
-For official releases, the directory may be called "docutils-X.Y",
-where "X.Y" is the release version. Alternatively::
-
- cd docutils
- tools/buildhtml.py --config=tools/docutils.conf
-
-The current directory (and all subdirectories) is chosen by default if
-no directory is named. Some files may generate system messages
-(tools/test.txt contains intentional errors); use the ``--quiet``
-option to suppress all warnings. The ``--config`` option ensures that
-the correct stylesheets, templates, and settings are in place
-(``./docutils.conf`` is picked up automatically). Command-line
-options may be used to override config file settings or replace them
-altogether.
-
-
-html.py
--------
-
-:Reader: Standalone
-:Parser: reStructuredText
-:Writer: HTML
-
-The ``html.py`` front end reads standalone reStructuredText source
-files and produces HTML 4 (XHTML 1) output compatible with modern
-browsers. For example, to process a reStructuredText file
-"``test.txt``" into HTML::
-
- html.py test.txt test.html
-
-In fact, there *is* a "``test.txt``" file in the "``tools``"
-directory. It contains "at least one example of each reStructuredText
-construct", including intentional errors. Use it to put the system
-through its paces and compare input to output.
-
-Now open the "``test.html``" file in your favorite browser to see the
-results. To get a footer with a link to the source file, date & time
-of processing, and links to the Docutils projects, add some options::
-
- html.py -stg test.txt test.html
-
-
-Stylesheets
-```````````
-
-``html.py`` inserts into the generated HTML a link to a cascading
-stylesheet, defaulting to "``default.css``" (override with a
-"``--stylesheet``" or "``--stylesheet-path``" command-line option or
-with configuration file settings). The
-"``tools/stylesheets/default.css``" stylesheet is provided for basic
-use. To experiment with styles, rather than editing the default
-stylesheet (which will be updated as the project evolves), it is
-recommended to use an "``@import``" statement to create a "wrapper"
-stylesheet. For example, a "``my.css``" stylesheet could contain the
-following::
-
- @import url(default.css);
-
- h1, h2, h3, h4, h5, h6, p.topic-title {
- font-family: sans-serif }
-
-Generate HTML with the following command::
-
- html.py -stg --stylesheet my.css test.txt test.html
-
-When viewed in a browser, the new "wrapper" stylesheet will change the
-typeface family of titles to "sans serif", typically Helvetica or
-Arial. Other styles will not be affected. Styles in wrapper
-stylesheets override styles in imported stylesheets, enabling
-incremental experimentation.
-
-
-pep.py
-------
-
-:Reader: PEP
-:Parser: reStructuredText
-:Writer: PEP/HTML
-
-``pep.py`` reads a new-style PEP (marked up with reStructuredText) and
-produces HTML. It requires a template file and a stylesheet. By
-default, it makes use of a "``pep-html-template``" file and a
-"``default.css``" stylesheet in the current directory, but these can
-be overridden by command-line options or configuration files. The
-"``tools/stylesheets/pep.css``" stylesheet is intended specifically
-for PEP use.
-
-The "``docutils.conf``" `configuration file`_ in the "``spec``"
-directory of Docutils contains a default setup for use in processing
-the PEP files there (``spec/pep-*.txt``) into HTML. It specifies a
-default template (``tools/pep-html-template``) and a default
-stylesheet (``tools/stylesheets/pep.css``). See Stylesheets_ above
-for more information.
-
-
-pep2html.py
------------
-
-:Reader: PEP
-:Parser: reStructuredText
-:Writer: PEP/HTML
-
-``pep2html.py`` is a modified version of the original script by
-Fredrik Lundh, with support for Docutils added. It reads the
-beginning of a PEP text file to determine the format (old-style
-indented or new-style reStructuredText) and processes accordingly.
-Since it does not use the Docutils front end mechanism (the common
-command-line options are not supported), it must be configured using
-`configuration files`_. The template and stylesheet requirements of
-``pep2html.py`` are the same as those of `pep.py`_ above.
-
-Arguments to ``pep2html.py`` may be a list of PEP numbers or .txt
-files. If no arguments are given, all files of the form
-"``pep-*.txt``" are processed.
-
-
-rst2latex.py
-------------
-
-:Reader: Standalone
-:Parser: reStructuredText
-:Writer: LaTeX2e
-
-The ``rst2latex.py`` front end reads standalone reStructuredText
-source files and produces LaTeX2e output. For example, to process a
-reStructuredText file "``test.txt``" into LaTeX::
-
- rst2latex.py test.txt test.tex
-
-The output file "``test.tex``" should then be processed with ``latex``
-or ``pdflatex`` to get a typeset document.
-
-Some limitations and difference apply:
-
-- Gif,jpg or png images are not handled, when processed with
- ``latex``, use ``pdflatex`` instead.
-- Only Latin-1 is tested up to now.
-- The generated file includes a file ``style.tex``, which allows the
- inclusion of special packages or changes to settings made in the
- header.
-- Not all constructs are possible (e.g. multirow/multicoumn entries in
- tables are not).
-
-
-docutils-xml.py
----------------
-
-:Reader: Standalone
-:Parser: reStructuredText
-:Writer: XML (Docutils native)
-
-The ``docutils-xml.py`` front end produces Docutils-native XML output.
-This can be transformed with standard XML tools such as XSLT
-processors into arbitrary final forms.
-
-
-publish.py
-----------
-
-:Reader: Standalone
-:Parser: reStructuredText
-:Writer: Pseudo-XML
-
-``publish.py`` is used for debugging the Docutils Reader to Transform
-to Writer pipeline. It produces a compact pretty-printed
-"pseudo-XML", where nesting is indicated by indentation (no end-tags).
-External attributes for all elements are output, and internal
-attributes for any leftover "pending" elements are also given.
-
-
-quicktest.py
-------------
-
-:Reader: N/A
-:Parser: reStructuredText
-:Writer: N/A
-
-The ``quicktest.py`` tool is used for testing the reStructuredText
-parser. It does not use a Docutils Reader or Writer or the standard
-Docutils command-line options. Rather, it does its own I/O and calls
-the parser directly. No transforms are applied to the parsed
-document. Various forms output are possible:
-
-- Pretty-printed pseudo-XML (default)
-- Test data (Python list of input and pseudo-XML output strings;
- useful for creating new test cases)
-- Pretty-printed native XML
-- Raw native XML (with or without a stylesheet reference)
-
-
-
-Customization
-=============
-
-Command-Line Options
---------------------
-
-Each front-end tool supports command-line options for one-off
-customization. For persistent customization, use `configuration
-files`_.
-
-Use the "--help" option on each of the front ends to list the
-command-line options it supports. Command-line options and their
-corresponding configuration file entry names are listed in
-`Configuration File Entries`_ below.
-
-
-.. _configuration file:
-
-Configuration Files
--------------------
-
-Configuration files are used for persistent customization; they can be
-set once and take effect every time you use a front-end tool.
-
-By default, Docutils checks the following places for configuration
-files, in the following order:
-
-1. ``/etc/docutils.conf``: This is a system-wide configuration file,
- applicable to all Docutils processing on the system.
-
-2. ``./docutils.conf``: This is a project-specific configuration file,
- located in the current directory. The Docutils front end has to be
- executed from the directory containing this configuration file for
- it to take effect (note that this may have nothing to do with the
- location of the source files). Settings in the project-specific
- configuration file will override corresponding settings in the
- system-wide file.
-
-3. ``~/.docutils``: This is a user-specific configuration file,
- located in the user's home directory. Settings in this file will
- override corresponding settings in both the system-wide and
- project-specific configuration files.
-
-If more than one configuration file is found, all will be read but
-later entries will override earlier ones. For example, a "stylesheet"
-entry in a user-specific configuration file will override a
-"stylesheet" entry in the system-wide file.
-
-In addition, a configuration file may be explicitly specified with the
-"--config" command-line option. This configuration file is read after
-the three implicit ones listed above.
-
-Configuration files use the standard ConfigParser.py_ Python_ module.
-From its documentation:
-
- The configuration file consists of sections, lead by a "[section]"
- header and followed by "name: value" entries, with continuations
- in the style of `RFC 822`_; "name=value" is also accepted. Note
- that leading whitespace is removed from values. The optional
- values can contain format strings which refer to other values in
- the same section, or values in a special DEFAULT section.
- Additional defaults can be provided upon initialization and
- retrieval. Lines beginning with "#" or ";" are ignored and may be
- used to provide comments.
-
-Docutils currently only uses an "[options]" section; all other
-sections are ignored.
-
-.. Note:: The configuration file format may change in the future.
-
-Configuration entry names correspond to internal option attributes.
-Underscores ("_") and hyphens ("-") can be used interchangably in
-entry names. The correspondence between entry names and command-line
-options is listed in `Configuration File Entries`_ below.
-
-.. _ConfigParser.py:
- http://www.python.org/doc/current/lib/module-ConfigParser.html
-.. _Python: http://www.python.org/
-.. _RFC 822: http://www.rfc-editor.org/rfc/rfc822.txt
-
-
-Configuration File Entries
---------------------------
-
-Listed below are the Docutils runtime settings. Most may be specified
-in `configuration files`_, where hyphens may be used in place of
-underscores. Some knowledge of Python_ is assumed for some
-attributes.
-
-attribution
- (HTML Writer.) Format for block quote attributions: one of "dash"
- (em-dash prefix), "parentheses"/"parens", or "none".
-
- Default: "dash". Options: ``--attribution``.
-
-compact_lists
- (HTML Writer.) Remove extra vertical whitespace between items of
- bullet lists and enumerated lists, when list items are "simple"
- (i.e., all items each contain one paragraph and/or one "simple"
- sublist only).
-
- Default: enabled (1). Options: ``--compact-lists,
- --no-compact-lists``.
-
-config
- Path to a configuration file to read (if it exists)
- [#pwd]_. Settings may override defaults and earlier settings.
- This is only effective as a command-line option; setting it in a
- config file has no effect.
-
- Filesystem path settings contained within the config file will be
- interpreted relative to the config file's location (*not* relative
- to the current working directory).
-
- Default: None. Options: ``--config``.
-
-datestamp
- Include a time/datestamp in the document footer. Contains a
- format string for Python's ``time.strftime``. See the `time
- module documentation`__.
-
- Default: None. Options: ``--date, -d, --time, -t,
- --no-datestamp``.
-
- __ http://www.python.org/doc/current/lib/module-time.html
-
-debug
- Report debug-level system messages.
-
- Default: don't (None). Options: ``--debug, --no-debug``.
-
-docinfo_xform
- (Standalone Reader.) Enable or disable the bibliographic field
- list transform (docutils.transforms.frontmatter.DocInfo).
-
- Default: enabled (1). Options: ``--no-doc-info``.
-
-doctitle_xform
-
- (Standalone Reader.) Enable or disable the promotion of a lone
- top-level section title to document title (and subsequent section
- title to document subtitle promotion;
- docutils.transforms.frontmatter.DocTitle).
-
- Default: enabled (). Options: ``--no-doc-title``.
-
-doctype_declaration
- (XML Writer.) Generate XML with a DOCTYPE declaration.
-
- Default: do (1). Options: ``--no-doctype``.
-
-dump_internals
- At the end of processing, write all internal attributes of the
- document (``document.__dict__``) to stderr.
-
- Default: don't (None). Options: ``--dump-internals`` (hidden, for
- development use only).
-
-dump_pseudo_xml
- At the end of processing, write the pseudo-XML representation of
- the document to stderr.
-
- Default: don't (None). Options: ``--dump-pseudo-xml`` (hidden,
- for development use only).
-
-dump_settings
- At the end of processing, write all Docutils settings to stderr.
-
- Default: don't (None). Options: ``--dump-settings`` (hidden, for
- development use only).
-
-dump_transforms
- At the end of processing, write a list of all transforms applied
- to the document to stderr.
-
- Default: don't (None). Options: ``--dump-transforms`` (hidden,
- for development use only).
-
-embed_stylesheet
- (HTML Writer.) Embed the stylesheet in the output HTML file. The
- stylesheet file must be accessible during processing. The
- stylesheet is embedded inside a comment, so it must not contain
- the text "``--``" (two hyphens).
-
- Default: link, don't embed (None). Options: ``--embed-stylesheet,
- --link-stylesheet``.
-
-error_encoding
- The text encoding for error output.
-
- Default: "ascii". Options: ``--error-encoding, -e``.
-
-error_encoding_error_handler
- The encoding error handler for unencodable characters in error
- output. Acceptable values are the same as for the "error"
- parameter of Python's ``encode`` string method.
-
- Default: "backslashreplace" for Python 2.3 and later; "replace"
- otherwise. Options: ``--error-encoding-error-handler,
- --error-encoding, -e``.
-
-exit_level
- A system message level threshold; non-halting system messages at
- or above this level will produce a non-zero exit status at normal
- exit. Exit status is the maximum system message level plus 10 (11
- for INFO, etc.).
-
- Default: disabled (5). Options: ``--exit``.
-
-expose_internals
- List of internal attribues to expose as external attributes (with
- "internal:" namespace prefix).
-
- Default: don't (None). Options: ``--expose-internal-attribute``
- (hidden, for development use only).
-
-footnote_backlinks
- Enable or disable backlinks from footnotes and citations to their
- references.
-
- Default: enabled (1). Options: ``--footnote-backlinks,
- --no-footnote-backlinks``.
-
-footnote_references
- (HTML Writer.) Format for footnote references, one of
- "superscript" or "brackets".
-
- Default: "superscript"; "brackets" in PEP/HTML Writer. Options:
- ``--footnote-references``.
-
-generator
- Include a "Generated by Docutils" credit and link in the document
- footer.
-
- Default: off (None). Options: ``--generator, -g,
- --no-generator``.
-
-halt_level
- The threshold at or above which system messages are converted to
- exceptions, halting execution immediately.
-
- Default: severe (4). Options: ``--halt, --strict``.
-
-indents
- (XML Writer.) Generate XML with indents and newlines.
-
- Default: don't (None). Options: ``--indents``.
-
-input_encoding
- The text encoding for input.
-
- Default: auto-detect (None). Options: ``--input-encoding, -i``.
-
-language_code
- `ISO 639`_ 2-letter language code (3-letter codes used only if no
- 2-letter code exists).
-
- Default: English ("en"). Options: ``--language, -l``.
-
-newlines
- (XML Writer.) Generate XML with newlines before and after tags.
-
- Default: don't (None). Options: ``--newlines``.
-
-no_random
- (PEP/HTML Writer.) Workaround for platforms which core-dump on
- "``import random``".
-
- Default: random enabled (None). Options: ``--no-random``
- (hidden).
-
-output_encoding
- The text encoding for output.
-
- Default: "UTF-8". Options: ``--output-encoding, -o``.
-
-output_encoding_error_handler
- The encoding error handler for unencodable characters in output.
- Acceptable values are the same as for the "error" parameter of
- Python's ``encode`` string method.
-
- Default: "strict". Options: ``--output-encoding-error-handler,
- --output-encoding, -o``.
-
-pep_home
- (PEP/HTML Writer.) Home URL prefix for PEPs.
-
- Default: current directory ("."). Options: ``--pep-home``.
-
-pep_references
- (reStructuredText Parser.) Recognize and link to PEP references
- (like "PEP 258").
-
- Default: disabled (None); enabled (1) in PEP Reader. Options:
- ``--pep-references``.
-
-pep_stylesheet
- (PEP/HTML Writer.) CSS stylesheet URL, used verbatim. Overrides
- HTML stylesheet (``--stylesheet``).
-
- Default: None. Options: ``--pep-stylesheet``.
-
-pep_stylesheet_path
- (PEP/HTML Writer.) Path to CSS stylesheet [#pwd]_. Path is
- adjusted relative to the output HTML file. Overrides HTML
- stylesheet (``--stylesheet``) and PEP stylesheet
- (``--pep-stylesheet``).
-
- Default: None. Options: ``--pep-stylesheet-path``.
-
-pep_template
- (PEP/HTML Writer.) Path to PEP template file [#pwd]_.
-
- Default: "pep-html-template" (in current directory). Options:
- ``--pep-template``.
-
-python_home
- (PEP/HTML Writer.) Python's home URL.
-
- Default: parent directory (".."). Options: ``--python-home``.
-
-recurse
- (``buildhtml.py`` front end.) Recursively scan subdirectories.
-
- Default: recurse (1). Options: ``--recurse, --local``.
-
-report_level
- Verbosity threshold at or above which system messages are
- reported.
-
- Default: warning (2). Options: ``--report, -r, --verbose, -v,
- --quiet, -q``.
-
-rfc_references
- (reStructuredText Parser.) Recognize and link to RFC references
- (like "RFC 822").
-
- Default: disabled (None); enabled (1) in PEP Reader. Options:
- ``--rfc-references``.
-
-silent
- (``buildhtml.py`` front end.) Work silently (no progress
- messages). Independent of "report_level".
-
- Default: show progress (None). Options: ``--silent``.
-
-source_link
- Include a "View document source" link in the document footer. URL
- will be relative to the destination.
-
- Default: don't (None). Options: ``--source-link, -s,
- --no-source-link``.
-
-source_url
- An explicit URL for a "View document source" link, used verbatim.
-
- Default: compute if source_link (None). Options: ``--source-uri,
- --no-source-link``.
-
-stylesheet
- (HTML Writer.) CSS stylesheet URL, used verbatim. Overridden by
- "stylesheet_path" URL option (``--stylesheet-path``).
-
- Default: "default.css". Options: ``--stylesheet``.
-
-stylesheet_path
- (HTML Writer.) Path to CSS stylesheet [#pwd]_. Overrides
- "stylesheet" URL option (``--stylesheet``). Path is adjusted
- relative to the output HTML file.
-
- Default: None. Options: ``--stylesheet``.
-
-tab_width
- (reStructuredText Parser.) Number of spaces for hard tab
- expansion.
-
- Default: 8. Options: ``--tab-width``.
-
-toc_backlinks
- Enable backlinks from section titles to table of contents entries
- ("entry"), to the top of the TOC ("top"), or disable ("none").
-
- Default: "entry". Options: ``--toc-entry-backlinks,
- --toc-top-backlinks, --no-toc-backlinks``.
-
-traceback
- Enable Python tracebacks when an error occurs.
-
- Default: disabled (None). Options: ``--traceback,
- --no-traceback``.
-
-trim-footnote-reference-space
- (reStructuredText Parser.) Remove spaces before footnote
- references.
-
- Default: don't (None). Options:
- ``--trim-footnote-reference-space``.
-
-warning_stream
- Path to a file for the output of system messages (warnings)
- [#pwd]_.
-
- Default: stderr (None). Options: ``--warnings``.
-
-xml_declaration
- (XML and HTML Writers.) Generate XML with an XML declaration.
-
- .. Caution:: The XML declaration carries text encoding
- information, without which standard tools may be unable to read
- the generated XML.
-
- Default: do (1). Options: ``--no-xml-declaration``.
-
-
-For Internal Use Only
-`````````````````````
-
-Setting these in a config file has no effect.
-
-
-_directories
- (``buildhtml.py`` front end.) List of paths to source
- directories, set from positional arguments.
-
- Default: current working directory (None). No command-line
- options.
-
-_disable_config
- Prevent standard configuration files from being read.
-
- Default: config files enabled (None). No command-line options.
-
-_destination
- Path to output destination, set from positional arguments.
-
- Default: stdout (None). No command-line options.
-
-_source
- Path to input source, set from positional arguments.
-
- Default: stdin (None). No command-line options.
-
-.. _ISO 639: http://lcweb.loc.gov/standards/iso639-2/englangn.html
-
-.. [#pwd] Path relative to the working directory of the process at
- launch.
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End: