diff --git a/sphinx/environment/adapters/toctree.py b/sphinx/environment/adapters/toctree.py index 670ac786629..7d7e37612d6 100644 --- a/sphinx/environment/adapters/toctree.py +++ b/sphinx/environment/adapters/toctree.py @@ -216,7 +216,13 @@ def _resolve_toctree( for refnode in newnode.findall(nodes.reference): if url_re.match(refnode['refuri']) is None: rel_uri = builder.get_relative_uri(docname, refnode['refuri']) - refnode['refuri'] = rel_uri + refnode['anchorname'] + if builder.name == 'singlehtml': + if len(refnode['anchorname']): + refnode['refuri'] = refnode['anchorname'] + else: + refnode['refuri'] = rel_uri + else: + refnode['refuri'] = rel_uri + refnode['anchorname'] return newnode