Skip to content

Commit bfa9f06

Browse files
committed
[singlehtml] Reformat fignum and secnum tuple
Format as document-<docname>#<id> to match other parts.
1 parent 8741bb7 commit bfa9f06

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

sphinx/builders/singlehtml.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,17 @@ def assemble_toc_secnumbers(self) -> dict[str, dict[str, tuple[int, ...]]]:
118118
# Assemble toc_secnumbers to resolve section numbers on SingleHTML.
119119
# Merge all secnumbers to single secnumber.
120120
#
121-
# Note: current Sphinx has refid confliction in singlehtml mode.
122-
# To avoid the problem, it replaces key of secnumbers to
121+
# Note: current Sphinx patches refid with docname to avoid confliction
122+
# in singlehtml mode.
123+
# To match the patch, it replaces key of secnumbers to
123124
# tuple of docname and refid.
124125
#
125126
# There are related codes in inline_all_toctres() and
126127
# HTMLTranslter#add_secnumber().
127128
new_secnumbers: dict[str, tuple[int, ...]] = {}
128129
for docname, secnums in self.env.toc_secnumbers.items():
129130
for id, secnum in secnums.items():
130-
alias = f'{docname}/{id}'
131+
alias = f'document-{docname}{id}'
131132
new_secnumbers[alias] = secnum
132133

133134
return {self.config.root_doc: new_secnumbers}
@@ -138,8 +139,9 @@ def assemble_toc_fignumbers(
138139
# Assemble toc_fignumbers to resolve figure numbers on SingleHTML.
139140
# Merge all fignumbers to single fignumber.
140141
#
141-
# Note: current Sphinx has refid confliction in singlehtml mode.
142-
# To avoid the problem, it replaces key of secnumbers to
142+
# Note: current Sphinx patches refid with docname to avoid confliction
143+
# in singlehtml mode.
144+
# To match the patch, it replaces key of secnumbers to
143145
# tuple of docname and refid.
144146
#
145147
# There are related codes in inline_all_toctres() and
@@ -148,9 +150,10 @@ def assemble_toc_fignumbers(
148150
# {'foo': {'figure': {'id2': (2,), 'id1': (1,)}}, 'bar': {'figure': {'id1': (3,)}}}
149151
for docname, fignumlist in self.env.toc_fignumbers.items():
150152
for figtype, fignums in fignumlist.items():
151-
alias = f'{docname}/{figtype}'
153+
alias = f'document-{docname}#{figtype}'
152154
new_fignumbers.setdefault(alias, {})
153155
for id, fignum in fignums.items():
156+
id = f'document-{docname}#{id}'
154157
new_fignumbers[alias][id] = fignum
155158

156159
return {self.config.root_doc: new_fignumbers}

sphinx/writers/html5.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -395,10 +395,10 @@ def get_secnumber(self, node: Element) -> tuple[int, ...] | None:
395395
if isinstance(node.parent, nodes.section):
396396
if self.builder.name == 'singlehtml':
397397
docname = self.docnames[-1]
398-
anchorname = f'{docname}/#{node.parent["ids"][0]}'
398+
anchorname = node.parent['ids'][0]
399399
if anchorname not in self.builder.secnumbers:
400400
# try first heading which has no anchor
401-
anchorname = f'{docname}/'
401+
anchorname = f'document-{docname}'
402402
else:
403403
anchorname = '#' + node.parent['ids'][0]
404404
if anchorname not in self.builder.secnumbers:
@@ -420,7 +420,7 @@ def add_secnumber(self, node: Element) -> None:
420420
def add_fignumber(self, node: Element) -> None:
421421
def append_fignumber(figtype: str, figure_id: str) -> None:
422422
if self.builder.name == 'singlehtml':
423-
key = f'{self.docnames[-1]}/{figtype}'
423+
key = f'document-{self.docnames[-1]}#{figtype}'
424424
else:
425425
key = figtype
426426

0 commit comments

Comments
 (0)