mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Support :numref: in LaTeX writer
This commit is contained in:
parent
6c798fd5f0
commit
002ba5e4de
@ -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."""
|
||||
|
||||
|
@ -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, ('', '', ''))
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user