diff options
Diffstat (limited to 'sphinx/environment/adapters/toctree.py')
-rw-r--r-- | sphinx/environment/adapters/toctree.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sphinx/environment/adapters/toctree.py b/sphinx/environment/adapters/toctree.py index 9678e3c7c..348832efe 100644 --- a/sphinx/environment/adapters/toctree.py +++ b/sphinx/environment/adapters/toctree.py @@ -1,6 +1,6 @@ """Toctree adapter for sphinx.environment.""" -from typing import TYPE_CHECKING, Any, Iterable, List, Optional, cast +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Tuple, cast from docutils import nodes from docutils.nodes import Element, Node @@ -54,6 +54,7 @@ class TocTree: """ if toctree.get('hidden', False) and not includehidden: return None + generated_docnames: Dict[str, Tuple[str, str, str]] = self.env.domains['std'].initial_data['labels'].copy() # NoQA: E501 # For reading the following two helper function, it is useful to keep # in mind the node structure of a toctree (using HTML-like node names @@ -139,6 +140,16 @@ class TocTree: item = nodes.list_item('', para) # don't show subitems toc = nodes.bullet_list('', item) + elif ref in generated_docnames: + docname, _, sectionname = generated_docnames[ref] + if not title: + title = sectionname + reference = nodes.reference('', title, internal=True, + refuri=docname, anchorname='') + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + # don't show subitems + toc = nodes.bullet_list('', item) else: if ref in parents: logger.warning(__('circular toctree references ' |