[singlehtml] add docname to section anchor to make them unique #13739
+18
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Follow up to #13717, inverting the logic, instead of patching the toctree to yield "#id1" instead of "#document-path/to#id1", have the section id to be docname preffixed, solving non-unique ids in singlehtml.
Allows to remove post Sphinx transforms like in here
Top level overview of current behavior
Approach taken
Based on the LaTeX builder solution.
sphinx/writers/latex.py#hypertarget[withdoc=True]
method suffixes docutils id with the docname.In my implementation I edit ids['0'] directly to not have to overwrite the whole
visit_section
method, but I understand if requested to not modify the tree and instead overwrite.On the format #document-test/extra#id1
It is compatible with HTML anchoring, CSS and JavaScript selectors, but require escaping:
Tests
The following tests are relevant:
References