2015-11-10 11 views
8

Ho un Sphinx project con un TOC (index.rst) che include :maxdepth: 2. Il problema è che voglio ridurre la profondità a 1 per la sezione release in modo che non includa l'elenco delle note di rilascio nel TOC principale (l'elenco è troppo lungo).Modifica albero Sphinx TOC

Sembra che l'elenco sommario può essere modificato utilizzando un gestore doctree-resolved evento, ma io non riesco a capire come modificare l'albero TOC nel gestore di eventi:

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) 
+0

Ranato allo stesso problema di te - Sono in grado di leggere e modificare i nodi TOC, ma non riesco a persistere le modifiche. – geographika

risposta

1

Ho trovato una soluzione a bassa tecnologia: nascondi i figli dell'ultimo elemento tramite CSS.

div.toctree-wrapper > ul > li:last-child > ul { 
    display: none; 
} 
4
Forse non

una soluzione ideale, ma ho fatto qualcosa di simile prima di utilizzare molteplici toctree voci sulla stessa pagina, qualcosa di simile:

#################### 
Presto Documentation 
#################### 

.. toctree:: 
    :maxdepth: 2 

    overview 
    installation 

.. toctree:: 
    :maxdepth: 1 

    release 

non è l'ideale in quanto la maggior parte dei temi aggiungerà chilo in più tra gli alberi, ma nel mio caso che era meglio di avendo th Un enorme elenco di oggetti nidificati per determinate pagine.

+0

Questa è una soluzione interessante, ma non è di aiuto nel mio caso perché usiamo "numerato", quindi l'avvio di un nuovo sommario ripristinerebbe la numerazione. –