长表标题和表格之间的页面分割

长表标题和表格之间的页面分割

考虑这个例子:

\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

假设您希望至少longtable显示 3 行,然后才认为分页符是不可接受的,您可以加载needspace包并发出指令

\Needspace{5\baselineskip}

紧接在 之前\begin{longtable}。这样,除非页面底部还有至少 5 行文本可用,否则 将从longtable下一页的顶部开始。

为什么5\baselineskip?因为 longtable 的标题和标题与正文开头之间的空行占用了另外 2 行。

相关内容