Installation

Via Python Package

Install the package (or add it to your requirements.txt file):

pip install sphinx_rtd_theme

In your conf.py file:

html_theme = "sphinx_rtd_theme"

Via Git or Download

Symlink or subtree the sphinx_rtd_theme/sphinx_rtd_theme repository into your documentation at docs/_themes/sphinx_rtd_theme then add the following two settings to your Sphinx conf.py file:

html_theme = "sphinx_rtd_theme"
html_theme_path = ["_themes", ]

Configuration

You can configure different parts of the theme.

Project-wide Configuration

HTML Theme Options

The theme’s project-wide options are defined in the sphinx_rtd_theme/theme.conf file of this repository, and can be defined in your project’s conf.py via html_theme_options. For example:

html_theme_options = {
    'canonical_url': '',
    'analytics_id': 'UA-XXXXXXX-1',  #  Provided by Google in your dashboard
    'logo_only': False,
    'display_version': True,
    'prev_next_buttons_location': 'bottom',
    'style_external_links': False,
    'vcs_pageview_mode': '',
    # Toc options
    'collapse_navigation': True,
    'sticky_navigation': True,
    'navigation_depth': 4,
    'includehidden': True,
    'titles_only': False
}

The following options are available:

Base options

  • canonical_url String. This will specify a canonical url to let search engines know they should give higher ranking to latest version of the docs. The url points to the root of the documentation and requires a trailing slash.
  • analytics_id String. Change the Google Analytics ID that is included on pages.
  • display_version Bool. With this disabled, the version number isn’t shown at the top of the sidebar.
  • prev_next_buttons_location String. can take the value bottom, top, both , or None and will display the “Next” and “Previous” buttons accordingly.
  • style_external_links Bool. Add an icon next to external links. Defaults to False.
  • vcs_pageview_mode String. Changes how to view files when using display_github, display_gitlab, etc. When using Github or Gitlab this can be: blob (default), edit, or raw, on Bitbucket, this can be either: view (default) or edit.

TOC Options

These effect how we display the Table of Contents in the side bar. You can read more about them here: http://www.sphinx-doc.org/en/stable/templating.html#toctree

  • collapse_navigation Bool. With this enabled, you will lose the [+] drop downs next to each section in the sidebar.
  • sticky_navigation Bool. This causes the sidebar to scroll with the main page content as you scroll the page.
  • navigation_depth Int. Indicate the max depth of the tree; by default, 4 levels are included; set it to -1 to allow unlimited depth.
  • includehidden Bool. Specifies if the sidebar includes toctrees marked with the :hidden: option
  • titles_only Bool. If True, removes headers within a page from the sidebar.

Note

Setting collapse_navigation to False and using a high navigation_depth can cause projects with many files and a deep file structure to generate HTML files that are significantly larger in file size and much longer compilation times.

HTML Context Options

TODO.

Page-level Configuration

Pages support metadata that changes how the theme renders. You can currently add the following:

  • :github_url: This will force the “Edit on GitHub” to the configured URL
  • :bitbucket_url: This will force the “Edit on Bitbucket” to the configured URL
  • :gitlab_url: This will force the “Edit on GitLab” to the configured URL

How the Table of Contents builds

Currently the left menu will build based upon any toctree(s) defined in your index.rst file. It outputs 2 levels of depth, which should give your visitors a high level of access to your docs. If no toctrees are set the theme reverts to sphinx’s usual local toctree.

It’s important to note that if you don’t follow the same styling for your rST headers across your documents, the toctree will misbuild, and the resulting menu might not show the correct depth when it renders.

Also note that by default the table of contents is set with includehidden=True. This allows you to set a hidden toc in your index file with the :hidden: property that will allow you to build a toc without it rendering in your index.

By default, the navigation will “stick” to the screen as you scroll. However if your toc is vertically too large, it will revert to static positioning. To disable the sticky nav altogether change the setting in conf.py.

Changelog

master

Date:TBD

New Features

Fixes

  • Fix scrolling to active item in sidebar on load (#214)
  • Style caption link for code and literal blocks
  • Fix inconsistent font size and line height for autodoc “raises” and “returns” (#267)

Other Changes

v0.4.2

Date:Oct 5, 2018

New Features

Fixes

  • Set base font size on <html> (#668)
  • Fix HTML search not working with Sphinx-1.8 (#672)

Other Changes

  • Upload signed packages to PyPI with twine (#651)
  • Do not enforce period at the end of copyright statement (666)

v0.4.1

Date:July 27, 2018

New Features

Fixes

  • Line height adjustments for Liberation Mono (#656)

Other Changes

  • Add Sphinx as a dependency

v0.4.0

This version made some changes to how JS and CSS were included when the theme is used on Read the Docs.

New Features

Fixes

  • Do not rely on readthedocs.org for CSS/JS (#614)
  • Color accessibility improvements on the left navigation

Other Changes

  • Write theme version and build date at top of JavaScript and CSS
  • Changed code and literals to use a native font stack (#612)
  • Fix small styling issues

v0.3.1

Fixes

  • Revert part of #576 causing display issues with version selector menu
  • Backwards compatibility fixes for pre-0.3.0 releases (#623)
  • Fix mkdocs version selector (#622)
  • Add open list spacing (#591)
  • Fix table centering (#599)

v0.3.0

Note: this version resulted in some JavaScript incompatibilities when used on readthedocs.org

New Features

  • Add html language attribute
  • Allow setting ‘rel’ and ‘title’ attributes for stylesheets (#551)
  • Add option to style external links
  • Add github, gitlab, bitbucket page arguments option
  • Add pygments support
  • Add setuptools entry point allowing to use sphinx_rtd_theme as Sphinx html_theme directly.
  • Add language to the JS output variable

Fixes

  • Fix some HTML warnings and errors
  • Fix many styling issues
  • Fix many sidebar glitches
  • Fix line number spacing to align with the code lines
  • Hide Edit links on auto created pages
  • Include missing font files with the theme

Other Changes

  • Significant improvement of our documentation
  • Compress our Javascript files
  • Updated dependencies

v0.2.4

  • Yet another patch to deal with extra builders outside Spinx, such as the singlehtml builders from the Read the Docs Sphinx extension

v0.2.3

  • Temporarily patch Sphinx issue with singlehtml builder by inspecting the builder in template.

v0.2.2

  • Roll back toctree fix in 0.2.1 (#367). This didn’t fix the issue and introduced another bug with toctrees display.

v0.2.1

  • Add the rel HTML attribute to the footer links which point to the previous and next pages.
  • Fix toctree issue caused by Sphinx singlehtml builder (#367)

v0.2.0

  • Adds the comments block after the body block in the template
  • Added “Edit on GitLab” support
  • Many bug fixes

v0.1.10-alpha

Note

This is a pre-release version

  • Removes Sphinx dependency
  • Fixes hamburger on mobile display
  • Adds a body_begin block to the template
  • Added prev_next_buttons_location

v0.1.9

  • Intermittent scrollbar visibility bug fixed. This change introduces a backwards incompatible change to the theme’s layout HTML. This should only be a problem for derivative themes that have overridden styling of nav elements using direct descendant selectors. See #215 for more information.
  • Safari overscroll bug fixed
  • Version added to the nav header
  • Revision id was added to the documentation footer if you are using RTD
  • An extra block, extrafooter was added to allow extra content in the document footer block
  • Fixed modernizr URL
  • Small display style changes on code blocks, figure captions, and nav elements

v0.1.8

  • Start keeping changelog :)
  • Support for third and fourth level headers in the sidebar
  • Add support for Sphinx 1.3
  • Add sidebar headers for :caption: in Sphinx toctree
  • Clean up sidebar scrolling behavior so it never scrolls out of view

Contributing or modifying the theme

The sphinx_rtd_theme is primarily a sass project that requires a few other sass libraries. I’m using bower to manage these dependencies and sass to build the css. The good news is I have a very nice set of grunt operations that will not only load these dependencies, but watch for changes, rebuild the sphinx demo docs and build a distributable version of the theme. The bad news is this means you’ll need to set up your environment similar to that of a front-end developer (vs. that of a python developer). That means installing node and ruby.

See also

If you are unsure of appropriate actions to take while interacting with our community please read our Code of Conduct.

Set up your environment

  1. Install sphinx into a virtual environment.

    pip install sphinx sphinxcontrib-httpdomain
    
  2. Install sass.

    gem install sass
    
  3. Install node, bower, grunt, and theme dependencies.

    # Install node
    brew install node
    
    # Install bower and grunt
    npm install -g bower grunt-cli
    
    # Now that everything is installed, let's install the theme dependencies.
    npm install
    

Now that our environment is set up, make sure you’re in your virtual environment, go to this repository in your terminal and run grunt:

grunt

This default task will do the following very cool things that make it worth the trouble:

  1. Install and update any bower dependencies.
  2. Run sphinx and build new docs.
  3. Watch for changes to the sass files and build css from the changes.
  4. Rebuild the sphinx docs anytime it notices a change to .rst, .html, .js or .css files.

Releasing the Theme

When you release a new version, you should do the following:

  1. Bump the version in sphinx_rtd_theme/__init__.py, bower.json and package.json – we try to follow semver, so be careful with breaking changes.

  2. Update the changelog (docs/changelog.rst) with the version information.

  3. Run a grunt build to rebuild all the theme assets.

  4. Commit that change.

  5. Tag the release in git: git tag $NEW_VERSION.

  6. Push the tag to GitHub: git push --tags origin.

  7. Upload the package to PyPI:

    $ rm -rf dist/
    $ python setup.py sdist bdist_wheel
    $ twine upload --sign --identity security@readthedocs.org dist/*
    

Structural Elements

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec, finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu, gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt. Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique. Aenean condimentum risus tellus, quis accumsan ipsum laoreet ut. Integer porttitor maximus suscipit. Mauris in posuere sapien. Aliquam accumsan feugiat ligula, nec fringilla libero commodo sed. Proin et erat pharetra.


Etiam turpis ante, luctus sed velit tristique, finibus volutpat dui. Nam sagittis vel ante nec malesuada. Praesent dignissim mi nec ornare elementum. Nunc eu augue vel sem dignissim cursus sed et nulla. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque dictum dui sem, non placerat tortor rhoncus in. Sed placerat nulla at rhoncus iaculis.

Document Section

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed condimentum nulla vel neque venenatis, nec placerat lorem placerat. Cras purus eros, gravida vitae tincidunt id, vehicula nec nulla. Fusce aliquet auctor cursus. Phasellus ex neque, vestibulum non est vitae, viverra fringilla tortor. Donec vestibulum convallis justo, a faucibus lorem vulputate vel. Aliquam cursus odio eu felis sodales aliquet. Aliquam erat volutpat. Maecenas eget dictum mauris. Suspendisse arcu eros, condimentum eget risus sed, luctus efficitur arcu. Cras ut dictum mi. Nulla congue interdum lorem, semper semper enim commodo nec.

Document Subsection

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur in eros et blandit. Nunc maximus, nisl at auctor vestibulum, justo ex sollicitudin ligula, id faucibus urna orci tristique nisl. Duis auctor rutrum orci, in ornare lacus condimentum quis. Quisque arcu velit, facilisis quis interdum ac, hendrerit auctor mauris. Curabitur urna nibh, porttitor at ante sit amet, vestibulum interdum dolor. Duis dictum elit orci, tincidunt imperdiet sem pellentesque et. In vehicula pellentesque varius. Phasellus a turpis sollicitudin, bibendum massa et, imperdiet neque. Integer quis sapien in magna rutrum bibendum. Integer cursus ex sed magna vehicula finibus. Proin tempus orci quis dolor tempus, nec condimentum odio vestibulum. Etiam efficitur sollicitudin libero, tincidunt volutpat ligula interdum sed.

Document Subsubsection

Donec non rutrum lorem. Aenean sagittis metus at pharetra fringilla. Nunc sapien dolor, cursus sed nisi at, pretium tristique lectus. Sed pellentesque leo lectus, et convallis ipsum euismod a. Integer at leo vitae felis pretium aliquam fringilla quis odio. Sed pharetra enim accumsan feugiat pretium. Maecenas at pharetra tortor. Morbi semper eget mi vel finibus. Cras rutrum nulla eros, id feugiat arcu pellentesque ut. Sed finibus tortor ac nisi ultrices viverra. Duis feugiat malesuada sapien, at commodo ante porttitor ac. Curabitur posuere mauris mi, vel ornare orci scelerisque sit amet. Suspendisse nec fringilla dui.

Document Paragraph

Pellentesque nec est in odio ultrices elementum. Vestibulum et hendrerit sapien, quis vulputate turpis. Suspendisse potenti. Curabitur tristique sit amet lectus non viverra. Phasellus rutrum dapibus turpis sed imperdiet. Mauris maximus viverra ante. Donec eu egestas mauris. Morbi vulputate tincidunt euismod. Integer vel porttitor neque. Donec at lacus suscipit, lacinia lectus vel, sagittis lectus.

Structural Elements 2

Etiam turpis ante, luctus sed velit tristique, finibus volutpat dui. Nam sagittis vel ante nec malesuada. Praesent dignissim mi nec ornare elementum. Nunc eu augue vel sem dignissim cursus sed et nulla. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque dictum dui sem, non placerat tortor rhoncus in. Sed placerat nulla at rhoncus iaculis.

Document Section

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed condimentum nulla vel neque venenatis, nec placerat lorem placerat. Cras purus eros, gravida vitae tincidunt id, vehicula nec nulla. Fusce aliquet auctor cursus. Phasellus ex neque, vestibulum non est vitae, viverra fringilla tortor. Donec vestibulum convallis justo, a faucibus lorem vulputate vel. Aliquam cursus odio eu felis sodales aliquet. Aliquam erat volutpat. Maecenas eget dictum mauris. Suspendisse arcu eros, condimentum eget risus sed, luctus efficitur arcu. Cras ut dictum mi. Nulla congue interdum lorem, semper semper enim commodo nec.

Document Subsection

_images/yi_jing_01_chien.jpg

This is a caption for a figure. Text should wrap around the caption.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur in eros et blandit. Nunc maximus, nisl at auctor vestibulum, justo ex sollicitudin ligula, id faucibus urna orci tristique nisl. Duis auctor rutrum orci, in ornare lacus condimentum quis. Quisque arcu velit, facilisis quis interdum ac, hendrerit auctor mauris. Curabitur urna nibh, porttitor at ante sit amet, vestibulum interdum dolor. Duis dictum elit orci, tincidunt imperdiet sem pellentesque et. In vehicula pellentesque varius. Phasellus a turpis sollicitudin, bibendum massa et, imperdiet neque. Integer quis sapien in magna rutrum bibendum. Integer cursus ex sed magna vehicula finibus. Proin tempus orci quis dolor tempus, nec condimentum odio vestibulum. Etiam efficitur sollicitudin libero, tincidunt volutpat ligula interdum sed. Praesent congue sagittis nisl et suscipit. Vivamus sagittis risus et egestas commodo.Cras venenatis arcu in pharetra interdum. Donec quis metus porttitor tellus cursus lobortis. Quisque et orci magna. Fusce rhoncus mi mi, at vehicula massa rhoncus quis. Mauris augue leo, pretium eget molestie vitae, efficitur nec nulla. In hac habitasse platea dictumst. Sed sit amet imperdiet purus.

Paragraph Level Markup

Inline Markup

Paragraphs contain text and may contain inline markup: emphasis, strong emphasis, inline literals, standalone hyperlinks (http://www.python.org), external hyperlinks (Python [5]), internal cross-references (example), external hyperlinks with embedded URIs (Python web site), footnote references (manually numbered [1], anonymous auto-numbered [3], labeled auto-numbered [2], or symbolic [*]), citation references ([12]), substitution references (EXAMPLE), and inline hyperlink targets (see Targets below for a reference back to here). Character-level inline markup is also possible (although exceedingly ugly!) in reStructuredText. Problems are indicated by |problematic| text (generated by processing errors; this one is intentional).

Also with sphinx.ext.autodoc, which I use in the demo, I can link to test_py_module.test.Foo. It will link you right my code documentation for it.

The default role for interpreted text is Title Reference. Here are some explicit interpreted text roles: a PEP reference (PEP 287); an RFC reference (RFC 2822); a subscript; a superscript; and explicit roles for standard inline markup.

GUI labels are a useful way to indicate that Some action is to be taken by the user. The GUI label should not run over line-height so as not to interfere with text from adjacent lines.

Key-bindings indicate that the read is to press a button on the keyboard or mouse, for example MMB and Shift-MMB. Another useful markup to indicate a user action is to use menuselection this can be used to show short and long menus in software. For example, and menuselection can be seen here that breaks is too long to fit on this line. My ‣ Software ‣ Some menu ‣ Some sub menu 1 ‣ sub menu 2.

Let’s test wrapping and whitespace significance in inline literals: This is an example of --inline-literal --text, --including some-- strangely--hyphenated-words.  Adjust-the-width-of-your-browser-window to see how the text is wrapped.  -- ---- --------  Now note    the spacing    between the    words of    this sentence    (words should    be grouped    in pairs).

If the --pep-references option was supplied, there should be a live link to PEP 258 here.

Math

This is a test. Here is an equation: \(X_{0:5} = (X_0, X_1, X_2, X_3, X_4)\). Here is another:

(1)\[\nabla^2 f = \frac{1}{r^2} \frac{\partial}{\partial r} \left( r^2 \frac{\partial f}{\partial r} \right) + \frac{1}{r^2 \sin \theta} \frac{\partial f}{\partial \theta} \left( \sin \theta \, \frac{\partial f}{\partial \theta} \right) + \frac{1}{r^2 \sin^2\theta} \frac{\partial^2 f}{\partial \phi^2}\]

You can add a link to equations like the one above (1) by using :eq:.

Blocks

Literal Blocks

Literal blocks are indicated with a double-colon (“::”) at the end of the preceding paragraph (over there -->). They can be indented:

if literal_block:
    text = 'is left as-is'
    spaces_and_linebreaks = 'are preserved'
    markup_processing = None

Or they can be quoted without indentation:

>> Great idea!
>
> Why didn't I think of that?

Line Blocks

This is a line block. It ends with a blank line.
Each new line begins with a vertical bar (“|”).
Line breaks and initial indents are preserved.
Continuation lines are wrapped portions of long lines; they begin with a space in place of the vertical bar.
The left edge of a continuation line need not be aligned with the left edge of the text above it.
This is a second line block.

Blank lines are permitted internally, but they must begin with a “|”.

Take it away, Eric the Orchestra Leader!

A one, two, a one two three four

Half a bee, philosophically,
must, ipso facto, half not be.
But half the bee has got to be,
vis a vis its entity. D’you see?

But can a bee be said to be
or not to be an entire bee,
when half the bee is not a bee,
due to some ancient injury?

Singing…

Block Quotes

Block quotes consist of indented body elements:

My theory by A. Elk. Brackets Miss, brackets. This theory goes as follows and begins now. All brontosauruses are thin at one end, much much thicker in the middle and then thin again at the far end. That is my theory, it is mine, and belongs to me and I own it, and what it is too.

—Anne Elk (Miss)

Doctest Blocks

>>> print 'Python-specific usage examples; begun with ">>>"'
Python-specific usage examples; begun with ">>>"
>>> print '(cut and pasted from interactive Python sessions)'
(cut and pasted from interactive Python sessions)

Code Blocks

# parsed-literal test
curl -O http://someurl/release-0.4.2.tar-gz
Code Blocks can have captions.
{
"windows": [
    {
    "panes": [
        {
        "shell_command": [
            "echo 'did you know'",
            "echo 'you can inline'"
        ]
        },
        {
        "shell_command": "echo 'single commands'"
        },
        "echo 'for panes'"
    ],
    "window_name": "long form"
    }
],
"session_name": "shorthands"
}

Emphasized lines with line numbers

1
2
3
4
5
def some_function():
    interesting = False
    print 'This line is highlighted.'
    print 'This one is not...'
    print '...but this one is.'

References

Footnotes

[1](1, 2)

A footnote contains body elements, consistently indented by at least 3 spaces.

This is the footnote’s second paragraph.

[2](1, 2) Footnotes may be numbered, either manually (as in [1]) or automatically using a “#”-prefixed label. This footnote has a label so it can be referred to from multiple places, both as a footnote reference ([2]) and as a hyperlink reference (label).
[3]This footnote is numbered automatically and anonymously using a label of “#” only.
[*]Footnotes may also use symbols, specified with a “*” label. Here’s a reference to the next footnote: [†].
[†]This footnote shows the next symbol in the sequence.
[4]Here’s an unreferenced footnote, with a reference to a nonexistent footnote: [5]_.

Citations

[11]This is the citation I made, let’s make this extremely long so that we can tell that it doesn’t follow the normal responsive table stuff.
[12](1, 2) This citation has some code blocks in it, maybe some bold and italics too. Heck, lets put a link to a meta citation [13] too.
[13]This citation will have two backlinks.

Here’s a reference to the above, [12], and a [nonexistent] citation.

Here is another type of citation: citation

Glossary

This is a glossary with definition terms for thing like Writing:

Documentation
Provides users with the knowledge they need to use something.
Reading
The process of taking information into ones mind through the use of eyes.
Writing
The process of putting thoughts into a medium for other people to read.

Targets

This paragraph is pointed to by the explicit “example” target. A reference can be found under Inline Markup, above. Inline hyperlink targets are also possible.

Section headers are implicit targets, referred to by name. See Targets, which is a subsection of `Body Elements`_.

Explicit external targets are interpolated into references such as “Python [5]”.

Targets may be indirect and anonymous. Thus this phrase may also refer to the Targets section.

Here’s a `hyperlink reference without a target`_, which generates an error.

Directives

Contents

These are just a sample of the many reStructuredText Directives. For others, please see: http://docutils.sourceforge.net/docs/ref/rst/directives.html.

Centered text

You can create a statement with centered text with .. centered::

This is centered text!

Images & Figures

Images

An image directive (also clickable – a hyperlink reference):

_images/yi_jing_01_chien.jpg

Figures

reStructuredText, the markup syntax

A figure is an image with a caption and/or a legend:

re Revised, revisited, based on ‘re’ module.
Structured Structure-enhanced text, structuredtext.
Text Well it is, isn’t it?

This paragraph is also part of the legend.

A figure directive with center alignment

_images/yi_jing_01_chien.jpg

This caption should be centered.

Admonitions

Attention

Directives at large.

Caution

Don’t take any wooden nickels.

Danger

Mad scientist at work!

Error

Does not compute.

Hint

It’s bigger than a bread box.

Important

  • Wash behind your ears.
  • Clean up your room.
    • Including the closet.
    • The bathroom too.
      • Take the trash out of the bathroom.
      • Clean the sink.
  • Call your mother.
  • Back up your data.

Note

This is a note. Equations within a note: \(G_{\mu\nu} = 8 \pi G (T_{\mu\nu} + \rho_\Lambda g_{\mu\nu})\).

Tip

15% if the service is good.

Example
Thing1
Thing2
Thing3

Warning

Strong prose may provoke extreme mental exertion. Reader discretion is strongly advised.

And, by the way…

You can make up your own admonition too.

Topics, Sidebars, and Rubrics

Topic Title

This is a topic.

This is a rubric

Compound Paragraph

This paragraph contains a literal block:

Connecting... OK
Transmitting data... OK
Disconnecting... OK

and thus consists of a simple paragraph, a literal block, and another simple paragraph. Nonetheless it is semantically one paragraph.

This construct is called a compound paragraph and can be produced with the “compound” directive.

Lists & Tables

Lists

Enumerated Lists

  1. Arabic numerals.

    1. lower alpha)
      1. (lower roman)
        1. upper alpha.
          1. upper roman)
  2. Lists that don’t start at 1:

    1. Three
    2. Four
    1. C
    2. D
    1. iii
    2. iv
  3. List items may also be auto-enumerated.

Definition Lists

Term
Definition
Term : classifier

Definition paragraph 1.

Definition paragraph 2.

Term
Definition

Option Lists

For listing command-line options:

-a command-line option “a”
-b file options can have arguments and long descriptions
--long options can be long also
--input=file long options can also have arguments
--very-long-option
 

The description can also start on the next line.

The description may contain multiple body elements, regardless of where it starts.

-x, -y, -z Multiple options are an “option group”.
-v, --verbose Commonly-seen: short & long options.
-1 file, --one=file, --two file
 Multiple options with arguments.
/V DOS/VMS-style options too

There must be at least two spaces between the option and the description.

Field list

Author:

David Goodger

Address:

123 Example Street Example, EX Canada A1B 2C3

Contact:

docutils-develop@lists.sourceforge.net

Authors:

Me; Myself; I

organization:

humankind

date:

$Date: 2012-01-03 19:23:53 +0000 (Tue, 03 Jan 2012) $

status:

This is a “work in progress”

revision:

$Revision: 7302 $

version:

1

copyright:

This document has been placed in the public domain. You may do with it as you wish. You may copy, modify, redistribute, reattribute, sell, buy, rent, lease, destroy, or improve it, quote it at length, excerpt, incorporate, collate, fold, staple, or mutilate it, or do anything else to it that your or anyone else’s heart desires.

field name:

This is a generic bibliographic field.

field name 2:

Generic bibliographic fields may contain multiple body elements.

Like this.

Dedication:

For Docutils users & co-developers.

abstract:

This document is a demonstration of the reStructuredText markup language, containing examples of all basic reStructuredText constructs and many advanced constructs.

Bullet Lists

  • A bullet list

    • Nested bullet list.
    • Nested item 2.
  • Item 2.

    Paragraph 2 of item 2.

    • Nested bullet list.
    • Nested item 2.
      • Third level.
      • Item 2.
    • Nested item 3.
  • inline literall

  • inline literall

  • inline literall

Second list level

  • here is a list in a second-level section.

  • yahoo

  • yahoo

    • yahoo

    • here is an inner bullet oh

      • one more with an inline literally. yahoo

        heh heh. child. try to beat this embed:

         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        # -*- coding: utf-8 -*-
        """Test Module for sphinx_rtd_theme."""
        
        
        class Foo:
        
            """Docstring for class Foo.
        
            This text tests for the formatting of docstrings generated from output
            ``sphinx.ext.autodoc``. Which contain reST, but sphinx nests it in the
        
    • and another. yahoo

    • yahoo

    • hi

  • and hehe

But deeper down the rabbit hole
  • I kept saying that, “deeper down the rabbit hole”. yahoo
    • I cackle at night yahoo.
  • I’m so lonely here in GZ guangzhou
  • A man of python destiny, hopes and dreams. yahoo

Hlists

  • First item
  • Second item
  • Third item
  • Forth item
  • Fifth item
  • Sixths item

Hlist with images

  • _images/yi_jing_01_chien.jpg

    This is a short caption for a figure.

  • _images/yi_jing_01_chien.jpg

    This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.

Numbered List

  1. One,
  2. Two.
  3. Three with long text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed feugiat sagittis neque quis eleifend. Duis rutrum lectus sit amet mattis suscipit.
    1. Using bullets and letters. (A)
    1. Using bullets and letters. (B)
    1. Using bullets and letters. (C)

Tables

Grid Tables

Here’s a grid table followed by a simple table:

Header row, column 1 (header rows optional) Header 2 Header 3 Header 4
body row 1, column 1 column 2 column 3 column 4
body row 2 Cells may span columns.
body row 3 Cells may span rows.
  • Table cells
  • contain
  • body elements.
body row 4
body row 5 Cells may also be empty: -->  
Inputs Output
A B A or B
False False False
True False True
False True True
True True True

Giant Tables

Header 1 Header 2 Header 3 Header 1 Header 2 Header 3 Header 1 Header 2 Header 3 Header 1 Header 2 Header 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3
body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3 body row 1 column 2 column 3

List Tables

List tables can have captions like this one.
List table Header 1 Header 2 Header 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
Stub Row 1 Row 1 Column 2 Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
Stub Row 2 Row 2 Column 2 Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
Stub Row 3 Row 3 Column 2 Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
This is a list table with images in it.
_images/yi_jing_01_chien.jpg

This is a short caption for a figure.

_images/yi_jing_01_chien.jpg

This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.

test_py_module

Test Module for sphinx_rtd_theme.

class test_py_module.test.Foo(qux, spam=False)[source]

Docstring for class Foo.

This text tests for the formatting of docstrings generated from output sphinx.ext.autodoc. Which contain reST, but sphinx nests it in the <dl>, and <dt> tags. Also, <tt> is used for class, method names and etc, but those will always have the .descname or .descclassname class.

Normal <tt> (like the <tt> I just wrote here) needs to be shown with the same style as anything else with ``this type of markup``.

It’s common for programmers to give a code example inside of their docstring:

from test_py_module import Foo

myclass = Foo()
myclass.dothismethod('with this argument')
myclass.flush()

print(myclass)

Here is a link to capitalize(). Here is a link to __init__().

__init__(qux, spam=False)[source]

Start the Foo.

Parameters:
  • qux (string) – The first argument to initialize class.
  • spam (bool) – Spam me yes or no…
add(val1, val2)[source]

Return the added values.

Parameters:
  • val1 (int) – First number to add.
  • val2 (int) – Second number to add.
Return type:

int

another_function(a, b, **kwargs)[source]

Here is another function.

Parameters:
  • a (int) – The number of green hats you own.
  • b (int) – The number of non-green hats you own.
  • kwargs (float) – Additional keyword arguments. Each keyword parameter should specify the name of your favorite cuisine. The values should be floats, specifying the mean price of your favorite dish in that cooking style.
Returns:

A 2-tuple. The first element is the mean price of all dishes across cuisines. The second element is the total number of hats you own: \(a + b\).

Return type:

tuple

Raises:

ValueError – When a is not an integer.

New in version 1.0: This was added in 1.0

Changed in version 2.0: This was changed in 2.0

Deprecated since version 3.0: This is deprecated since 3.0

bar = 1

Doc comment for class attribute Foo.bar. It can have multiple lines.

baz = 2

Docstring for class attribute Foo.baz.

capitalize(myvalue)[source]

Return a string as uppercase.

Parameters:myvalue (string) – String to change
Return type:string
flox = 1.5

Doc comment for Foo.flox. One line only.

qux = None

Doc comment for instance attribute qux.

spam = None

Docstring for instance attribute spam.

Generated Index

Part of the sphinx build process in generate and index file: Index.

Optional parameter args

At this point optional parameters cannot be generated from code. However, some projects will manually do it, like so:

This example comes from django-payments module docs.

class payments.dotpay.DotpayProvider(seller_id, pin[, channel=0[, lock=False], lang='pl'])

This backend implements payments using a popular Polish gateway, Dotpay.pl.

Due to API limitations there is no support for transferring purchased items.

Parameters:
  • seller_id – Seller ID assigned by Dotpay
  • pin – PIN assigned by Dotpay
  • channel – Default payment channel (consult reference guide)
  • lang – UI language
  • lock – Whether to disable channels other than the default selected above

Data

test_py_module.test.Data_item_1
test_py_module.test.Data_item_2
test_py_module.test.Data_item_3

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce congue elit eu hendrerit mattis.

Some data link Data_item_1.

Long Sticky Nav

This section demonstrates how the ‘sticky_navigation’ setting behaves when the menu is very long. When this section is selected, it will make the menu and the main area scroll when you are at the top of the page.

Example Menu 1

Just a place holder…

Example Menu 2

Just a place holder…

Example Menu 3

Just a place holder…

Example Menu 4

Just a place holder…

Example Menu 5

Just a place holder…

Example Menu 6

Just a place holder…

Example Menu 7

Just a place holder…

Example Menu 8

Just a place holder…

Example Menu 9

Just a place holder…

Example Menu 10

Just a place holder…

Example Menu 11

Just a place holder…

Example Menu 12

Just a place holder…

Example Menu 13

Just a place holder…

Example Menu 14

Just a place holder…

Example Menu 15

Just a place holder…

Example Menu 16

Just a place holder…

Example Menu 17

Just a place holder…

Example Menu 18

Just a place holder…

Example Menu 19

Just a place holder…

Example Menu 20

Just a place holder…

Example Submenu 1

Just a place holder…

Example Submenu 2

Just a place holder…

Submenu 1

Just a place holder…

Subsubmenu 1

Just a place holder…

Submenu 2

Just a place holder…

Subsubmenu 1

Just a place holder…

Submenu 3

Just a place holder…

Submenu 4

Just a place holder…

Submenu 5

Just a place holder…