Skip to content

Commit 82fae9f

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

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
@@ -116,16 +116,17 @@ def assemble_toc_secnumbers(self) -> dict[str, dict[str, tuple[int, ...]]]:
116116
# Assemble toc_secnumbers to resolve section numbers on SingleHTML.
117117
# Merge all secnumbers to single secnumber.
118118
#
119-
# Note: current Sphinx has refid confliction in singlehtml mode.
120-
# To avoid the problem, it replaces key of secnumbers to
119+
# Note: current Sphinx patches refid with docname to avoid confliction
120+
# in singlehtml mode.
121+
# To match the patch, it replaces key of secnumbers to
121122
# tuple of docname and refid.
122123
#
123124
# There are related codes in inline_all_toctres() and
124125
# HTMLTranslter#add_secnumber().
125126
new_secnumbers: dict[str, tuple[int, ...]] = {}
126127
for docname, secnums in self.env.toc_secnumbers.items():
127128
for id, secnum in secnums.items():
128-
alias = f'{docname}/{id}'
129+
alias = f'document-{docname}{id}'
129130
new_secnumbers[alias] = secnum
130131

131132
return {self.config.root_doc: new_secnumbers}
@@ -136,8 +137,9 @@ def assemble_toc_fignumbers(
136137
# Assemble toc_fignumbers to resolve figure numbers on SingleHTML.
137138
# Merge all fignumbers to single fignumber.
138139
#
139-
# Note: current Sphinx has refid confliction in singlehtml mode.
140-
# To avoid the problem, it replaces key of secnumbers to
140+
# Note: current Sphinx patches refid with docname to avoid confliction
141+
# in singlehtml mode.
142+
# To match the patch, it replaces key of secnumbers to
141143
# tuple of docname and refid.
142144
#
143145
# There are related codes in inline_all_toctres() and
@@ -146,9 +148,10 @@ def assemble_toc_fignumbers(
146148
# {'foo': {'figure': {'id2': (2,), 'id1': (1,)}}, 'bar': {'figure': {'id1': (3,)}}}
147149
for docname, fignumlist in self.env.toc_fignumbers.items():
148150
for figtype, fignums in fignumlist.items():
149-
alias = f'{docname}/{figtype}'
151+
alias = f'document-{docname}#{figtype}'
150152
new_fignumbers.setdefault(alias, {})
151153
for id, fignum in fignums.items():
154+
id = f'document-{docname}#{id}'
152155
new_fignumbers[alias][id] = fignum
153156

154157
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)