2011-11-30 2 views

Odpowiedz

10

Nie ma prostej opcji odwrotnego sortowania wartości losowej. Ale możesz to zrobić, modyfikując strukturę dokumentu, zanim zostanie zapisany do pliku. Oto sugestia. Dodaj następujący kod do conf.py:

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) 

Funkcja reverse_toctree() zwrotna jest wywoływana, gdy zdarzenie doctree-resolved jest zwolniony. Funkcja lokalizuje węzeł toctree w drzewie dokumentu i zmienia go na miejscu.

Więcej szczegółów na temat Sphinx i Docutils API:

+0

Nice. Czy nie odwróciłby to jednak każdego toctree? Prawdopodobnie możesz dodać sprawdzenie parametru ': reversed: do węzła TOCtree, aby kontrolować to zachowanie, nie? –

+0

@Kevin Horn: Kod odwraca wartość domyślną w dokumencie "index" (root), jeśli użyta jest opcja: glob :. OP nie określił żadnych szczegółowych wymagań i nie chciałem, aby ta odpowiedź była czymś więcej niż tylko skromną sugestią. Jestem pewien, że istnieje wiele sposobów na jego ulepszenie. Dzięki za komentarz i przegłosowanie! – mzjn

+3

Ale to nie odwraca ToC na pasku bocznym. – Adobe

11

Dodaje odwrócony opcję toctree.

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) 

który pozwala zrobić:

Contents: 

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

    20* 
+0

Powoduje to również odwrócenie wartości domyślnej na pasku bocznym. – brandones

1

Jako Sfinks 1.5+ jest wbudowany :reversed: flagą można dodać do toctree:

.. toctree:: 
    :glob: 
    :reversed: 

    2011* 

Aby uzyskać więcej informacji, patrz the Sphinx documentation.

+0

Funkcja została dodana w Sphinx 1.5 (1.5a2): http://www.sphinx-doc.org/en/stable/changes.html#id30. – mzjn