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

2

9

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.

Chartist answered 1/6, 2017 at 14:45 Comment(3)
You could consider using the Rubric directive.Donnetta
Yes rubric is better then the ^^^^ underline: Here is an example: rst file and css fileChartist
You are mixing several things into one question. I would open a separate question for this: "With a github README.md adding more # characters will result in smaller titles. What is the equivalent in *.rst?"Adumbral
D
7

Did you try to add hidden in your toctree directive? Something like:

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

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

This will still notify Sphinx of the document hierarchy, but not insert links into the document at the location of the directive – this makes sense if you intend to insert these links yourself, in a different style, or in the HTML sidebar.

As for "section headers" (titles and subtitles) this extract from official Sphinx documentation might give you an answer:

Normally, there are no heading levels assigned to certain characters as the structure is determined from the succession of headings.

You might try to use ^ character for your subsections to render out the heading you need.

Deductible answered 1/6, 2017 at 14:57 Comment(0)
D
6

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.)

Dozier answered 2/5, 2021 at 17:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.