2011-11-30 5 views

cevap

10

Tutanakları tersine sıralamak için basit bir seçenek yoktur. Ancak belge yapısını dosyaya yazılmadan önce değiştirerek yapabilirsiniz. İşte bir öneri. conf.py aşağıdaki kodu ekleyin: doctree-resolved etkinliği tetiklendiğinde

def reverse_toctree(app, doctree, docname): 
    """Reverse the order of entries in the root toctree if 'glob' is used.""" 
    if docname == "index": 
     for node in doctree.traverse(): 
      if node.tagname == "toctree" and node.get("glob"): 
       node["entries"].reverse() 
       break 

def setup(app): 
    app.connect("doctree-resolved", reverse_toctree) 

reverse_toctree() geri çağırma işlevi çağrılır. İşlev belge ağacındaki toctree düğümünü bulur ve yerinde değiştirir. Sfenks ve Docutils API'ler hakkında

Diğer ayrıntılar:

+0

Güzel. Bu her şeyi tersine çevirmez miydi? Muhtemelen, bu davranışı kontrol etmek için toctree düğümüne ': reversed: parametresi için bir kontrol ekleyebilirsiniz. –

+0

@Kevin Horn: Eğer glob: seçeneği kullanılırsa kod, "index" (kök) belgesindeki tutamayı tersine çevirir. OP, herhangi bir ayrıntılı gereklilik belirtmedi ve bu cevabı alçakgönüllü bir öneriden daha fazlası olarak düşünmedim. Bunu düzeltmenin birçok yolu olduğundan eminim. Yorum ve teşekkür için teşekkürler! – mzjn

+3

Ancak bu, kenar çubuğundaki ToC'yi tersine çevirmiyor. – Adobe

11

Bu toctree bir ters seçeneği ekler. sağlayan

from sphinx.directives import TocTree 
from docutils.parsers.rst import directives 

class NewTocTree(TocTree): 
    option_spec = dict(TocTree.option_spec, 
         reversed=directives.flag) 

    def run(self): 
     rst = super(NewTocTree, self).run() 
     if 'reversed' in self.options: 
      rst[0][0]['entries'].reverse() 
     return rst 

def setup(app): 
    app.add_directive('toctree', NewTocTree) 

yapmanız:

Sfenks'in itibariyle
Contents: 

.. toctree:: 
    :maxdepth: 2 
    :reversed: 
    :glob: 

    20* 
+0

Bu, kenar çubuğundaki tutamacı da tersine çevirir. – brandones

1

1.5+ yerleşik bir :reversed: bayrak bir toctree ekleyebileceğiniz vardır: Daha fazla bilgi için

.. toctree:: 
    :glob: 
    :reversed: 

    2011* 

, the Sphinx documentation'a bakın.

+0

Özellik, Sphinx 1.5 (1.5a2) 'ye eklenmiştir: http://www.sphinx-doc.org/en/stable/changes.html#id30. – mzjn