Добавление подразделов self в оглавление
У меня возникла проблема с получением оглавления (TOC) для отображения подразделов первой страницы моей документации.
У меня есть несколько разделов на моей первой странице, и я хотел бы, чтобы они отображались в оглавлении. Отображение подраздела отлично работает для всех остальных страниц, включенных в оглавление, но не для себя.
мой index.rst
код:
=====
Title
=====
Subsection
----------
Some documentation.
Contents
--------
.. toctree::
:maxdepth: 2
self
development
То, что я ожидал увидеть в оглавлении:
- заглавие
- подсекция
- содержание
- развитие
- подсекция
Вместо этого я получаю следующее:
- заглавие
- развитие
- подсекция
Пока я нашел одно решение, но оно не совсем удовлетворительное. Я могу поместить все содержимое на отдельной странице, а затем включить содержимое в index.rst
используя .. include:
директива, и поместите отдельную страницу в оглавление. Это заставляет оглавление выглядеть правильно, но создает дублирующую страницу, которая теперь включена в навигацию (предыдущая / следующая страница).
1 ответ
Вы можете использовать директиву TOC из reStructuredText напрямую:
.. contents::
См. http://docutils.sourceforge.net/docs/ref/rst/directives.html.
В вопросе есть несколько проблем с макетом раздела:
Вместо этого я получаю следующее:
- заглавие
- Развитие
- Подраздел
С помощью
self
поскольку запись toctree делает заголовок самого внешнего раздела содержащего
.rst
файл должен быть включен в эту строку записи toctree. В
self
entry не будет отображать подразделы или родственные разделы, только заголовок самого внешнего раздела. Это противоречит обычным свойствам записей toctree.
Два результирующих следствия из вышеизложенного можно сразу заметить в примере из вопроса:
-
title
иdevelopment
неправильно отображаются как находящиеся на одном уровне в иерархии разделов. Когда.rst
файл включен в toctree, его разделы в иерархии разделов располагаются ниже раздела, в котором объявлена директива toctree.
-
title
будет повторяться дважды, как на разных уровнях, если содержащий.rst
помещается во внешнее дерево.
Соответствующий title.rst:
=====
Title
=====
Subsection
----------
Some documentation.
Contents
--------
.. toctree::
:maxdepth: 2
self
development
Соответствующий development.rst:
development
===========
some text
Subsection inside development.rst
---------------------------------
Соответствующий external.rst:
Exterior
========
.. toctree::
:maxdepth: 4
title
Не следует стремиться к структуре разделов, которая противоречит свойствам директивы toctree. Из спецификации вопроса, самым простым и концептуально разумным решением является использование contents
директива для перечисления разделов в одном заданном
.rst
документ.
Я ожидал увидеть в оглавлении следующее:
- заглавие
- Подраздел
- Содержание
- Развитие
- Подраздел
Самый простой вариант - использовать отдельные файлы
title.rst
и
development.rst
поместив их на один уровень в
index.rst
toctree.
Соответствующий index.rst:
Exterior
========
.. toctree::
title
development
Чтобы создать дерево ссылок как внутренних, так и внешних по отношению к данному
.rst
файл наилучшее решение состоит в использовании простой маркированный список из гиперссылок целей.
Соответствующий title.rst:
.. _target_title:
=====
Title
=====
.. _target_subsection_title:
Subsection inside title.rst
---------------------------
Some documentation.
.. _target_contents:
Contents
--------
text
- :ref:`Title <target_title>`
- :ref:`Subsection <target_subsection_title>`
- :ref:`Contents <target_contents>`
- :ref:`Development <target_development>`
- :ref:`Subsection <target_subsection_development>`
Соответствующий development.rst:
.. _target_development:
development
===========
some text
.. _target_subsection_development:
Subsection inside development.rst
---------------------------------
Соответствующий external.rst:
Exterior
========
.. toctree::
:maxdepth: 4
title
development
затем включите содержимое в index.rst с помощью директивы.. include:
Использование
.. include::
Директива только изменит место проблем с токтрием, не решив их полностью.