From f453fe7bf0748ab5da9980846325c11a833b989d Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 11 Sep 2017 20:17:09 +0200 Subject: [PATCH] Fix #4044 (extra row height in PDF output from empty multicell) --- CHANGES | 1 + sphinx/writers/latex.py | 2 +- .../test-latex-table/expects/complex_spanning_cell.tex | 10 +++++----- tests/roots/test-latex-table/expects/gridtable.tex | 8 ++++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index d9d950824..ecc711a03 100644 --- a/CHANGES +++ b/CHANGES @@ -30,6 +30,7 @@ Bugs fixed * #3969: private instance attributes causes AttributeError * #4041: C++, remove extra name linking in function pointers. * #4038: C, add missing documentation of ``member`` role. +* #4044: An empty multicolumn cell causes extra row height in PDF output Testing -------- diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index e4e6159c0..855822335 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1463,7 +1463,7 @@ class LaTeXTranslator(nodes.NodeVisitor): if cell.width > 1 or cell.height > 1: self.body.append('\\begin{varwidth}[t]{\\sphinxcolwidth{%d}{%d}}\n' % (cell.width, self.table.colcount)) - context = ('\\par\n\\vskip-\\baselineskip\\strut\\end{varwidth}%\n') + context + context = ('\\par\n\\vskip-\\baselineskip\\vbox{\\hbox{\\strut}}\\end{varwidth}%\n') + context self.needs_linetrimming = 1 if len(node) > 2 and len(node.astext().split('\n')) > 2: self.needs_linetrimming = 1 diff --git a/tests/roots/test-latex-table/expects/complex_spanning_cell.tex b/tests/roots/test-latex-table/expects/complex_spanning_cell.tex index cc434f0fe..3d9e5cae1 100644 --- a/tests/roots/test-latex-table/expects/complex_spanning_cell.tex +++ b/tests/roots/test-latex-table/expects/complex_spanning_cell.tex @@ -18,13 +18,13 @@ consecutive multirow at end of row (1-4 and 1-5) \begin{varwidth}[t]{\sphinxcolwidth{1}{5}} cell1-1 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% &\sphinxmultirow{3}{2}{% \begin{varwidth}[t]{\sphinxcolwidth{1}{5}} cell1-2 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% & cell1-3 @@ -32,20 +32,20 @@ cell1-3 \begin{varwidth}[t]{\sphinxcolwidth{1}{5}} cell1-4 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% &\sphinxmultirow{2}{5}{% \begin{varwidth}[t]{\sphinxcolwidth{1}{5}} cell1-5 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% \\ \cline{3-3}\sphinxtablestrut{1}&\sphinxtablestrut{2}&\sphinxmultirow{2}{6}{% \begin{varwidth}[t]{\sphinxcolwidth{1}{5}} cell2-3 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% &\sphinxtablestrut{4}&\sphinxtablestrut{5}\\ \cline{5-5}\sphinxtablestrut{1}&\sphinxtablestrut{2}&\sphinxtablestrut{6}&\sphinxtablestrut{4}& diff --git a/tests/roots/test-latex-table/expects/gridtable.tex b/tests/roots/test-latex-table/expects/gridtable.tex index e6bbbda6b..6f1fc0b91 100644 --- a/tests/roots/test-latex-table/expects/gridtable.tex +++ b/tests/roots/test-latex-table/expects/gridtable.tex @@ -17,7 +17,7 @@ cell1-1 \begin{varwidth}[t]{\sphinxcolwidth{1}{3}} cell1-2 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% & cell1-3 @@ -26,7 +26,7 @@ cell1-3 \begin{varwidth}[t]{\sphinxcolwidth{1}{3}} cell2-1 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% &\sphinxtablestrut{5}& cell2-3 @@ -36,7 +36,7 @@ cell2-3 \begin{varwidth}[t]{\sphinxcolwidth{2}{3}} cell3-2 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% }% \sphinxstopmulticolumn \\ @@ -47,7 +47,7 @@ cell4-1 \begin{varwidth}[t]{\sphinxcolwidth{3}{3}} cell5-1 \par -\vskip-\baselineskip\strut\end{varwidth}% +\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}% \sphinxstopmulticolumn \\ \hline