#295: Fix escaping of hyperref targets in LaTeX output.

This commit is contained in:
Georg Brandl 2010-01-06 11:48:25 +01:00
parent a5f1df6946
commit 4c47d2d8e2
2 changed files with 7 additions and 2 deletions

View File

@ -1,6 +1,8 @@
Release 0.6.4 (in development)
==============================
* #295: Fix escaping of hyperref targets in LaTeX output.
* #302: Fix links generated by the ``:doc:`` role for LaTeX output.
* #286: collect todo nodes after the whole document has been read;

View File

@ -246,6 +246,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
return (HEADER % self.elements + self.highlighter.get_stylesheet() +
u''.join(self.body) + FOOTER % self.elements)
def idescape(self, id):
return str(unicode(id).translate(tex_escape_map))
def visit_document(self, node):
self.footnotestack.append(self.collect_footnotes(node))
self.curfilestack.append(node.get('docname', ''))
@ -459,7 +462,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
d = self.descstack[-1]
d.cls = d.cls.rstrip('.')
if node.parent['desctype'] != 'describe' and node['ids']:
hyper = '\\hypertarget{%s}{}' % node['ids'][0]
hyper = '\\hypertarget{%s}{}' % self.idescape(node['ids'][0])
else:
hyper = ''
if d.count == 0:
@ -750,7 +753,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
def visit_term(self, node):
ctx = '] \\leavevmode'
if node.has_key('ids') and node['ids']:
ctx += '\\hypertarget{%s}{}' % node['ids'][0]
ctx += '\\hypertarget{%s}{}' % self.idescape(node['ids'][0])
self.body.append('\\item[')
self.context.append(ctx)
def depart_term(self, node):