Skip to content

Commit 9edcc87

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

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
@@ -101,16 +101,17 @@ def assemble_toc_secnumbers(self) -> dict[str, dict[str, tuple[int, ...]]]:
101101
# Assemble toc_secnumbers to resolve section numbers on SingleHTML.
102102
# Merge all secnumbers to single secnumber.
103103
#
104-
# Note: current Sphinx has refid confliction in singlehtml mode.
105-
# To avoid the problem, it replaces key of secnumbers to
104+
# Note: current Sphinx patches refid with docname to avoid confliction
105+
# in singlehtml mode.
106+
# To match the patch, it replaces key of secnumbers to
106107
# tuple of docname and refid.
107108
#
108109
# There are related codes in inline_all_toctres() and
109110
# HTMLTranslter#add_secnumber().
110111
new_secnumbers: dict[str, tuple[int, ...]] = {}
111112
for docname, secnums in self.env.toc_secnumbers.items():
112113
for id, secnum in secnums.items():
113-
alias = f'{docname}/{id}'
114+
alias = f'document-{docname}{id}'
114115
new_secnumbers[alias] = secnum
115116

116117
return {self.config.root_doc: new_secnumbers}
@@ -121,8 +122,9 @@ def assemble_toc_fignumbers(
121122
# Assemble toc_fignumbers to resolve figure numbers on SingleHTML.
122123
# Merge all fignumbers to single fignumber.
123124
#
124-
# Note: current Sphinx has refid confliction in singlehtml mode.
125-
# To avoid the problem, it replaces key of secnumbers to
125+
# Note: current Sphinx patches refid with docname to avoid confliction
126+
# in singlehtml mode.
127+
# To match the patch, it replaces key of secnumbers to
126128
# tuple of docname and refid.
127129
#
128130
# There are related codes in inline_all_toctres() and
@@ -131,9 +133,10 @@ def assemble_toc_fignumbers(
131133
# {'foo': {'figure': {'id2': (2,), 'id1': (1,)}}, 'bar': {'figure': {'id1': (3,)}}}
132134
for docname, fignumlist in self.env.toc_fignumbers.items():
133135
for figtype, fignums in fignumlist.items():
134-
alias = f'{docname}/{figtype}'
136+
alias = f'document-{docname}#{figtype}'
135137
new_fignumbers.setdefault(alias, {})
136138
for id, fignum in fignums.items():
139+
id = f'document-{docname}#{id}'
137140
new_fignumbers[alias][id] = fignum
138141

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