2015-11-10 20 views
8

:maxdepth: 2'u içeren bir TOC (index.rst) ile Sphinx project var. Sorun, release bölümü için derinliği 1 olarak azaltmak, böylece ana TOC'deki sürüm notları listesini içermiyor (liste çok uzun).Sfenks TOC ağacını değiştirin

Bu TOK listesi doctree-resolved olay işleyicisi kullanılarak değiştirilebilir görünüyor, ama olay işleyicisi TOK ağacı nasıl değiştirileceğini bilemiyorum:

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

Sizinle aynı sorun içindeyim - TOC düğümlerini okuyabiliyorum ve değiştirebiliyorum, ancak değişiklikleri sürdüremiyor gibi görünmüyor. – geographika

cevap

1

Düşük teknoloji ürünü bir çözüm buldum: CSS kullanarak son öğenin alt öğelerini gizleyin.

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

Belki de değil ideal bir çözümdür, ama aynı sayfada birden benzeri bir şey toctree girdileri kullanmadan önce böyle bir şey yaptık: en temalar ağaçlar arasında ekstra dolgu katacak beri İdeal değil

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

.. toctree:: 
    :maxdepth: 2 

    overview 
    installation 

.. toctree:: 
    :maxdepth: 1 

    release 

ama benim durumumda daha iyi olduğunu th sahip olmak Belirli sayfalar için iç içe geçmiş öğelerin çok büyük bir listesi.

+0

Bu ilginç bir çözümdür, fakat benim durumumda "numaralandırılmış" kullandığımızdan dolayı yardımcı olmaz, böylece yeni bir TOC'nin başlatılması numaralandırmayı sıfırlar. –