From 6aff01ea31fd66a736d807a24bf6c435722e0ad1 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 17 Jan 2010 23:23:57 +0100 Subject: [PATCH] Consistently id-escape all hypertarget names. --- sphinx/writers/latex.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 18a84d364..14e9bc059 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -276,7 +276,8 @@ class LaTeXTranslator(nodes.NodeVisitor): # cite_key: underscores must not be escaped cite_key = bi[0].replace(r"\_", "_") self.body.append('\\bibitem[%s]{%s}{\hypertarget{%s}{} %s}\n' % - (bi[0], cite_key, cite_key.lower(), bi[1])) + (bi[0], cite_key, + self.idescape(cite_key.lower()), bi[1])) self.body.append('\\end{thebibliography}\n') self.bibitems = [] @@ -321,7 +322,8 @@ class LaTeXTranslator(nodes.NodeVisitor): self.sectionlevel += 1 self.body.append('\n\n') if self.next_section_target: - self.body.append(r'\hypertarget{%s}{}' % self.next_section_target) + self.body.append(r'\hypertarget{%s}{}' % + self.idescape(self.next_section_target)) self.next_section_target = None #if node.get('ids'): # for id in node['ids']: @@ -815,7 +817,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def visit_module(self, node): modname = node['modname'] self.body.append('\n\\hypertarget{module-%s}{}' % - (modname.replace(' ',''))) + self.idescape(modname.replace(' ',''))) self.body.append('\n\\declaremodule[%s]{}{%s}' % ( modname.replace('_', ''), self.encode(modname))) self.body.append('\n\\modulesynopsis{%s}' % @@ -980,7 +982,7 @@ class LaTeXTranslator(nodes.NodeVisitor): # indexing uses standard LaTeX index markup, so the targets # will be generated differently if not id.startswith('index-'): - self.body.append(r'\hypertarget{%s}{}' % id) + self.body.append(r'\hypertarget{%s}{}' % self.idescape(id)) if node.has_key('refid') and node['refid'] not in self.written_ids: parindex = node.parent.index(node)