长表在同一页插入多个表头

长表在同一页插入多个表头

有时,在 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是常见的解决方法。

与此同时:来自egreg的安慰想法

感谢清晰的测试案例。我稍后会查看

相关内容