mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix #3200: 1.5 LaTeX: xref inside desc_name not allowed.
Also fixes #2026 in another way than commit 53cd2d4
. Context: the LaTeX
alltt environment (used for parsed-literal) as well as, since Sphinx
1.5, the `\sphinxcode` and `\sphinxbfcode`, make some characters "TeX
active". But this does not play well with `\hyperref` macro.
This commit is contained in:
parent
b1abd4629b
commit
4b4244672b
@ -576,19 +576,16 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
'\\label{%s}' % self.idescape(id)
|
||||
|
||||
def hyperlink(self, id):
|
||||
return '{\\hyperref[%s]{' % self.hyperrefescape(id)
|
||||
return '{\\hyperref[%s]{' % self.idescape(id)
|
||||
|
||||
def hyperpageref(self, id):
|
||||
return '\\autopageref*{%s}' % self.idescape(id)
|
||||
|
||||
def idescape(self, id):
|
||||
return text_type(id).translate(tex_replace_map).\
|
||||
return '\\detokenize{%s}' % text_type(id).translate(tex_replace_map).\
|
||||
encode('ascii', 'backslashreplace').decode('ascii').\
|
||||
replace('\\', '_')
|
||||
|
||||
def hyperrefescape(self, ref):
|
||||
return self.idescape(ref).replace('-', '\\string-')
|
||||
|
||||
def babel_renewcommand(self, command, definition):
|
||||
if self.elements['multilingual']:
|
||||
prefix = '\\addto\\captions%s{' % self.babel.get_language()
|
||||
|
Loading…
Reference in New Issue
Block a user