From 19b07109446cf7436a27d9b5ee921c7da3049215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20B?= <2589111+jfbu@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:40:24 +0100 Subject: [PATCH] Fix #11079 (LaTeX: figure with align disappears if not followed by text) --- CHANGES | 3 +++ sphinx/writers/latex.py | 5 ++++- tests/test_build_latex.py | 9 ++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 04eed21c5fa..f5126e0acd7 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,9 @@ Features added Bugs fixed ---------- +* #11079: LaTeX: figures with align attribute may disappear and strangely impact + following lists + Testing -------- diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 70dec716d71..acd44605c37 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1366,7 +1366,10 @@ def visit_figure(self, node: Element) -> None: self.body.append(r'\begin{wrapfigure}{%s}{%s}' % ('r' if node['align'] == 'right' else 'l', length or '0pt') + CR) self.body.append(r'\centering') - self.context.append(r'\end{wrapfigure}' + CR) + self.context.append(r'\end{wrapfigure}' + + BLANKLINE + + r'\mbox{}\par\vskip-\dimexpr\baselineskip+\parskip\relax' + + CR) # avoid disappearance if no text next issues/11079 elif self.in_minipage: self.body.append(CR + r'\begin{center}') self.context.append(r'\end{center}' + CR) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 3f1206ac8b8..1090dbfecfb 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -120,19 +120,22 @@ def test_writer(app, status, warning): assert ('\\begin{wrapfigure}{r}{0pt}\n\\centering\n' '\\noindent\\sphinxincludegraphics{{rimg}.png}\n' '\\caption{figure with align option}\\label{\\detokenize{markup:id9}}' - '\\end{wrapfigure}' in result) + '\\end{wrapfigure}\n\n' + '\\mbox{}\\par\\vskip-\\dimexpr\\baselineskip+\\parskip\\relax' in result) assert ('\\begin{wrapfigure}{r}{0.500\\linewidth}\n\\centering\n' '\\noindent\\sphinxincludegraphics{{rimg}.png}\n' '\\caption{figure with align \\& figwidth option}' '\\label{\\detokenize{markup:id10}}' - '\\end{wrapfigure}' in result) + '\\end{wrapfigure}\n\n' + '\\mbox{}\\par\\vskip-\\dimexpr\\baselineskip+\\parskip\\relax' in result) assert ('\\begin{wrapfigure}{r}{3cm}\n\\centering\n' '\\noindent\\sphinxincludegraphics[width=3cm]{{rimg}.png}\n' '\\caption{figure with align \\& width option}' '\\label{\\detokenize{markup:id11}}' - '\\end{wrapfigure}' in result) + '\\end{wrapfigure}\n\n' + '\\mbox{}\\par\\vskip-\\dimexpr\\baselineskip+\\parskip\\relax' in result) assert 'Footnotes' not in result