How to create a title that will not appear in the toctree with Sphinx?

Viewed 6688

I am using Sphinx to create documentation for a Python module.

I wold like to add subtitles on a page but I don't want them to appear in the toctree.

I want small sections and short (few lines) descriptions. Adding every section title to the toctree would make browsing the docs much harder.

Here is my index.rst:

Welcome to ModernGL's documentation!
====================================

.. figure:: Examples/images/02_uniforms_and_attributes.png
    :scale: 50 %
    :alt: ModernGL
    :align: center
    :figclass: align-center

Start `here <ModernGL.html>`_.

.. toctree::
    :maxdepth: 4
    :caption: Contents:

    ModernGL <ModernGL.rst>
    Examples <Examples.rst>
    Contributing <Contributing.rst>


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

I want to add some subtitles:

Subtitle 1
**********

Subtitle 2
**********

Subtitle 3
**********

Subtitle 4
**********

I checked the documentation and I have no clue what type of underline should I use. Not sure if there is a special underline that will be convert the title to a <h4> or <h5>

With a github README.md adding more # characters will result in smaller titles. What is the equivalent in *.rst?

The build documentation can be found here and it does not contain subtitles since it would ruin the current structure of the docs.

2 Answers

Timestamp: this answer's sphinx-doc.org excerpts are from May, 2021.

Short answer:

I wold like to add subtitles on a page but I don't want them to appear in the toctree.

You're looking for the .. toctree:: directive's :titlesonly: option.

Documentation for .. toctree::'s :titlesonly: here:

Details:

I'm assuming that you do want all of the .rst entries in your example's .. toctree:: directive to appear in the TOC (table of contents) which Sphinx inserts there, but that you do not want any Section Headers within these .rst files to appear in that TOC.

Documentation for Section Headers here:

  • https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#sections
  • Definition -- Quoted text from that link:

    Section headers (ref) are created by underlining (and optionally overlining) the section title with a punctuation character, at least as long as the text:

    =================
    This is a heading
    =================
    

    ...

    • # with overline, for parts
    • * with overline, for chapters
    • =, for sections
    • -, for subsections
    • ^, for subsubsections
    • ", for paragraphs

By default, without the :titlesonly: option under the .. toctree:: directive, the rendered TOC tree will display both the "titles" of the listed .rst files and also any Section Headers listed within these .rst files.

Using the :titlesonly: option under the .. toctree:: directive, these "Headings" a.k.a. Section Headers will not be rendered in the TOC tree (and only the "titles" of the .rst files will be displayed).




Example without :titlesonly: option:


  • If your .. toctree:: looks like this (without the :titlesonly: option):
      index.rst, toctree without titlesonly

  • Then the TOC is rendered
    listing both the .rst page titles
    and also their Section Headers:
      html output, toctree without titlesonly



Example with :titlesonly: option present:


  • If your .. toctree:: looks like this (with the :titlesonly: option):
      index.rst, toctree WITH titlesonly

  • Then the TOC is rendered
    listing only the .rst page titles
    but not their contained Section Headers:
      html output, toctree WITH titlesonly



Related, but different scope:

This answer (above) is for the .. toctree:: directive.

Different steps are required for altering the sidebar, and these steps can be different depending on the custom theme you're using with Sphinx.

If you also want to modify the TOC displayed by the sidebar, here are some related links to help you get started:

(I'd list more details for this, but I'm still investigating. I'm currently looking for a way to (1) display Section Headers in the Sidebar TOC using the sphinx_rtd_theme, but to (2) not display Section Headers in the .. toctree:: inserts.)

Related