В документации Sphinx, как я могу изменить порядок тектров, предоставляемый опцией флага "glob"? - PullRequest
9 голосов
/ 30 ноября 2011

Кто-нибудь знает какой-либо вариант упорядочить toctree в порядке убывания имен файлов?В случае возрастания порядка мы можем использовать: glob: option, подобный этому:

.. toctree:
   :glob:

   2011*

Это будет удобно для ежедневных заметок, написанных в виде реструктурированного текста, о которых следует сообщать в документе Sphinx.

Ответы [ 3 ]

12 голосов
/ 08 апреля 2012

Это добавляет обратную опцию к 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)

Что позволяет сделать:

Contents:

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

   20*
11 голосов
/ 10 декабря 2011

Нет простой опции для обратной сортировки по дереву.Но вы можете сделать это, изменив структуру документа до того, как он будет записан в файл.Вот предложение.Добавьте следующий код в 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)

Функция обратного вызова reverse_toctree() вызывается при возникновении события doctree-resolved.Функция находит узел toctree в дереве документа и меняет его на месте.

Подробнее о API Sphinx и Docutils:

1 голос
/ 30 января 2018

Начиная с Sphinx 1.5+ есть встроенный флаг :reversed:, который вы можете добавить к toctree:

.. toctree::
   :glob:
   :reversed:

   2011*

Для получения дополнительной информации см. документацию Sphinx .

...