diff --git a/CHANGES b/CHANGES index ad71b6cfe..c5ae5c1a8 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,11 @@ Release 1.2 (in development) Previously, if these values were not set, no output would be genereted by their respective builders. +* The :rst:dir:`toctree` directive and the ``toctree()`` template function now + have an ``includehidden`` option that includes hidden toctree entries (bugs + #790 and #1047). A bug in the ``maxdepth`` option for the ``toctree()`` + template function has been fixed (bug #1046). + * PR#99: Strip down seealso directives to normal admonitions. This removes their unusual CSS classes (admonition-see-also), inconsistent LaTeX admonition title ("See Also" instead of "See also"), and spurious indentation diff --git a/doc/markup/toctree.rst b/doc/markup/toctree.rst index 625fbb611..fe27e019d 100644 --- a/doc/markup/toctree.rst +++ b/doc/markup/toctree.rst @@ -126,6 +126,18 @@ tables of contents. The ``toctree`` directive is the central element. intend to insert these links yourself, in a different style, or in the HTML sidebar. + In cases where you want to have only one top-level toctree and hide all other + lower level toctrees you can add the "includehidden" option to the top-level + toctree entry:: + + .. toctree:: + :includehidden: + + doc_1 + doc_2 + + All other toctree entries can then be eliminated by the "hidden" option. + In the end, all documents in the :term:`source directory` (or subdirectories) must occur in some ``toctree`` directive; Sphinx will emit a warning if it finds a file that is not included, because that means that this file will not @@ -150,6 +162,8 @@ tables of contents. The ``toctree`` directive is the central element. .. versionchanged:: 1.1 Added numeric argument to "numbered". + .. versionchanged:: 1.2 + Added "includehidden" option. Special names ------------- diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py index 3167d606f..75a199159 100644 --- a/sphinx/directives/other.py +++ b/sphinx/directives/other.py @@ -43,6 +43,7 @@ class TocTree(Directive): 'maxdepth': int, 'glob': directives.flag, 'hidden': directives.flag, + 'includehidden': directives.flag, 'numbered': int_or_nothing, 'titlesonly': directives.flag, } @@ -108,6 +109,7 @@ class TocTree(Directive): subnode['maxdepth'] = self.options.get('maxdepth', -1) subnode['glob'] = glob subnode['hidden'] = 'hidden' in self.options + subnode['includehidden'] = 'includehidden' in self.options subnode['numbered'] = self.options.get('numbered', 0) subnode['titlesonly'] = 'titlesonly' in self.options set_source_info(self, subnode) diff --git a/sphinx/environment.py b/sphinx/environment.py index 4efea83de..a08d671ad 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -1514,6 +1514,8 @@ class BuildEnvironment: maxdepth = maxdepth or toctree.get('maxdepth', -1) if not titles_only and toctree.get('titlesonly', False): titles_only = True + if not includehidden and toctree.get('includehidden', False): + includehidden = True # NOTE: previously, this was separate=True, but that leads to artificial # separation when two or more toctree entries form a logical unit, so