mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix #6149: LaTeX: :index: role titles causes build error of LaTeX
This commit is contained in:
parent
9f283bc3f1
commit
05d3e37ef7
2
CHANGES
2
CHANGES
@ -21,6 +21,8 @@ Bugs fixed
|
||||
* #6046: LaTeX: ``TypeError`` is raised when invalid latex_elements given
|
||||
* #6067: LaTeX: images having a target are concatenated to next line
|
||||
* #6067: LaTeX: images having a target are not aligned even if specified
|
||||
* #6149: LaTeX: ``:index:`` role in titles causes ``Use of \@icentercr doesn't
|
||||
match its definition`` error on latexpdf build
|
||||
* #6019: imgconverter: Including multipage PDF fails
|
||||
* #6047: autodoc: ``autofunction`` emits a warning for method objects
|
||||
* #6028: graphviz: Ensure the graphviz filenames are reproducible
|
||||
|
@ -20,7 +20,7 @@ from sphinx.builders import Builder
|
||||
from sphinx.builders.latex.transforms import (
|
||||
BibliographyTransform, CitationReferenceTransform, MathReferenceTransform,
|
||||
FootnoteDocnameUpdater, LaTeXFootnoteTransform, LiteralBlockTransform,
|
||||
ShowUrlsTransform, DocumentTargetTransform,
|
||||
ShowUrlsTransform, DocumentTargetTransform, IndexInSectionTitleTransform,
|
||||
)
|
||||
from sphinx.config import string_classes, ENUM
|
||||
from sphinx.environment import NoUri
|
||||
@ -284,7 +284,8 @@ class LaTeXBuilder(Builder):
|
||||
ShowUrlsTransform,
|
||||
LaTeXFootnoteTransform,
|
||||
LiteralBlockTransform,
|
||||
DocumentTargetTransform])
|
||||
DocumentTargetTransform,
|
||||
IndexInSectionTitleTransform])
|
||||
transformer.apply_transforms()
|
||||
|
||||
def finish(self):
|
||||
|
@ -596,3 +596,40 @@ class DocumentTargetTransform(SphinxTransform):
|
||||
section = node.next_node(nodes.section)
|
||||
if section:
|
||||
section['ids'].append(':doc') # special label for :doc:
|
||||
|
||||
|
||||
class IndexInSectionTitleTransform(SphinxTransform):
|
||||
"""Move index nodes in section title to outside of the title.
|
||||
|
||||
LaTeX index macro is not compatible with some handling of section titles
|
||||
such as uppercasing done on LaTeX side (cf. fncychap handling of ``\\chapter``).
|
||||
Moving the index node to after the title node fixes that.
|
||||
|
||||
Before::
|
||||
|
||||
<section>
|
||||
<title>
|
||||
blah blah <index entries=[...]/>blah
|
||||
<paragraph>
|
||||
blah blah blah
|
||||
...
|
||||
|
||||
After::
|
||||
|
||||
<section>
|
||||
<title>
|
||||
blah blah blah
|
||||
<index entries=[...]/>
|
||||
<paragraph>
|
||||
blah blah blah
|
||||
...
|
||||
"""
|
||||
default_priority = 400
|
||||
|
||||
def apply(self):
|
||||
for node in self.document.traverse(nodes.title):
|
||||
if isinstance(node.parent, nodes.section):
|
||||
for i, index in enumerate(node.traverse(addnodes.index)):
|
||||
# move the index node next to the section title
|
||||
node.remove(index)
|
||||
node.parent.insert(i + 1, index)
|
||||
|
0
tests/roots/test-index_on_title/conf.py
Normal file
0
tests/roots/test-index_on_title/conf.py
Normal file
5
tests/roots/test-index_on_title/contents.rst
Normal file
5
tests/roots/test-index_on_title/contents.rst
Normal file
@ -0,0 +1,5 @@
|
||||
index_on_title
|
||||
==============
|
||||
|
||||
Test for :index:`index` in top level title
|
||||
------------------------------------------
|
@ -1349,6 +1349,15 @@ def test_latex_labels(app, status, warning):
|
||||
r'\label{\detokenize{otherdoc:otherdoc}}'
|
||||
r'\label{\detokenize{otherdoc::doc}}' in result)
|
||||
|
||||
|
||||
# Embeded standalone hyperlink reference (refs: #5948)
|
||||
assert result.count(r'\label{\detokenize{index:section1}}') == 1
|
||||
|
||||
|
||||
@pytest.mark.sphinx('latex', testroot='index_on_title')
|
||||
def test_index_on_title(app, status, warning):
|
||||
app.builder.build_all()
|
||||
result = (app.outdir / 'Python.tex').text(encoding='utf8')
|
||||
assert ('\\chapter{Test for index in top level title}\n'
|
||||
'\\label{\\detokenize{contents:test-for-index-in-top-level-title}}'
|
||||
'\\index{index@\\spxentry{index}}\n'
|
||||
in result)
|
||||
|
Loading…
Reference in New Issue
Block a user