División de página entre título de tabla larga y tabla

División de página entre título de tabla larga y tabla

Considere este ejemplo:

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

Cuando se compila, el título de la tabla larga está en una página, mientras que la tabla en sí está en otra página:

Ingrese la descripción de la imagen aquí

¿Cómo evito una situación tan incómoda?

Comentar las respuestas

Se introduce un problema adicional cuando se usa \hlineinmediatamente después del título:

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

Incluso cuando usamos \\*volvemos al estado inicial de cosas:

Ingrese la descripción de la imagen aquí

Parece que el problema se puede resolver descomentando la línea.%\Needspace{5\baselineskip}

Sin embargo, parece que se necesita algún ajuste manual \Needspaceen el caso de subtítulos de varias líneas.

Considere este ejemplo:

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

El resultado vuelve a ser el mismo:

Ingrese la descripción de la imagen aquí

Este caso se soluciona cambiando 5a \Needspace{5\baselineskip}.6

Respuesta1

Simplemente puedes usarlo \\*en lugar de \\después de \caption. Del manual:

\\*: Lo mismo \\pero no permite un salto de página después de la fila.


longtabletiene algunas macros para controlar los encabezados (ver manual sección 3). Dependiendo de su caso de uso, eche un vistazo a \endheado \endfirsthead. Este código me funciona:

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

ingrese la descripción de la imagen aquí

Respuesta2

Suponiendo que desea que se muestren al menos 3 filas longtableantes de considerar que un salto de página es inaceptable, puede cargar el needspacepaquete y emitir la directiva.

\Needspace{5\baselineskip}

inmediatamente antes \begin{longtable}. De esa manera, a menos que queden al menos 5 líneas de texto libres en la parte inferior de la página, comenzará longtableen la parte superior de la página siguiente.

Por qué 5\baselineskip? Porque el título de la tabla larga y la línea en blanco entre el título y el inicio del cuerpo del texto ocupan 2 líneas más.

información relacionada