Provided by: python3-sphinx-external-toc_1.0.1-1_all bug

NAME

       sphinxexternaltoc - Sphinx External ToC

       A  sphinx  extension  that  allows  the  documentation  site-map  (a.k.a Table of Contents) to be defined
       external to the documentation files.  As used by Jupyter Book!

       In normal Sphinx documentation, the documentation site-map is defined via a bottom-up approach - adding ‐
       toctree directives within pages of the documentation.

       This extension facilitates a top-down approach to defining the site-map structure, within a  single  YAML
       file.
         [image: ToC graphic] [image] Example ToC.UNINDENT

         It also allows for documents not specified in the ToC to be auto-excluded.

SPHINX

   Configuration
       Add to your conf.py:

          extensions = ["sphinx_external_toc"]
          external_toc_path = "_toc.yml"  # optional, default: _toc.yml
          external_toc_exclude_missing = False  # optional, default: False

       Note  the  external_toc_path  is  always read as a Unix path, and can either be specified relative to the
       source directory (recommended) or as an absolute path.

   Basic Structure
       A minimal ToC defines the top level root key, for a single root document file:

          root: intro

       The value of the root key will be a path to a file, in Unix format (folders split by /), relative to  the
       source directory, and can be with or without the file extension.

       NOTE:
          This root file will be set as the master_doc.

       Document  files can then have a subtrees key - denoting a list of individual toctrees for that document -
       and in-turn each subtree should have a entries key - denoting a list of children links, that are one of:

       • file: path to a single document file in Unix format,  with or without the file extension (as for root)

       • glob: path to one or more document files via Unix shell-style wildcards (similar to fnmatch, but single
         stars don't match slashes.)

       • url: path for an external URL (starting e.g. http or https)

       IMPORTANT:
          Each document file can only occur once in the ToC!

       This can proceed recursively to any depth.

          root: intro
          subtrees:
          - entries:
            - file: doc1
              subtrees:
              - entries:
                - file: doc2
                  subtrees:
                  - entries:
                    - file: doc3
            - url: https://example.com
            - glob: subfolder/other*

       This is equivalent to having a single toctree directive in intro, containing doc1, and a  single  toctree
       directive in doc1, with the :glob: flag and containing doc2, https://example.com and subfolder/other*.

       As  a  shorthand,  the  entries key can be at the same level as the file, which denotes a document with a
       single subtree.  For example, this file is exactly equivalent to the one above:

          root: intro
          entries:
          - file: doc1
            entries:
            - file: doc2
              entries:
              - file: doc3
          - url: https://example.com
          - glob: subfolder/other*

   File and URL titles
       By default, the initial header within a file document will be used as its title  in  generated  Table  of
       Contents.  With the title key you can set an alternative title for a document. and also for url:

          root: intro
          subtrees:
          - entries:
            - file: doc1
              title: Document 1 Title
            - url: https://example.com
              title: Example URL Title

   ToC tree options
       Each subtree can be configured with a number of options (see also sphinx toctree options):

       • caption (string): A title for the whole the subtree, e.g. shown above the subtree in ToCs

       • hidden  (boolean): Whether to show the ToC within (inline of) the document (default False).  By default
         it is appended to the end of the document, but see also the tableofcontents directive  for  positioning
         of the ToC.

       • maxdepth  (integer):  A  maximum nesting depth to use when showing the ToC within the document (default
         -1, meaning infinite).

       • numbered (boolean or integer): Automatically add numbers to all documents  within  a  subtree  (default
         False).  If set to True, all sub-trees will also be numbered based on nesting (e.g. with 1.1 or 1.1.1),
         or if set to an integer then the numbering will only be applied to that depth.

       • reversed  (boolean):  If  True then the entries in the subtree will be listed in reverse order (default
         False).  This can be useful when using glob entries.

       • titlesonly (boolean): If True then only the first heading in the document will be shown in the ToC, not
         other headings of the same level (default False).

       These options can be set at the level of the subtree:

          root: intro
          subtrees:
          - caption: Subtree Caption
            hidden: False
            maxdepth: 1
            numbered: True
            reversed: False
            titlesonly: True
            entries:
            - file: doc1
              subtrees:
              - titlesonly: True
                entries:
                - file: doc2

       or, if you are using the shorthand for a single subtree, set options under an options key:

          root: intro
          options:
            caption: Subtree Caption
            hidden: False
            maxdepth: 1
            numbered: True
            reversed: False
            titlesonly: True
          entries:
          - file: doc1
            options:
              titlesonly: True
            entries:
            - file: doc2

       You can also use the top-level defaults key, to set default options for all subtrees:

          root: intro
          defaults:
            titlesonly: True
          options:
            caption: Subtree Caption
            hidden: False
            maxdepth: 1
            numbered: True
            reversed: False
          entries:
          - file: doc1
            entries:
            - file: doc2

       WARNING:
          numbered should not generally be used as a default,  since  numbering  cannot  be  changed  by  nested
          subtrees, and sphinx will log a warning.

       NOTE:
          By  default,  title  numbering  restarts  for  each  subtree.   If  you want want this numbering to be
          continuous, check-out the sphinx-multitoc-numbering extension.

   Using different key-mappings
       For certain use-cases, it is helpful to map the subtrees/entries keys to  mirror  e.g.  an  output  LaTeX
       structure.

       The format key can be used to provide such mappings (and also initial defaults).  Currently available:

       • jb-article:

         • Maps entries -> sections

         • Sets the default of titlesonly to truejb-book:

         • Maps the top-level subtrees to parts

         • Maps the top-level entries to chapters

         • Maps other levels of entries to sections

         • Sets the default of titlesonly to true

       For example:

          defaults:
            titlesonly: true
          root: index
          subtrees:
          - entries:
            - file: doc1
              entries:
              - file: doc2

       is equivalent to:

          format: jb-book
          root: index
          parts:
          - chapters:
            - file: doc1
              sections:
              - file: doc2

       IMPORTANT:
          These change in key names do not change the output site-map structure.

   Excluding files not in ToC
       By  default,  Sphinx will build all document files, regardless of whether they are specified in the Table
       of Contents, if they:

       1. Have a file extension relating to a loaded parser (e.g. .rst or .md)

       2. Do not match a pattern in exclude_patterns

       To automatically add any  document  files  that  do  not  match  a  file  or  glob  in  the  ToC  to  the
       exclude_patterns list, add to your conf.py:

          external_toc_exclude_missing = True

       Note that, for performance, files that are in hidden folders (e.g. in .tox or .venv) will not be added to
       exclude_patterns even if they are not specified in the ToC.  You should exclude these folders explicitly.

       IMPORTANT:
          This feature is not currently compatible with orphan files.

COMMAND-LINE

       This package comes with the sphinx-etoc command-line program, with some additional tools.

       To see all options:

          $ sphinx-etoc --help
          Usage: sphinx-etoc [OPTIONS] COMMAND [ARGS]...

            Command-line for sphinx-external-toc.

          Options:
            --version   Show the version and exit.
            -h, --help  Show this message and exit.

          Commands:
            from-project  Create a ToC file from a project directory.
            migrate    Migrate a ToC from a previous revision.
            parse      Parse a ToC file to a site-map YAML.
            to-project    Create a project directory from a ToC file.

       To build a template project from only a ToC file:

          $ sphinx-etoc to-project -p path/to/site -e rst path/to/_toc.yml

       Note,  you  can  also  add additional files in meta/create_files amd append text to the end of files with
       meta/create_append, e.g.

          root: intro
          entries:
          - glob: doc*
          meta:
            create_append:
              intro: |
                This is some
                appended text
            create_files:
            - doc1
            - doc2
            - doc3

       To build a ToC file from an existing site:

          $ sphinx-etoc from-project path/to/folder

       Some rules used:

       • Files/folders will be skipped if they match a pattern added by -s (based on  fnmatch  Unix  shell-style
         wildcards)

       • Sub-folders with no content files inside will be skipped

       • File and folder names will be sorted by natural order

       • If  there is a file called index (or the name set by -i) in any folder, it will be treated as the index
         file, otherwise the first file by ordering will be used.

       The command can also guess a title for each file, based on its path:

       • The folder name is used for index files, otherwise the file name

       • Words are split by _

       • The first "word" is removed if it is an integer

       For example, for a project with files:

          index.rst
          1_a_title.rst
          11_another_title.rst
          .hidden_file.rst
          .hidden_folder/index.rst
          1_a_subfolder/index.rst
          2_another_subfolder/index.rst
          2_another_subfolder/other.rst
          3_subfolder/1_no_index.rst
          3_subfolder/2_no_index.rst
          14_subfolder/index.rst
          14_subfolder/subsubfolder/index.rst
          14_subfolder/subsubfolder/other.rst

       will create the ToC:

          $ sphinx-etoc from-project path/to/folder -i index -s ".*" -e ".rst" -t
          root: index
          entries:
          - file: 1_a_title
            title: A title
          - file: 11_another_title
            title: Another title
          - file: 1_a_subfolder/index
            title: A subfolder
          - file: 2_another_subfolder/index
            title: Another subfolder
            entries:
            - file: 2_another_subfolder/other
              title: Other
          - file: 3_subfolder/1_no_index
            title: No index
            entries:
            - file: 3_subfolder/2_no_index
              title: No index
          - file: 14_subfolder/index
            title: Subfolder
            entries:
            - file: 14_subfolder/subsubfolder/index
              title: Subsubfolder
              entries:
              - file: 14_subfolder/subsubfolder/other
                title: Other

API

       The ToC file is parsed to a SiteMap, which is a MutableMapping subclass, with keys representing  docnames
       mapping to a Document that stores information on the toctrees it should contain:

          import yaml
          from sphinx_external_toc.parsing import parse_toc_yaml
          path = "path/to/_toc.yml"
          site_map = parse_toc_yaml(path)
          yaml.dump(site_map.as_json())

       Would produce e.g.

          root: intro
          documents:
            doc1:
              docname: doc1
              subtrees: []
              title: null
            intro:
              docname: intro
              subtrees:
              - caption: Subtree Caption
                numbered: true
                reversed: false
                items:
                - doc1
                titlesonly: true
              title: null
          meta: {}

EXAMPLE PROJECT

       These pages provide an example of different aspects of the ToC.  See this project's _toc.yml for how they
       are added.

   Sub-section Page
       This is a page of a subsection.

   Sub-section Glob Page 1
       A page added via globbing.

   Sub-section Glob Page 2
       Another page added via globbing.

AUTHOR

       Executable Book Project

COPYRIGHT

       2021, Executable Book Project

                                                  Apr 06, 2025                              SPHINXEXTERNALTOC(1)