
Рассмотрим такой пример:
\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}
При компиляции заголовок длинной таблицы находится на одной странице, а сама таблица — на другой:
Как избежать такой неловкой ситуации?
Комментарий к ответам
Дополнительная проблема возникает при использовании \hline
сразу после подписи:
\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}
Даже при использовании \\*
мы возвращаемся к исходному состоянию дел:
Похоже, проблему можно решить, раскомментировав строку%\Needspace{5\baselineskip}
\Needspace
Однако, похоже, в случае многострочных подписей необходима ручная настройка .
Рассмотрим такой пример:
\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}
Результат снова тот же:
Этот случай исправляется заменой 5
на \Needspace{5\baselineskip}
.6
решение1
Вы можете просто использовать \\*
вместо \\
после \caption
. Из руководства:
\\*
: То же самое\\
, но запрещает разрыв страницы после строки.
longtable
есть несколько макросов для управления заголовками (см. раздел руководства 3). В зависимости от вашего варианта использования, посмотрите на \endhead
или \endfirsthead
. Этот код работает для меня:
\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}
решение2
Предполагая, что вы хотите, чтобы отображалось не менее 3 строк, longtable
прежде чем разрыв страницы будет считаться неприемлемым, вы можете загрузить пакет needspace
и выполнить директиву
\Needspace{5\baselineskip}
непосредственно перед \begin{longtable}
. Таким образом, если в нижней части страницы не осталось хотя бы 5 свободных строк текста, то он longtable
начнется в верхней части следующей страницы.
Почему 5\baselineskip
? Потому что заголовок длинной таблицы и пустая строка между заголовком и началом основного текста занимают еще 2 строки.