Support :numref: in LaTeX writer

This commit is contained in:
tk0miya 2014-10-01 11:38:41 +09:00
parent 6c798fd5f0
commit 002ba5e4de
4 changed files with 32 additions and 5 deletions

View File

@ -184,6 +184,10 @@ class pending_xref(nodes.Inline, nodes.Element):
"""
class number_reference(nodes.reference):
"""Node for number references, similar to pending_xref."""
class download_reference(nodes.reference):
"""Node for download references, similar to pending_xref."""

View File

@ -579,8 +579,10 @@ class StandardDomain(Domain):
labels[name] = docname, labelid, sectname
def build_reference_node(self, fromdocname, builder,
docname, labelid, sectname):
newnode = nodes.reference('', '', internal=True)
docname, labelid, sectname,
**options):
nodeclass = options.pop('nodeclass', nodes.reference)
newnode = nodeclass('', '', internal=True, **options)
innernode = nodes.emphasis(sectname, sectname)
if docname == fromdocname:
newnode['refid'] = labelid
@ -636,12 +638,15 @@ class StandardDomain(Domain):
title = contnode.astext()
if labelid == title:
prefix = env.config.numfig_prefix.get(figtype, '')
title = prefix + '.'.join(map(str, fignumber))
title = "%s#" % prefix
newtitle = prefix + '.'.join(map(str, fignumber))
else:
title = title.replace('#', '.'.join(map(str, fignumber)))
newtitle = title.replace('#', '.'.join(map(str, fignumber)))
return self.build_reference_node(fromdocname, builder,
docname, labelid, title)
docname, labelid, newtitle,
nodeclass=addnodes.number_reference,
title=title)
elif typ == 'keyword':
# keywords are oddballs: they are referenced by named labels
docname, labelid, _ = self.data['labels'].get(target, ('', '', ''))

View File

@ -212,6 +212,12 @@ class HTMLTranslator(BaseTranslator):
self.body.append(('%s' + self.secnumber_suffix) %
'.'.join(map(str, node['secnumber'])))
def visit_number_reference(self, node):
self.visit_reference(node)
def depart_number_reference(self, node):
self.depart_reference(node)
# overwritten -- we don't want source comments to show up in the HTML
def visit_comment(self, node):
raise nodes.SkipNode

View File

@ -1244,6 +1244,18 @@ class LaTeXTranslator(nodes.NodeVisitor):
def depart_reference(self, node):
self.body.append(self.context.pop())
def visit_number_reference(self, node):
if node.get('refid'):
id = self.curfilestack[-1] + ':' + node['refid']
else:
id = node.get('refuri', '')[1:].replace('#', ':')
ref = '\\ref{%s}' % self.idescape(id)
title = node.get('title', '#')
self.body.append(title.replace('#', ref))
raise nodes.SkipNode
def visit_download_reference(self, node):
pass
def depart_download_reference(self, node):