|
1 | 1 | """Toctree adapter for sphinx.environment."""
|
2 | 2 |
|
3 |
| -from typing import TYPE_CHECKING, Any, Iterable, List, Optional, cast |
| 3 | +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Tuple, cast |
4 | 4 |
|
5 | 5 | from docutils import nodes
|
6 | 6 | from docutils.nodes import Element, Node
|
@@ -54,6 +54,7 @@ def resolve(self, docname: str, builder: "Builder", toctree: addnodes.toctree,
|
54 | 54 | """
|
55 | 55 | if toctree.get('hidden', False) and not includehidden:
|
56 | 56 | return None
|
| 57 | + generated_docnames: Dict[str, Tuple[str, str, str]] = self.env.domains['std'].initial_data['labels'].copy() # NoQA: E501 |
57 | 58 |
|
58 | 59 | # For reading the following two helper function, it is useful to keep
|
59 | 60 | # in mind the node structure of a toctree (using HTML-like node names
|
@@ -139,6 +140,16 @@ def _entries_from_toctree(toctreenode: addnodes.toctree, parents: List[str],
|
139 | 140 | item = nodes.list_item('', para)
|
140 | 141 | # don't show subitems
|
141 | 142 | toc = nodes.bullet_list('', item)
|
| 143 | + elif ref in generated_docnames: |
| 144 | + docname, _, sectionname = generated_docnames[ref] |
| 145 | + if not title: |
| 146 | + title = sectionname |
| 147 | + reference = nodes.reference('', title, internal=True, |
| 148 | + refuri=docname, anchorname='') |
| 149 | + para = addnodes.compact_paragraph('', '', reference) |
| 150 | + item = nodes.list_item('', para) |
| 151 | + # don't show subitems |
| 152 | + toc = nodes.bullet_list('', item) |
142 | 153 | else:
|
143 | 154 | if ref in parents:
|
144 | 155 | logger.warning(__('circular toctree references '
|
|
0 commit comments