mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #5513 from jfbu/3704_latex_figure_labelpos
Fix #3704: (latex) wrong ``\label`` positioning for figures with a legend
This commit is contained in:
commit
9875a57622
1
CHANGES
1
CHANGES
@ -18,6 +18,7 @@ Bugs fixed
|
|||||||
|
|
||||||
* #5490: latex: enumerated list causes a crash with recommonmark
|
* #5490: latex: enumerated list causes a crash with recommonmark
|
||||||
* #5492: sphinx-build fails to build docs w/ Python < 3.5.2
|
* #5492: sphinx-build fails to build docs w/ Python < 3.5.2
|
||||||
|
* #3704: latex: wrong ``\label`` positioning for figures with a legend
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
--------
|
--------
|
||||||
|
@ -1720,7 +1720,6 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
|
|
||||||
def visit_figure(self, node):
|
def visit_figure(self, node):
|
||||||
# type: (nodes.Node) -> None
|
# type: (nodes.Node) -> None
|
||||||
labels = self.hypertarget_to(node)
|
|
||||||
if self.table:
|
if self.table:
|
||||||
# TODO: support align option
|
# TODO: support align option
|
||||||
if 'width' in node:
|
if 'width' in node:
|
||||||
@ -1732,7 +1731,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
self.body.append('\\begin{sphinxfigure-in-table}\n\\centering\n')
|
self.body.append('\\begin{sphinxfigure-in-table}\n\\centering\n')
|
||||||
if any(isinstance(child, nodes.caption) for child in node):
|
if any(isinstance(child, nodes.caption) for child in node):
|
||||||
self.body.append('\\capstart')
|
self.body.append('\\capstart')
|
||||||
self.context.append(labels + '\\end{sphinxfigure-in-table}\\relax\n')
|
self.context.append('\\end{sphinxfigure-in-table}\\relax\n')
|
||||||
elif node.get('align', '') in ('left', 'right'):
|
elif node.get('align', '') in ('left', 'right'):
|
||||||
length = None
|
length = None
|
||||||
if 'width' in node:
|
if 'width' in node:
|
||||||
@ -1741,7 +1740,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
length = self.latex_image_length(node[0]['width'])
|
length = self.latex_image_length(node[0]['width'])
|
||||||
self.body.append('\\begin{wrapfigure}{%s}{%s}\n\\centering' %
|
self.body.append('\\begin{wrapfigure}{%s}{%s}\n\\centering' %
|
||||||
(node['align'] == 'right' and 'r' or 'l', length or '0pt'))
|
(node['align'] == 'right' and 'r' or 'l', length or '0pt'))
|
||||||
self.context.append(labels + '\\end{wrapfigure}\n')
|
self.context.append('\\end{wrapfigure}\n')
|
||||||
elif self.in_minipage:
|
elif self.in_minipage:
|
||||||
self.body.append('\n\\begin{center}')
|
self.body.append('\n\\begin{center}')
|
||||||
self.context.append('\\end{center}\n')
|
self.context.append('\\end{center}\n')
|
||||||
@ -1750,7 +1749,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
self.elements['figure_align'])
|
self.elements['figure_align'])
|
||||||
if any(isinstance(child, nodes.caption) for child in node):
|
if any(isinstance(child, nodes.caption) for child in node):
|
||||||
self.body.append('\\capstart\n')
|
self.body.append('\\capstart\n')
|
||||||
self.context.append(labels + '\\end{figure}\n')
|
self.context.append('\\end{figure}\n')
|
||||||
|
|
||||||
def depart_figure(self, node):
|
def depart_figure(self, node):
|
||||||
# type: (nodes.Node) -> None
|
# type: (nodes.Node) -> None
|
||||||
@ -1771,6 +1770,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
def depart_caption(self, node):
|
def depart_caption(self, node):
|
||||||
# type: (nodes.Node) -> None
|
# type: (nodes.Node) -> None
|
||||||
self.body.append('}')
|
self.body.append('}')
|
||||||
|
if isinstance(node.parent, nodes.figure):
|
||||||
|
labels = self.hypertarget_to(node.parent)
|
||||||
|
self.body.append(labels)
|
||||||
self.in_caption -= 1
|
self.in_caption -= 1
|
||||||
|
|
||||||
def visit_legend(self, node):
|
def visit_legend(self, node):
|
||||||
|
@ -16,6 +16,8 @@ figures
|
|||||||
|
|
||||||
labeled figure
|
labeled figure
|
||||||
|
|
||||||
|
with a legend
|
||||||
|
|
||||||
code-blocks
|
code-blocks
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
@ -1299,7 +1299,8 @@ def test_latex_labels(app, status, warning):
|
|||||||
r'\label{\detokenize{index:figure1}}'
|
r'\label{\detokenize{index:figure1}}'
|
||||||
r'\end{figure}' in result)
|
r'\end{figure}' in result)
|
||||||
assert (r'\caption{labeled figure}'
|
assert (r'\caption{labeled figure}'
|
||||||
r'\label{\detokenize{index:figure3}}'
|
'\\label{\detokenize{index:figure3}}\n'
|
||||||
|
'\\begin{sphinxlegend}\nwith a legend\n\\end{sphinxlegend}\n'
|
||||||
r'\end{figure}' in result)
|
r'\end{figure}' in result)
|
||||||
|
|
||||||
# code-blocks
|
# code-blocks
|
||||||
|
Loading…
Reference in New Issue
Block a user