Home > DeveloperSection > Forums > Modify Sphinx TOC tree
lois waisbrooker
lois waisbrooker

Total Post:70

Points:494
Posted on    November-19-2015 6:24 AM

 Python Python-3.4 
Ratings:


 1 Reply(s)
 287  View(s)
Rate this:
I have a Sphinx project with a TOC (index.rst) that includes :maxdepth: 2. The problem is I want to reduce the depth to 1 for the release section so that it doesn't include the list of release notes in the main TOC (the list is too long).

It seems that the TOC list can be modified using a doctree-resolved event handler, but I can't figure out how to modify the TOC tree in the event handler:

from sphinx import addnodes
def setup(app):
    def update_toctree(app, doctree, docname):
        if docname != 'index':
            return
        node = doctree.traverse(addnodes.toctree)[0]
        toc = app.env.resolve_toctree(docname, app.builder, node)
        # do something with "toc" here
    app.connect('doctree-resolved', update_toctree)


Mayank Tripathi
Mayank Tripathi

Total Post:397

Points:3117
Supported
Posted on    November-19-2015 6:46 AM

Perhaps not an ideal solution, but I've done something like this before using multiple toctree entries on the same page, something like:

####################
Presto Documentation
####################
.. toctree::
    :maxdepth: 2
    overview
    installation
.. toctree::
    :maxdepth: 1
    release
It's not ideal since most themes will add extra padding between the trees, but in my case that was better than having the huge list of nested items for certain pages.

Don't want to miss updates? Please click the below button!

Follow MindStick