
Иногда на длинной таблице я получаю сломанный вывод. Он вставляет заголовок не первой таблицы вверху страницы. Это случается очень редко и, кажется, происходит только тогда, когда на предыдущей странице остается очень определенное количество места.
Есть идеи, что вызывает эту проблему и как ее обойти?
И документ. Это простейшее воспроизведение, которое мне удалось сделать. Но не только \needspace вызывает это. Та же проблема возникает в длинной таблице сразу после другой длинной таблицы и очень редко после абзаца.
\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}
Я тестировал это в pdflatex, xelatex и lualatex на Debian wheezy texlive и miktex, и всегда получался один и тот же плохой результат.
решение1
Longtable находится в немного деликатном состоянии, поскольку он переключает выходные процедуры в начале, поэтому использование \needspace
there — это, но, храбро. Однако ваш пример можно упростить до
\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
Спасибо за понятный тестовый пример. Посмотрю позже