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:
jfbu 2016-12-08 20:53:18 +01:00
parent b1abd4629b
commit 4b4244672b

View File

@ -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()