有时,在 longtable 上,我会得到不完整的输出。它会在页面顶部插入非第一个表头。这种情况非常罕见,而且似乎只发生在上一页剩余特定量的空间时。
对于导致此输出的原因以及解决方法,您有什么想法吗?
还有文档。这是我能做的最简单的复制。但问题不只是由 \needspace 引起的。同样的问题会在一个 longtable 之后立即出现,很少出现在段落之后。
\documentclass[10pt,a4paper,final,twoside]{article}
\usepackage[a4paper,landscape]{geometry}
\usepackage{longtable}
\usepackage{needspace}
\begin{document}
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz\\[30pt]
\needspace{10\baselineskip}
\section*{Header}
\begin{longtable}{l l l l l}
\multicolumn{5}{l}{Data (continued)}\\*
\textbf{Addr} & \textbf{Type} & \textbf{Product} & \textbf{Serial} & \textbf{Location} \\*
\hline
\endhead
\multicolumn{5}{l}{Data}\\*
\textbf{Addr} & \textbf{Type} & \textbf{Product} & \textbf{Serial} & \textbf{Location} \\*
\hline
\endfirsthead
25 & Data & Data & Data & Data \\
26 & Data & Data & Data & Data \\
27 & Data & Data & Data & Data \\
28 & Data & Data & Data & Data \\
29 & Data & Data & Data & Data \\
30 & Data & Data & Data & Data \\
31 & Data & Data & Data & Data \\
32 & Data & Data & Data & Data \\
\end{longtable}
\end{document}
我已经在 debian wheezy texlive 和 miktex 上的 pdflatex、xelatex 和 lualatex 中测试过这一点,总是给出相同的错误输出。
答案1
Longtable 处于一个有点微妙的状态,因为它在开始时切换输出例程,因此使用\needspace
它有点大胆。但是您的示例可以简化为
\documentclass[10pt,a4paper,final,twoside,landscape]{article}
\setlength\textwidth{591.5302pt}
\setlength\textheight{418.25368pt}
\usepackage{longtable}
\begin{document}
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz
xyz\\[30pt]
%%\clearpage
\section*{Header}
\begin{longtable}{l l l l l}
\multicolumn{5}{l}{Data (continued)}\\*
\textbf{Addr} & \textbf{Type} & \textbf{Product} & \textbf{Serial} & \textbf{Location} \\*
\hline
\endhead
\multicolumn{5}{l}{Data}\\*
\textbf{Addr} & \textbf{Type} & \textbf{Product} & \textbf{Serial} & \textbf{Location} \\*
\hline
\endfirsthead
25 & Data & Data & Data & Data \\
26 & Data & Data & Data & Data \\
27 & Data & Data & Data & Data \\
28 & Data & Data & Data & Data \\
29 & Data & Data & Data & Data \\
30 & Data & Data & Data & Data \\
31 & Data & Data & Data & Data \\
32 & Data & Data & Data & Data \\
\end{longtable}
\end{document}
这显示出了同样的问题,这很不幸,因为它没有使用贡献的包,因此限制了可能被责备的人的数量。
取消注释\clearpage
是常见的解决方法。
感谢清晰的测试案例。我稍后会查看