diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py
index 062c56669..f6e472dd5 100644
--- a/sphinx/builders/html.py
+++ b/sphinx/builders/html.py
@@ -1027,7 +1027,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
return tree
def assemble_toc_secnumbers(self):
- # type: () -> Dict[unicode, Dict[Tuple[unicode, unicode], Tuple[int, ...]]]
+ # type: () -> Dict[unicode, Dict[unicode, Tuple[int, ...]]]
# Assemble toc_secnumbers to resolve section numbers on SingleHTML.
# Merge all secnumbers to single secnumber.
#
@@ -1037,15 +1037,16 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
#
# There are related codes in inline_all_toctres() and
# HTMLTranslter#add_secnumber().
- new_secnumbers = {}
+ new_secnumbers = {} # type: Dict[unicode, Tuple[int, ...]]
for docname, secnums in iteritems(self.env.toc_secnumbers):
for id, secnum in iteritems(secnums):
- new_secnumbers[(docname, id)] = secnum
+ alias = "%s/%s" % (docname, id)
+ new_secnumbers[alias] = secnum
return {self.config.master_doc: new_secnumbers}
def assemble_toc_fignumbers(self):
- # type: () -> Dict[unicode, Dict[Tuple[unicode, unicode], Dict[unicode, Tuple[int, ...]]]] # NOQA
+ # type: () -> Dict[unicode, Dict[unicode, Dict[unicode, Tuple[int, ...]]]] # NOQA
# Assemble toc_fignumbers to resolve figure numbers on SingleHTML.
# Merge all fignumbers to single fignumber.
#
@@ -1055,13 +1056,14 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
#
# There are related codes in inline_all_toctres() and
# HTMLTranslter#add_fignumber().
- new_fignumbers = {} # type: Dict[Tuple[unicode, unicode], Dict[unicode, Tuple[int, ...]]] # NOQA
+ new_fignumbers = {} # type: Dict[unicode, Dict[unicode, Tuple[int, ...]]]
# {u'foo': {'figure': {'id2': (2,), 'id1': (1,)}}, u'bar': {'figure': {'id1': (3,)}}}
for docname, fignumlist in iteritems(self.env.toc_fignumbers):
for figtype, fignums in iteritems(fignumlist):
- new_fignumbers.setdefault((docname, figtype), {})
+ alias = "%s/%s" % (docname, figtype)
+ new_fignumbers.setdefault(alias, {})
for id, fignum in iteritems(fignums):
- new_fignumbers[(docname, figtype)][id] = fignum
+ new_fignumbers[alias][id] = fignum
return {self.config.master_doc: new_fignumbers}
diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py
index bc46b5b92..5a22bb629 100644
--- a/sphinx/writers/html.py
+++ b/sphinx/writers/html.py
@@ -264,11 +264,9 @@ class HTMLTranslator(BaseTranslator):
elif isinstance(node.parent, nodes.section):
if self.builder.name == 'singlehtml':
docname = self.docnames[-1]
- anchorname = '#' + node.parent['ids'][0]
- if (docname, anchorname) not in self.builder.secnumbers:
- anchorname = (docname, '') # try first heading which has no anchor
- else:
- anchorname = (docname, anchorname)
+ anchorname = "%s/#%s" % (docname, node.parent['ids'][0])
+ if anchorname not in self.builder.secnumbers:
+ anchorname = "%s/" % docname # try first heading which has no anchor
else:
anchorname = '#' + node.parent['ids'][0]
if anchorname not in self.builder.secnumbers:
@@ -281,7 +279,7 @@ class HTMLTranslator(BaseTranslator):
def add_fignumber(self, node):
def append_fignumber(figtype, figure_id):
if self.builder.name == 'singlehtml':
- key = (self.docnames[-1], figtype)
+ key = "%s/%s" % (self.docnames[-1], figtype)
else:
key = figtype