Разделение страницы между заголовком длинной таблицы и таблицей

Разделение страницы между заголовком длинной таблицы и таблицей

Рассмотрим такой пример:

\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 строки.

Связанный контент