blob: e48bb01f724b826bcb83aa29ee75c0e7bf38889b [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: rest
2
3Additional Markup Constructs
4============================
5
6Sphinx adds a lot of new directives and interpreted text roles to standard reST
7markup. This section contains the reference material for these facilities.
8Documentation for "standard" reST constructs is not included here, though
9they are used in the Python documentation.
10
Benjamin Petersonf608c612008-11-16 18:33:53 +000011.. note::
Georg Brandl116aa622007-08-15 14:28:22 +000012
Benjamin Petersonf608c612008-11-16 18:33:53 +000013 This is just an overview of Sphinx' extended markup capabilities; full
14 coverage can be found in `its own documentation
15 <http://sphinx.pocoo.org/contents.html>`_.
Georg Brandl116aa622007-08-15 14:28:22 +000016
17
18Meta-information markup
19-----------------------
20
21.. describe:: sectionauthor
22
23 Identifies the author of the current section. The argument should include
24 the author's name such that it can be used for presentation (though it isn't)
25 and email address. The domain name portion of the address should be lower
26 case. Example::
27
28 .. sectionauthor:: Guido van Rossum <guido@python.org>
29
30 Currently, this markup isn't reflected in the output in any way, but it helps
31 keep track of contributions.
32
33
34Module-specific markup
35----------------------
36
37The markup described in this section is used to provide information about a
38module being documented. Each module should be documented in its own file.
39Normally this markup appears after the title heading of that file; a typical
40file might start like this::
41
42 :mod:`parrot` -- Dead parrot access
43 ===================================
44
45 .. module:: parrot
46 :platform: Unix, Windows
47 :synopsis: Analyze and reanimate dead parrots.
48 .. moduleauthor:: Eric Cleese <eric@python.invalid>
49 .. moduleauthor:: John Idle <john@python.invalid>
50
51As you can see, the module-specific markup consists of two directives, the
52``module`` directive and the ``moduleauthor`` directive.
53
54.. describe:: module
55
Brett Cannondf501062009-01-20 02:09:18 +000056 This directive marks the beginning of the description of a module, package,
57 or submodule. The name should be fully qualified (i.e. including the
58 package name for submodules).
Georg Brandl116aa622007-08-15 14:28:22 +000059
60 The ``platform`` option, if present, is a comma-separated list of the
61 platforms on which the module is available (if it is available on all
62 platforms, the option should be omitted). The keys are short identifiers;
63 examples that are in use include "IRIX", "Mac", "Windows", and "Unix". It is
64 important to use a key which has already been used when applicable.
65
66 The ``synopsis`` option should consist of one sentence describing the
67 module's purpose -- it is currently only used in the Global Module Index.
68
Guido van Rossumda27fd22007-08-17 00:24:54 +000069 The ``deprecated`` option can be given (with no value) to mark a module as
70 deprecated; it will be designated as such in various locations then.
71
Georg Brandl116aa622007-08-15 14:28:22 +000072.. describe:: moduleauthor
73
74 The ``moduleauthor`` directive, which can appear multiple times, names the
75 authors of the module code, just like ``sectionauthor`` names the author(s)
76 of a piece of documentation. It too does not result in any output currently.
77
Georg Brandl116aa622007-08-15 14:28:22 +000078.. note::
79
80 It is important to make the section title of a module-describing file
81 meaningful since that value will be inserted in the table-of-contents trees
82 in overview files.
83
84
85Information units
86-----------------
87
88There are a number of directives used to describe specific features provided by
89modules. Each directive requires one or more signatures to provide basic
90information about what is being described, and the content should be the
91description. The basic version makes entries in the general index; if no index
92entry is desired, you can give the directive option flag ``:noindex:``. The
93following example shows all of the features of this directive type::
94
95 .. function:: spam(eggs)
96 ham(eggs)
97 :noindex:
98
99 Spam or ham the foo.
100
101The signatures of object methods or data attributes should always include the
102type name (``.. method:: FileInput.input(...)``), even if it is obvious from the
103context which type they belong to; this is to enable consistent
104cross-references. If you describe methods belonging to an abstract protocol,
105such as "context managers", include a (pseudo-)type name too to make the
106index entries more informative.
107
108The directives are:
109
110.. describe:: cfunction
111
112 Describes a C function. The signature should be given as in C, e.g.::
113
114 .. cfunction:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
115
116 This is also used to describe function-like preprocessor macros. The names
117 of the arguments should be given so they may be used in the description.
118
119 Note that you don't have to backslash-escape asterisks in the signature,
120 as it is not parsed by the reST inliner.
121
122.. describe:: cmember
123
124 Describes a C struct member. Example signature::
125
126 .. cmember:: PyObject* PyTypeObject.tp_bases
127
128 The text of the description should include the range of values allowed, how
129 the value should be interpreted, and whether the value can be changed.
130 References to structure members in text should use the ``member`` role.
131
132.. describe:: cmacro
133
134 Describes a "simple" C macro. Simple macros are macros which are used
135 for code expansion, but which do not take arguments so cannot be described as
136 functions. This is not to be used for simple constant definitions. Examples
137 of its use in the Python documentation include :cmacro:`PyObject_HEAD` and
138 :cmacro:`Py_BEGIN_ALLOW_THREADS`.
139
140.. describe:: ctype
141
142 Describes a C type. The signature should just be the type name.
143
144.. describe:: cvar
145
146 Describes a global C variable. The signature should include the type, such
147 as::
148
149 .. cvar:: PyObject* PyClass_Type
150
151.. describe:: data
152
153 Describes global data in a module, including both variables and values used
154 as "defined constants." Class and object attributes are not documented
155 using this environment.
156
157.. describe:: exception
158
159 Describes an exception class. The signature can, but need not include
160 parentheses with constructor arguments.
161
162.. describe:: function
163
164 Describes a module-level function. The signature should include the
165 parameters, enclosing optional parameters in brackets. Default values can be
166 given if it enhances clarity. For example::
167
168 .. function:: Timer.repeat([repeat=3[, number=1000000]])
169
170 Object methods are not documented using this directive. Bound object methods
171 placed in the module namespace as part of the public interface of the module
172 are documented using this, as they are equivalent to normal functions for
173 most purposes.
174
175 The description should include information about the parameters required and
176 how they are used (especially whether mutable objects passed as parameters
177 are modified), side effects, and possible exceptions. A small example may be
178 provided.
179
Georg Brandl8a1caa22010-07-29 16:01:11 +0000180.. describe:: decorator
181
182 Describes a decorator function. The signature should *not* represent the
183 signature of the actual function, but the usage as a decorator. For example,
184 given the functions
185
186 .. code-block:: python
187
188 def removename(func):
189 func.__name__ = ''
190 return func
191
192 def setnewname(name):
193 def decorator(func):
194 func.__name__ = name
195 return func
196 return decorator
197
198 the descriptions should look like this::
199
200 .. decorator:: removename
201
202 Remove name of the decorated function.
203
204 .. decorator:: setnewname(name)
205
206 Set name of the decorated function to *name*.
207
Georg Brandl116aa622007-08-15 14:28:22 +0000208.. describe:: class
209
210 Describes a class. The signature can include parentheses with parameters
211 which will be shown as the constructor arguments.
212
213.. describe:: attribute
214
215 Describes an object data attribute. The description should include
216 information about the type of the data to be expected and whether it may be
217 changed directly.
218
219.. describe:: method
220
221 Describes an object method. The parameters should not include the ``self``
222 parameter. The description should include similar information to that
223 described for ``function``.
224
Georg Brandl8a1caa22010-07-29 16:01:11 +0000225.. describe:: decoratormethod
226
227 Same as ``decorator``, but for decorators that are methods.
228
Georg Brandl116aa622007-08-15 14:28:22 +0000229.. describe:: opcode
230
Georg Brandl9afde1c2007-11-01 20:32:30 +0000231 Describes a Python :term:`bytecode` instruction.
232
233.. describe:: cmdoption
234
Georg Brandlf5ae1ef2010-07-26 21:12:13 +0000235 Describes a Python command line option or switch. Option argument names
236 should be enclosed in angle brackets. Example::
Georg Brandl9afde1c2007-11-01 20:32:30 +0000237
238 .. cmdoption:: -m <module>
239
240 Run a module as a script.
241
242.. describe:: envvar
243
244 Describes an environment variable that Python uses or defines.
Georg Brandl116aa622007-08-15 14:28:22 +0000245
246
247There is also a generic version of these directives:
248
249.. describe:: describe
250
251 This directive produces the same formatting as the specific ones explained
252 above but does not create index entries or cross-referencing targets. It is
253 used, for example, to describe the directives in this document. Example::
254
255 .. describe:: opcode
256
257 Describes a Python bytecode instruction.
258
259
260Showing code examples
261---------------------
262
263Examples of Python source code or interactive sessions are represented using
264standard reST literal blocks. They are started by a ``::`` at the end of the
265preceding paragraph and delimited by indentation.
266
267Representing an interactive session requires including the prompts and output
268along with the Python code. No special markup is required for interactive
269sessions. After the last line of input or output presented, there should not be
270an "unused" primary prompt; this is an example of what *not* to do::
271
272 >>> 1 + 1
273 2
274 >>>
275
276Syntax highlighting is handled in a smart way:
277
278* There is a "highlighting language" for each source file. Per default,
279 this is ``'python'`` as the majority of files will have to highlight Python
280 snippets.
281
282* Within Python highlighting mode, interactive sessions are recognized
283 automatically and highlighted appropriately.
284
285* The highlighting language can be changed using the ``highlightlang``
286 directive, used as follows::
287
288 .. highlightlang:: c
289
290 This language is used until the next ``highlightlang`` directive is
291 encountered.
292
Benjamin Petersonf608c612008-11-16 18:33:53 +0000293* The values normally used for the highlighting language are:
Georg Brandl116aa622007-08-15 14:28:22 +0000294
295 * ``python`` (the default)
296 * ``c``
297 * ``rest``
298 * ``none`` (no highlighting)
299
300* If highlighting with the current language fails, the block is not highlighted
301 in any way.
302
303Longer displays of verbatim text may be included by storing the example text in
304an external file containing only plain text. The file may be included using the
305``literalinclude`` directive. [1]_ For example, to include the Python source file
306:file:`example.py`, use::
307
308 .. literalinclude:: example.py
309
310The file name is relative to the current file's path. Documentation-specific
311include files should be placed in the ``Doc/includes`` subdirectory.
312
313
314Inline markup
315-------------
316
317As said before, Sphinx uses interpreted text roles to insert semantic markup in
318documents.
319
Benjamin Petersonaa069002009-01-23 03:26:36 +0000320Names of local variables, such as function/method arguments, are an exception,
321they should be marked simply with ``*var*``.
Georg Brandl116aa622007-08-15 14:28:22 +0000322
323For all other roles, you have to write ``:rolename:`content```.
324
Benjamin Petersonc4bbc8d2009-01-30 03:39:35 +0000325There are some additional facilities that make cross-referencing roles more
326versatile:
Guido van Rossumf10aa982007-08-17 18:30:38 +0000327
Benjamin Petersonc4bbc8d2009-01-30 03:39:35 +0000328* You may supply an explicit title and reference target, like in reST direct
329 hyperlinks: ``:role:`title <target>``` will refer to *target*, but the link
330 text will be *title*.
331
332* If you prefix the content with ``!``, no reference/hyperlink will be created.
333
334* For the Python object roles, if you prefix the content with ``~``, the link
335 text will only be the last component of the target. For example,
336 ``:meth:`~Queue.Queue.get``` will refer to ``Queue.Queue.get`` but only
337 display ``get`` as the link text.
338
339 In HTML output, the link's ``title`` attribute (that is e.g. shown as a
340 tool-tip on mouse-hover) will always be the full target name.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000341
Georg Brandl116aa622007-08-15 14:28:22 +0000342The following roles refer to objects in modules and are possibly hyperlinked if
343a matching identifier is found:
344
345.. describe:: mod
346
347 The name of a module; a dotted name may be used. This should also be used for
348 package names.
349
350.. describe:: func
351
352 The name of a Python function; dotted names may be used. The role text
Christian Heimesa342c012008-04-20 21:01:16 +0000353 should not include trailing parentheses to enhance readability. The
354 parentheses are stripped when searching for identifiers.
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356.. describe:: data
357
Benjamin Petersonaa069002009-01-23 03:26:36 +0000358 The name of a module-level variable or constant.
Georg Brandl116aa622007-08-15 14:28:22 +0000359
360.. describe:: const
361
362 The name of a "defined" constant. This may be a C-language ``#define``
363 or a Python variable that is not intended to be changed.
364
365.. describe:: class
366
367 A class name; a dotted name may be used.
368
369.. describe:: meth
370
371 The name of a method of an object. The role text should include the type
Christian Heimesa342c012008-04-20 21:01:16 +0000372 name and the method name. A dotted name may be used.
Georg Brandl116aa622007-08-15 14:28:22 +0000373
374.. describe:: attr
375
376 The name of a data attribute of an object.
377
378.. describe:: exc
379
380 The name of an exception. A dotted name may be used.
381
382The name enclosed in this markup can include a module name and/or a class name.
383For example, ``:func:`filter``` could refer to a function named ``filter`` in
384the current module, or the built-in function of that name. In contrast,
385``:func:`foo.filter``` clearly refers to the ``filter`` function in the ``foo``
386module.
387
Guido van Rossumda27fd22007-08-17 00:24:54 +0000388Normally, names in these roles are searched first without any further
389qualification, then with the current module name prepended, then with the
390current module and class name (if any) prepended. If you prefix the name with a
391dot, this order is reversed. For example, in the documentation of the
392:mod:`codecs` module, ``:func:`open``` always refers to the built-in function,
393while ``:func:`.open``` refers to :func:`codecs.open`.
394
Georg Brandl116aa622007-08-15 14:28:22 +0000395A similar heuristic is used to determine whether the name is an attribute of
396the currently documented class.
397
398The following roles create cross-references to C-language constructs if they
399are defined in the API documentation:
400
401.. describe:: cdata
402
403 The name of a C-language variable.
404
405.. describe:: cfunc
406
407 The name of a C-language function. Should include trailing parentheses.
408
409.. describe:: cmacro
410
411 The name of a "simple" C macro, as defined above.
412
413.. describe:: ctype
414
415 The name of a C-language type.
416
417
418The following role does possibly create a cross-reference, but does not refer
419to objects:
420
421.. describe:: token
422
423 The name of a grammar token (used in the reference manual to create links
424 between production displays).
425
Guido van Rossumf10aa982007-08-17 18:30:38 +0000426
427The following role creates a cross-reference to the term in the glossary:
428
429.. describe:: term
430
431 Reference to a term in the glossary. The glossary is created using the
432 ``glossary`` directive containing a definition list with terms and
433 definitions. It does not have to be in the same file as the ``term``
434 markup, in fact, by default the Python docs have one global glossary
435 in the ``glossary.rst`` file.
436
437 If you use a term that's not explained in a glossary, you'll get a warning
438 during build.
439
Georg Brandl116aa622007-08-15 14:28:22 +0000440---------
441
442The following roles don't do anything special except formatting the text
443in a different style:
444
445.. describe:: command
446
447 The name of an OS-level command, such as ``rm``.
448
449.. describe:: dfn
450
451 Mark the defining instance of a term in the text. (No index entries are
452 generated.)
453
454.. describe:: envvar
455
456 An environment variable. Index entries are generated.
457
458.. describe:: file
459
460 The name of a file or directory. Within the contents, you can use curly
461 braces to indicate a "variable" part, for example::
462
463 ... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
464
465 In the built documentation, the ``x`` will be displayed differently to
466 indicate that it is to be replaced by the Python minor version.
467
468.. describe:: guilabel
469
470 Labels presented as part of an interactive user interface should be marked
471 using ``guilabel``. This includes labels from text-based interfaces such as
472 those created using :mod:`curses` or other text-based libraries. Any label
473 used in the interface should be marked with this role, including button
474 labels, window titles, field names, menu and menu selection names, and even
475 values in selection lists.
476
477.. describe:: kbd
478
479 Mark a sequence of keystrokes. What form the key sequence takes may depend
480 on platform- or application-specific conventions. When there are no relevant
481 conventions, the names of modifier keys should be spelled out, to improve
482 accessibility for new users and non-native speakers. For example, an
483 *xemacs* key sequence may be marked like ``:kbd:`C-x C-f```, but without
484 reference to a specific application or platform, the same sequence should be
485 marked as ``:kbd:`Control-x Control-f```.
486
487.. describe:: keyword
488
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000489 The name of a keyword in Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000490
491.. describe:: mailheader
492
493 The name of an RFC 822-style mail header. This markup does not imply that
494 the header is being used in an email message, but can be used to refer to any
495 header of the same "style." This is also used for headers defined by the
496 various MIME specifications. The header name should be entered in the same
497 way it would normally be found in practice, with the camel-casing conventions
498 being preferred where there is more than one common usage. For example:
499 ``:mailheader:`Content-Type```.
500
501.. describe:: makevar
502
503 The name of a :command:`make` variable.
504
505.. describe:: manpage
506
507 A reference to a Unix manual page including the section,
508 e.g. ``:manpage:`ls(1)```.
509
510.. describe:: menuselection
511
512 Menu selections should be marked using the ``menuselection`` role. This is
513 used to mark a complete sequence of menu selections, including selecting
514 submenus and choosing a specific operation, or any subsequence of such a
515 sequence. The names of individual selections should be separated by
516 ``-->``.
517
518 For example, to mark the selection "Start > Programs", use this markup::
519
520 :menuselection:`Start --> Programs`
521
522 When including a selection that includes some trailing indicator, such as the
523 ellipsis some operating systems use to indicate that the command opens a
524 dialog, the indicator should be omitted from the selection name.
525
526.. describe:: mimetype
527
528 The name of a MIME type, or a component of a MIME type (the major or minor
529 portion, taken alone).
530
531.. describe:: newsgroup
532
533 The name of a Usenet newsgroup.
534
535.. describe:: option
536
Georg Brandla5ed4012010-07-19 06:57:52 +0000537 A command-line option of Python. The leading hyphen(s) must be included.
538 If a matching ``cmdoption`` directive exists, it is linked to. For options
539 of other programs or scripts, use simple ````code```` markup.
Georg Brandl116aa622007-08-15 14:28:22 +0000540
541.. describe:: program
542
543 The name of an executable program. This may differ from the file name for
544 the executable for some platforms. In particular, the ``.exe`` (or other)
545 extension should be omitted for Windows programs.
546
547.. describe:: regexp
548
549 A regular expression. Quotes should not be included.
550
551.. describe:: samp
552
553 A piece of literal text, such as code. Within the contents, you can use
554 curly braces to indicate a "variable" part, as in ``:file:``.
555
556 If you don't need the "variable part" indication, use the standard
Georg Brandl48310cd2009-01-03 21:18:54 +0000557 ````code```` instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000558
559.. describe:: var
560
561 A Python or C variable or parameter name.
562
563
564The following roles generate external links:
565
566.. describe:: pep
567
568 A reference to a Python Enhancement Proposal. This generates appropriate
569 index entries. The text "PEP *number*\ " is generated; in the HTML output,
570 this text is a hyperlink to an online copy of the specified PEP.
571
572.. describe:: rfc
573
574 A reference to an Internet Request for Comments. This generates appropriate
575 index entries. The text "RFC *number*\ " is generated; in the HTML output,
576 this text is a hyperlink to an online copy of the specified RFC.
577
578
579Note that there are no special roles for including hyperlinks as you can use
580the standard reST markup for that purpose.
581
582
583.. _doc-ref-role:
584
585Cross-linking markup
586--------------------
587
588To support cross-referencing to arbitrary sections in the documentation, the
589standard reST labels are "abused" a bit: Every label must precede a section
590title; and every label name must be unique throughout the entire documentation
591source.
592
593You can then reference to these sections using the ``:ref:`label-name``` role.
594
595Example::
596
597 .. _my-reference-label:
598
599 Section to cross-reference
600 --------------------------
601
602 This is the text of the section.
603
604 It refers to the section itself, see :ref:`my-reference-label`.
605
606The ``:ref:`` invocation is replaced with the section title.
607
608
609Paragraph-level markup
610----------------------
611
612These directives create short paragraphs and can be used inside information
613units as well as normal text:
614
615.. describe:: note
616
617 An especially important bit of information about an API that a user should be
618 aware of when using whatever bit of API the note pertains to. The content of
619 the directive should be written in complete sentences and include all
620 appropriate punctuation.
621
622 Example::
623
624 .. note::
625
626 This function is not suitable for sending spam e-mails.
627
628.. describe:: warning
629
Georg Brandle720c0a2009-04-27 16:20:50 +0000630 An important bit of information about an API that a user should be aware of
631 when using whatever bit of API the warning pertains to. The content of the
632 directive should be written in complete sentences and include all appropriate
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000633 punctuation. In the interest of not scaring users away from pages filled
634 with warnings, this directive should only be chosen over ``note`` for
635 information regarding the possibility of crashes, data loss, or security
636 implications.
Georg Brandl116aa622007-08-15 14:28:22 +0000637
638.. describe:: versionadded
639
640 This directive documents the version of Python which added the described
641 feature to the library or C API. When this applies to an entire module, it
642 should be placed at the top of the module section before any prose.
643
644 The first argument must be given and is the version in question; you can add
645 a second argument consisting of a *brief* explanation of the change.
646
647 Example::
648
Georg Brandl277a1502009-01-04 00:28:14 +0000649 .. versionadded:: 3.1
Georg Brandl36ab1ef2009-01-03 21:17:04 +0000650 The *spam* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
652 Note that there must be no blank line between the directive head and the
653 explanation; this is to make these blocks visually continuous in the markup.
654
655.. describe:: versionchanged
656
657 Similar to ``versionadded``, but describes when and what changed in the named
658 feature in some way (new parameters, changed side effects, etc.).
659
660--------------
661
Georg Brandl495f7b52009-10-27 15:28:25 +0000662.. describe:: impl-detail
663
664 This directive is used to mark CPython-specific information. Use either with
665 a block content or a single sentence as an argument, i.e. either ::
666
667 .. impl-detail::
668
669 This describes some implementation detail.
670
671 More explanation.
672
673 or ::
674
675 .. impl-detail:: This shortly mentions an implementation detail.
676
677 "\ **CPython implementation detail:**\ " is automatically prepended to the
678 content.
679
Georg Brandl116aa622007-08-15 14:28:22 +0000680.. describe:: seealso
681
682 Many sections include a list of references to module documentation or
683 external documents. These lists are created using the ``seealso`` directive.
684
685 The ``seealso`` directive is typically placed in a section just before any
686 sub-sections. For the HTML output, it is shown boxed off from the main flow
687 of the text.
688
689 The content of the ``seealso`` directive should be a reST definition list.
690 Example::
691
692 .. seealso::
693
694 Module :mod:`zipfile`
695 Documentation of the :mod:`zipfile` standard module.
696
697 `GNU tar manual, Basic Tar Format <http://link>`_
698 Documentation for tar archive files, including GNU tar extensions.
699
700.. describe:: rubric
701
702 This directive creates a paragraph heading that is not used to create a
703 table of contents node. It is currently used for the "Footnotes" caption.
704
705.. describe:: centered
706
707 This directive creates a centered boldfaced paragraph. Use it as follows::
708
709 .. centered::
710
711 Paragraph contents.
712
713
714Table-of-contents markup
715------------------------
716
717Since reST does not have facilities to interconnect several documents, or split
718documents into multiple output files, Sphinx uses a custom directive to add
719relations between the single files the documentation is made of, as well as
720tables of contents. The ``toctree`` directive is the central element.
721
722.. describe:: toctree
723
724 This directive inserts a "TOC tree" at the current location, using the
725 individual TOCs (including "sub-TOC trees") of the files given in the
726 directive body. A numeric ``maxdepth`` option may be given to indicate the
727 depth of the tree; by default, all levels are included.
728
729 Consider this example (taken from the library reference index)::
730
731 .. toctree::
732 :maxdepth: 2
733
Benjamin Petersond7c3ed52010-06-27 22:32:30 +0000734 intro
735 strings
736 datatypes
737 numeric
Georg Brandl116aa622007-08-15 14:28:22 +0000738 (many more files listed here)
739
740 This accomplishes two things:
741
742 * Tables of contents from all those files are inserted, with a maximum depth
743 of two, that means one nested heading. ``toctree`` directives in those
744 files are also taken into account.
Benjamin Petersond7c3ed52010-06-27 22:32:30 +0000745 * Sphinx knows that the relative order of the files ``intro``,
746 ``strings`` and so forth, and it knows that they are children of the
Georg Brandl116aa622007-08-15 14:28:22 +0000747 shown file, the library index. From this information it generates "next
748 chapter", "previous chapter" and "parent chapter" links.
749
750 In the end, all files included in the build process must occur in one
751 ``toctree`` directive; Sphinx will emit a warning if it finds a file that is
752 not included, because that means that this file will not be reachable through
753 standard navigation.
754
755 The special file ``contents.rst`` at the root of the source directory is the
756 "root" of the TOC tree hierarchy; from it the "Contents" page is generated.
757
758
759Index-generating markup
760-----------------------
761
762Sphinx automatically creates index entries from all information units (like
763functions, classes or attributes) like discussed before.
764
765However, there is also an explicit directive available, to make the index more
766comprehensive and enable index entries in documents where information is not
767mainly contained in information units, such as the language reference.
768
769The directive is ``index`` and contains one or more index entries. Each entry
770consists of a type and a value, separated by a colon.
771
772For example::
773
774 .. index::
Thomas Wouters89d996e2007-09-08 17:39:28 +0000775 single: execution; context
Georg Brandl116aa622007-08-15 14:28:22 +0000776 module: __main__
777 module: sys
778 triple: module; search; path
779
780This directive contains five entries, which will be converted to entries in the
781generated index which link to the exact location of the index statement (or, in
782case of offline media, the corresponding page number).
783
784The possible entry types are:
785
786single
787 Creates a single index entry. Can be made a subentry by separating the
Thomas Wouters89d996e2007-09-08 17:39:28 +0000788 subentry text with a semicolon (this notation is also used below to describe
789 what entries are created).
Georg Brandl116aa622007-08-15 14:28:22 +0000790pair
791 ``pair: loop; statement`` is a shortcut that creates two index entries,
792 namely ``loop; statement`` and ``statement; loop``.
793triple
794 Likewise, ``triple: module; search; path`` is a shortcut that creates three
795 index entries, which are ``module; search path``, ``search; path, module`` and
796 ``path; module search``.
797module, keyword, operator, object, exception, statement, builtin
798 These all create two index entries. For example, ``module: hashlib`` creates
799 the entries ``module; hashlib`` and ``hashlib; module``.
800
Thomas Wouters89d996e2007-09-08 17:39:28 +0000801For index directives containing only "single" entries, there is a shorthand
802notation::
803
804 .. index:: BNF, grammar, syntax, notation
805
806This creates four index entries.
807
Georg Brandl116aa622007-08-15 14:28:22 +0000808
809Grammar production displays
810---------------------------
811
812Special markup is available for displaying the productions of a formal grammar.
813The markup is simple and does not attempt to model all aspects of BNF (or any
814derived forms), but provides enough to allow context-free grammars to be
815displayed in a way that causes uses of a symbol to be rendered as hyperlinks to
816the definition of the symbol. There is this directive:
817
818.. describe:: productionlist
819
820 This directive is used to enclose a group of productions. Each production is
821 given on a single line and consists of a name, separated by a colon from the
822 following definition. If the definition spans multiple lines, each
823 continuation line must begin with a colon placed at the same column as in the
824 first line.
825
826 Blank lines are not allowed within ``productionlist`` directive arguments.
827
828 The definition can contain token names which are marked as interpreted text
Georg Brandl36ab1ef2009-01-03 21:17:04 +0000829 (e.g. ``unaryneg ::= "-" `integer```) -- this generates cross-references
Georg Brandl116aa622007-08-15 14:28:22 +0000830 to the productions of these tokens.
831
832 Note that no further reST parsing is done in the production, so that you
833 don't have to escape ``*`` or ``|`` characters.
834
835
Georg Brandl48310cd2009-01-03 21:18:54 +0000836.. XXX describe optional first parameter
Georg Brandl116aa622007-08-15 14:28:22 +0000837
838The following is an example taken from the Python Reference Manual::
839
840 .. productionlist::
841 try_stmt: try1_stmt | try2_stmt
842 try1_stmt: "try" ":" `suite`
843 : ("except" [`expression` ["," `target`]] ":" `suite`)+
844 : ["else" ":" `suite`]
845 : ["finally" ":" `suite`]
846 try2_stmt: "try" ":" `suite`
847 : "finally" ":" `suite`
848
849
850Substitutions
851-------------
852
853The documentation system provides three substitutions that are defined by default.
Benjamin Petersonf608c612008-11-16 18:33:53 +0000854They are set in the build configuration file :file:`conf.py`.
Georg Brandl116aa622007-08-15 14:28:22 +0000855
856.. describe:: |release|
857
858 Replaced by the Python release the documentation refers to. This is the full
859 version string including alpha/beta/release candidate tags, e.g. ``2.5.2b3``.
860
861.. describe:: |version|
862
863 Replaced by the Python version the documentation refers to. This consists
864 only of the major and minor version parts, e.g. ``2.5``, even for version
865 2.5.1.
866
867.. describe:: |today|
868
869 Replaced by either today's date, or the date set in the build configuration
870 file. Normally has the format ``April 14, 2007``.
871
872
873.. rubric:: Footnotes
874
875.. [1] There is a standard ``.. include`` directive, but it raises errors if the
876 file is not found. This one only emits a warning.