From fdf6081f1c455319ab197ebb5b5c750b94b8b3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20B?= <2589111+jfbu@users.noreply.github.com> Date: Wed, 10 Aug 2022 23:02:48 +0200 Subject: [PATCH] Modify longtable templates to put LaTeX macros each on its line Table body insertion without removing previous EOL may give output which contain some empty lines but longtable defines \par token to be same as \empty. --- sphinx/templates/latex/longtable.tex_t | 10 +++++++--- tests/roots/test-latex-table/expects/longtable.tex | 9 +++++++-- .../expects/longtable_having_align.tex | 9 +++++++-- .../expects/longtable_having_caption.tex | 9 +++++++-- .../expects/longtable_having_problematic_cell.tex | 11 ++++++++--- ...table_having_stub_columns_and_problematic_cell.tex | 11 ++++++++--- .../expects/longtable_having_verbatim.tex | 9 +++++++-- .../expects/longtable_having_widths.tex | 9 +++++++-- .../longtable_having_widths_and_problematic_cell.tex | 11 ++++++++--- .../expects/longtable_with_tabularcolumn.tex | 9 +++++++-- tests/test_build_latex.py | 2 +- 11 files changed, 74 insertions(+), 25 deletions(-) diff --git a/sphinx/templates/latex/longtable.tex_t b/sphinx/templates/latex/longtable.tex_t index 567488a81f1..eb40b6fd920 100644 --- a/sphinx/templates/latex/longtable.tex_t +++ b/sphinx/templates/latex/longtable.tex_t @@ -1,4 +1,5 @@ -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle <% if 'booktabs' in table.styles -%> \sphinxthistablewithbooktabsstyle @@ -52,6 +53,9 @@ \endlastfoot \sphinxtableatstartofbodyhook -<%=- ''.join(table.body) -%> +<%= ''.join(table.body) -%> \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable.tex b/tests/roots/test-latex-table/expects/longtable.tex index 2b0a960401d..17096973c61 100644 --- a/tests/roots/test-latex-table/expects/longtable.tex +++ b/tests/roots/test-latex-table/expects/longtable.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|l|l|} \sphinxtoprule @@ -33,6 +34,7 @@ \endlastfoot \sphinxtableatstartofbodyhook + \sphinxAtStartPar cell1\sphinxhyphen{}1 & @@ -54,4 +56,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_having_align.tex b/tests/roots/test-latex-table/expects/longtable_having_align.tex index 67648c649ad..68ffac40296 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_align.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_align.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-align-option}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[r]{|l|l|} \sphinxtoprule @@ -33,6 +34,7 @@ \endlastfoot \sphinxtableatstartofbodyhook + \sphinxAtStartPar cell1\sphinxhyphen{}1 & @@ -54,4 +56,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_having_caption.tex b/tests/roots/test-latex-table/expects/longtable_having_caption.tex index f3ac1766409..232e8ecca42 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_caption.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_caption.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-caption}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|l|l|} \sphinxthelongtablecaptionisattop @@ -35,6 +36,7 @@ \endlastfoot \sphinxtableatstartofbodyhook + \sphinxAtStartPar cell1\sphinxhyphen{}1 & @@ -56,4 +58,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_having_problematic_cell.tex b/tests/roots/test-latex-table/expects/longtable_having_problematic_cell.tex index 74f4b81177a..9c15d319ea0 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_problematic_cell.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_problematic_cell.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-problematic-cell}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|*{2}{\X{1}{2}|}} \sphinxtoprule @@ -32,7 +33,8 @@ \endfoot \endlastfoot -\sphinxtableatstartofbodyhook\begin{itemize} +\sphinxtableatstartofbodyhook +\begin{itemize} \item {} \sphinxAtStartPar item1 @@ -61,4 +63,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_having_stub_columns_and_problematic_cell.tex b/tests/roots/test-latex-table/expects/longtable_having_stub_columns_and_problematic_cell.tex index ffc3a9d8091..21f36b50d78 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_stub_columns_and_problematic_cell.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_stub_columns_and_problematic_cell.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-both-stub-columns-and-problematic-cell}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|*{3}{\X{1}{3}|}} \sphinxtoprule @@ -38,7 +39,8 @@ \endfoot \endlastfoot -\sphinxtableatstartofbodyhook\sphinxstyletheadfamily \begin{itemize} +\sphinxtableatstartofbodyhook +\sphinxstyletheadfamily \begin{itemize} \item {} \sphinxAtStartPar instub1\sphinxhyphen{}1a @@ -66,4 +68,7 @@ cell2\sphinxhyphen{}3 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_having_verbatim.tex b/tests/roots/test-latex-table/expects/longtable_having_verbatim.tex index e5f13edb7b2..4e66d9e91a1 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_verbatim.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_verbatim.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-verbatim}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|*{2}{\X{1}{2}|}} \sphinxtoprule @@ -33,6 +34,7 @@ \endlastfoot \sphinxtableatstartofbodyhook + \begin{sphinxVerbatimintable}[commandchars=\\\{\}] \PYG{n}{hello} \PYG{n}{world} \end{sphinxVerbatimintable} @@ -55,4 +57,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_having_widths.tex b/tests/roots/test-latex-table/expects/longtable_having_widths.tex index 2590959ee7c..7b9cd11ba01 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_widths.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_widths.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-widths-option}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|\X{30}{100}|\X{70}{100}|} \noalign{\phantomsection\label{\detokenize{longtable:namedlongtable}}\label{\detokenize{longtable:mylongtable}}}% @@ -34,6 +35,7 @@ \endlastfoot \sphinxtableatstartofbodyhook + \sphinxAtStartPar cell1\sphinxhyphen{}1 & @@ -55,7 +57,10 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} \sphinxAtStartPar See {\hyperref[\detokenize{longtable:mylongtable}]{\sphinxcrossref{mylongtable}}}, same as {\hyperref[\detokenize{longtable:namedlongtable}]{\sphinxcrossref{\DUrole{std,std-ref}{this one}}}}. diff --git a/tests/roots/test-latex-table/expects/longtable_having_widths_and_problematic_cell.tex b/tests/roots/test-latex-table/expects/longtable_having_widths_and_problematic_cell.tex index e17bf9c14b5..6450a455d62 100644 --- a/tests/roots/test-latex-table/expects/longtable_having_widths_and_problematic_cell.tex +++ b/tests/roots/test-latex-table/expects/longtable_having_widths_and_problematic_cell.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-having-both-widths-and-problematic-cell}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|\X{30}{100}|\X{70}{100}|} \sphinxtoprule @@ -32,7 +33,8 @@ \endfoot \endlastfoot -\sphinxtableatstartofbodyhook\begin{itemize} +\sphinxtableatstartofbodyhook +\begin{itemize} \item {} \sphinxAtStartPar item1 @@ -61,4 +63,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/roots/test-latex-table/expects/longtable_with_tabularcolumn.tex b/tests/roots/test-latex-table/expects/longtable_with_tabularcolumn.tex index 46f65cb10c4..fe5b944004f 100644 --- a/tests/roots/test-latex-table/expects/longtable_with_tabularcolumn.tex +++ b/tests/roots/test-latex-table/expects/longtable_with_tabularcolumn.tex @@ -1,6 +1,7 @@ \label{\detokenize{longtable:longtable-with-tabularcolumn}} -\begin{savenotes}\sphinxatlongtablestart +\begin{savenotes} +\sphinxatlongtablestart \sphinxthistablewithglobalstyle \begin{longtable}[c]{|c|c|} \sphinxtoprule @@ -33,6 +34,7 @@ \endlastfoot \sphinxtableatstartofbodyhook + \sphinxAtStartPar cell1\sphinxhyphen{}1 & @@ -54,4 +56,7 @@ cell3\sphinxhyphen{}2 \\ \sphinxbottomrule -\end{longtable}\sphinxtableafterendhook\sphinxatlongtableend\end{savenotes} +\end{longtable} +\sphinxtableafterendhook +\sphinxatlongtableend +\end{savenotes} diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 1df99d15abe..1c0b311ee8c 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -765,7 +765,7 @@ def test_reference_in_caption_and_codeblock_in_footnote(app, status, warning): 'caption of normal table}\\label{\\detokenize{index:id36}}') in result assert ('\\caption{footnote \\sphinxfootnotemark[10] ' 'in caption \\sphinxfootnotemark[11] of longtable\\strut}') in result - assert ('\\endlastfoot\n\\sphinxtableatstartofbodyhook%\n' + assert ('\\endlastfoot\n\\sphinxtableatstartofbodyhook\n%\n' '\\begin{footnotetext}[10]\\sphinxAtStartFootnote\n' 'Foot note in longtable\n%\n\\end{footnotetext}\\ignorespaces %\n' '\\begin{footnotetext}[11]\\sphinxAtStartFootnote\n'