Longtable 最后一页仅显示表格标题和底线

Longtable 最后一页仅显示表格标题和底线

我更新了 MWE 以解决 David 的评论。现在我使用的是 CSV 文件(“未知记录数”)。这会在最后一页上给出相同的“仅标题/底线”(在 Overleaf 中测试)。如何使其始终正常工作(与记录数量无关)?

我对 longtable 有一个问题。longtable 有时会产生一个“空”的最后一个表格页面(只有一个标题和底行,因此没有数据行)。

(致谢)我改变了这篇 tex.stackexchange.com 帖子来演示这个问题。

更一般地说:我如何获得长表行为:“如果剩余记录数少于 x,则跳至下一页,即使当前页面未满”。因此,我可以说在新页面上执行最后的 [2,3,4 或 5](并且总数更高,否则我们将陷入无限循环),以避免在最后一页上得到丑陋的 1 个项目表。

MWE 最后一页截图(Overleaf 生成):

在此处输入图片描述

MWE 代码

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{demo.csv}
col
a 
b
c
d
e
f
g
h
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
z1 
\end{filecontents}
\usepackage{array}
\usepackage{setspace}
\usepackage{datatool}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage[english]{babel}
\usepackage[pangram]{blindtext}
\usepackage{lscape}
\begin{document}
\setstretch{1.03}
\blindtext[5]
\begin{landscape}  
\DTLloaddb{dset}{demo.csv}
\begin{longtable}{>{\raggedright}p{7cm}>{\centering}p{7cm}}
\toprule 
Header & \\
\midrule
\endhead
\bottomrule
\endfoot
\endlastfoot
\DTLforeach*{dset}{\COL=col}%
{\COL & t\tabularnewline}%
\end{longtable}\end{landscape}
\end{document}

答案1

发布的代码没有显示问题,最后一行有 Jack... 以及最后一页 3 上的标题,但正如 longtable 手册中所述,要将行保持在一起,您可以使用\\*或(更强烈地)将更多行放入该\endlastfoot部分。另请注意,\sfamily不带参数,因此您应该删除{}表格周围的组。

请注意,规则中更有可能出现最终中断的问题,booktabs因为根据设计,规则周围有垂直空间,从而longtable引入了额外的断点。

答案2

DataTool/LongTable 最佳实践就在这里!!

我发现了这个问题。如果您遇到此问题,则需要进行以下更改。背景是原始 MWE 总是\tabularnewline在每一行之后发出,最后一行也是如此。在新方法中,这会在新行开始之前输出(第一行除外)。

切勿使用(如在 MWE 中):

\DTLforeach*{dset}{\COL=col}%
{\COL & t\tabularnewline}%

但使用:

\DTLforeach*{dset}{\COL=col}%
{\DTLiffirstrow{}{\tabularnewline}%
\COL & t}%

相关内容