
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:
¿Cómo evito una situación tan incómoda?
Comentar las respuestas
Se introduce un problema adicional cuando se usa \hline
inmediatamente 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:
Parece que el problema se puede resolver descomentando la línea.%\Needspace{5\baselineskip}
Sin embargo, parece que se necesita algún ajuste manual \Needspace
en 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:
Este caso se soluciona cambiando 5
a \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.
longtable
tiene algunas macros para controlar los encabezados (ver manual sección 3). Dependiendo de su caso de uso, eche un vistazo a \endhead
o \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}
Respuesta2
Suponiendo que desea que se muestren al menos 3 filas longtable
antes de considerar que un salto de página es inaceptable, puede cargar el needspace
paquete 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á longtable
en 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.