Tabela longa inserindo vários cabeçalhos de tabela na mesma página

Tabela longa inserindo vários cabeçalhos de tabela na mesma página

Às vezes, em uma tabela longa, recebo uma saída quebrada. Ele irá inserir o cabeçalho da tabela não-primeira na parte superior da página. É muito raro e só parece acontecer quando há uma quantidade muito específica de espaço restante na página anterior.

Reprodução do problema

Alguma idéia sobre o que causa essa saída e uma solução alternativa?

E o documento. É a reprodução mais simples que consegui fazer. Não é apenas \needspace que causa isso. O mesmo problema surge em uma tabela longa imediatamente após outra tabela longa e muito raramente após um parágrafo.

\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}

Eu testei isso em pdflatex, xelatex e lualatex em ambos debian wheezy texlive e miktex, sempre dá o mesmo resultado ruim.

Responder1

Longtable está em um estado um pouco delicado, pois alterna as rotinas de saída no início, portanto, usá- \needspacelo é um pouco corajoso. No entanto, seu exemplo pode ser simplificado para

\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}

O que mostra o mesmo problema, o que é lamentável, pois não utiliza pacotes contribuídos, limitando assim o número de pessoas que podem ser culpadas.

Remover o comentário \clearpageé a solução alternativa usual.

Enquanto isso: pensamento reconfortante de egreg

Obrigado pelo caso de teste claro. vou olhar mais tarde

informação relacionada