Divisão de página entre legenda longtable e tabela

Divisão de página entre legenda longtable e tabela

Considere este exemplo:

\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}
\begin{document}
\lipsum[1-4]

another paragraph

another paragraph

another paragraph

another paragraph

anoteher paragraph

another paragraph

another paragraph

%anoteher paragraph

%another paragraph

\begin{longtable}{lr}
  \caption{long table}\\
  A&B\\
  c&D
  \end{longtable}
\end{document}

Quando compilada, a legenda da tabela longa fica em uma página, enquanto a própria tabela fica em outra página:

Insira a descrição da imagem aqui

Como posso evitar uma situação tão embaraçosa?

Comente as respostas

Um problema adicional é introduzido ao usar \hlineimediatamente após a legenda:

    \documentclass{report}
    \usepackage{lipsum}
    \usepackage{longtable}
    \usepackage{needspace}
    \begin{document}
    \lipsum[1-4]

    another paragraph

    another paragraph

    another paragraph

    another paragraph

    anoteher paragraph

    another paragraph

    another paragraph

    %anoteher paragraph

    %another paragraph
    %\Needspace{5\baselineskip}
    \begin{longtable}{lr}
      \caption{some table}\\*
      \hline
      A&B\\
      c&D\\
      E&F
      \end{longtable}
    \end{document}

Mesmo quando usamos, \\*voltamos ao estado inicial:

Insira a descrição da imagem aqui

Parece que o problema pode ser resolvido descomentando a linha%\Needspace{5\baselineskip}

No entanto, parece que é necessário algum ajuste manual \Needspaceno caso de legendas multilinhas.

Considere este exemplo:

\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}
\usepackage{needspace}
\begin{document}
\lipsum[1-4]

another paragraph

another paragraph

another paragraph

another paragraph

anoteher paragraph

%another paragraph

%another paragraph

%anoteher paragraph

%another paragraph
\Needspace{5\baselineskip}
\begin{longtable}{lr}
  \caption{\lipsum[1][1-3]}\\*
  \hline
  A&B\\
  c&D\\
  E&F
  \end{longtable}
\end{document}

O resultado é novamente o mesmo:

Insira a descrição da imagem aqui

Este caso é corrigido mudando 5para \Needspace{5\baselineskip}.6

Responder1

Você pode simplesmente usar \\*em vez de \\depois do \caption. Do manual:

\\*: O mesmo que, \\mas não permite uma quebra de página após a linha.


longtablepossui algumas macros para controlar títulos (cf. seção 3 do manual). Dependendo do seu caso de uso, dê uma olhada em \endheadou \endfirsthead. Este código funciona para mim:

\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}

\begin{document}
\lipsum[1-4]

another paragraph

another paragraph

another paragraph

another paragraph

anoteher paragraph

\begin{longtable}{lr}
  \caption{\lipsum[1][1-3]}\\
  \hline
  \endfirsthead
  A&B\\
  c&D\\
  E&F
  \end{longtable}
\end{document}

insira a descrição da imagem aqui

Responder2

Supondo que você queira que pelo menos 3 linhas apareçam longtableantes de considerar uma quebra de página inaceitável, você pode carregar o needspacepacote e emitir a diretiva

\Needspace{5\baselineskip}

imediatamente antes \begin{longtable}. Dessa forma, a menos que haja pelo menos 5 linhas de texto ainda livres na parte inferior da página, o texto longtablecomeçará no topo da próxima página.

Por que 5\baselineskip? Porque a legenda da tabela longa e a linha em branco entre a legenda e o início do corpo do texto ocupam mais 2 linhas.

informação relacionada