在回忆录中使用长表的标题后,在续页上出现不需要的额外垂直空间

在回忆录中使用长表的标题后,在续页上出现不需要的额外垂直空间

标题末尾规则下方的垂直间距与表格第 1 页上的我预期的一样,但在第 2、3 页等上,我获得了更多的垂直空间。

有办法解决这个问题吗?

\documentclass[a4paper]{memoir}
\usepackage{longtable}
\usepackage{lipsum}

\ChangeLipsumPar{} % Don't want \par at the end of each \parbox in the \longtable
\setlipsumdefault{2} % short enough to get 2 table rows per page

\begin{document}
\begin{longtable}{p{150pt}p{150pt}}
Heading & Heading \\ \midrule
\endhead
\lipsum & \lipsum \\ \midrule
\lipsum & \lipsum \\ \midrule
\lipsum & \lipsum \\ \midrule % Extra space above this row
\lipsum & \lipsum \\ \midrule
\end{longtable}
\end{document}

EIDT:根据评论,这解决了我的具体问题:

\documentclass[a4paper]{memoir}
\usepackage{longtable}
\usepackage{lipsum}

\ChangeLipsumPar{} % Don't want \par at the end of each \parbox in the \longtable
\setlipsumdefault{2} % short enought to get 2 table rows per page

\newdimen\savebelowrulesep
\savebelowrulesep=\belowrulesep

\begin{document}
\begin{longtable}{p{150pt}p{150pt}}
\global\belowrulesep=0pt % Kill the space below \midrule in the header
Heading & Heading \\
\midrule
\endhead
\noalign{\global\belowrulesep=\savebelowrulesep % Restore \midrule ...
\vskip\belowrulesep} % ... and tweak the spacing on the first page
\lipsum & \lipsum \\ \midrule
\lipsum & \lipsum \\ \midrule
\lipsum & \lipsum \\ \midrule % Extra space above this row
\lipsum & \lipsum \\ \midrule
\end{longtable}
\end{document}

答案1

该空间来自于booktabs标题中的规则,其中包括垂直空间。

\hline您可以在该位置使用标准,或者\belowrulesep=0pt按照更新后的问题中的说明进行设置。

答案2

在您的第一个 MWE 中,将行替换为

Heading & Heading \\ \midrule

通过以下一个

Heading & Heading \\ \specialrule{\lightrulewidth}{\aboverulesep}{0pt}

解释

最简单的解决办法是消除标题中a\midrule和 the 处的断行造成的“双倍空格”,如下:\midruleDavid Carlisle 在评论中指出

我特别不喜欢所提出的解决方案,因此我使用\specialrulebooktabs包来模拟一个\midrule但没有\belowrulesep下面的。然后,我\midrule按照这个规则交换了标题的(因此您只需更改一行而不是几十行)。

\lightrulewidth我认为这个解决方案更好,因为您可以通过替换其他内容来控制规则宽度\heavyrulewidth1em等等......


例外情况 - 使用\pagebreak

只要您不在\pagebreak某个时候手动拆分长表(使用),这种方法就会有效,因为这会导致下一页的第一行接触页眉。

如果需要,您可以通过手动添加来“恢复”丢失的空间\addlinespace[<width>]

简而言之,\pagebreak您不能只使用,而是必须使用以下方法拆分长表:

\pagebreak\addlinespace[\belowrulesep]

答案3

解决方案tabularray包裹:

\documentclass[a4paper]{memoir}

\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\usepackage[nopar]{lipsum}
\setlipsumdefault{2} % short enough to get 2 table rows per page

\begin{document}
\begin{longtblr}[
  caption = {Table Title},
]{
  colspec={p{150pt}p{150pt}},
  rowhead = 1,
}
\toprule
  Heading & Heading \\
\midrule
  \lipsum & \lipsum \\
\midrule
  \lipsum & \lipsum \\
\midrule
  \lipsum & \lipsum \\
\midrule
  \lipsum & \lipsum \\
\bottomrule
\end{longtblr}
\end{document}

在此处输入图片描述

相关内容