Skip to content

Incorrect HTML anchors generated by singlehtml builder #14221

@etrian-dev

Description

@etrian-dev

Describe the bug

Using the singlehtml builder to generate index.html from the example below produces invalid internal HTML anchors having multiple # characters in them with certain combinations of glossaries and toctree inclusions. In the reproducer below, there is an index.rst file with a toctree that includes two glossary files in separate documents, each with their own glossary item definition. An equivalent behavior can be observed also by using .. include to include the files directly. The build command is sphinx-build -b singlehtml . _build/foo and the HTML file is tested with html5validator --root _build/foo --show-warnings. Issue #13037 might be related.

How to Reproduce

conf.py:

project = 'Glossary Test'
extensions = []

index.rst:

Main Documentation
==================

Welcome to the documentation.

.. toctree::
   :maxdepth: 2

   ch1
   glossary/term1
   glossary/term2

with the glossary files being trivial items:

.. glossary::

   API
      Lorem Ipsum.

The generate document contains:

<a class="reference internal" href="#document-glossary/term1#term-API"><span class="xref std std-term">API</span></a>

Environment Information

Platform:              linux; (Linux-6.14.0-37-generic-x86_64-with-glibc2.39)
Python version:        3.12.3 (main, Nov  6 2025, 13:44:16) [GCC 13.3.0])
Python implementation: CPython
Sphinx version:        9.0.4
Docutils version:      0.21.2
Jinja2 version:        3.1.4
Pygments version:      2.19.2

Sphinx extensions

None

Additional context

Some build warnings are generated, but they should not affect the outcome of the test

writing... /home/nicola/test-sphinx/index.rst:6: WARNING: toctree contains reference to document 'glossary/term1' that doesn't have a title: no link will be generated [toc.no_title]
/home/nicola/test-sphinx/index.rst:6: WARNING: toctree contains reference to document 'glossary/term2' that doesn't have a title: no link will be generated [toc.no_title]
/home/nicola/test-sphinx/index.rst:6: WARNING: toctree contains reference to document 'glossary/term1' that doesn't have a title: no link will be generated [toc.no_title]
/home/nicola/test-sphinx/index.rst:6: WARNING: toctree contains reference to document 'glossary/term2' that doesn't have a title: no link will be generated [toc.no_title]

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions