section
我创建了一个由和一个表组成的最小工作示例(MWE)longtabu
。
\documentclass{report}
\usepackage{longtable,tabu}
\begin{document}
An initial line of text
\vskip 47.5em % Offset the section to close to the bottom of the page
\section{Test section}
\begin{longtabu}{l X}
\textbf{Column 1} & \textbf{Column 2} \\
\hline
\\
\endhead
Cell 1 & Cell 2 \\
\end{longtabu}
Additional content
\end{document}
在编译后的文档中,文档长度为两页,章节标题位于第一页的末尾,而表格 ( longtabu
) 位于另一页的末尾。为什么 LaTeX 不能阻止在章节标题后直接插入分页符?如何修复?如果 LaTeX 必须在表格完成之前分页,我希望在章节标题之前插入分页符。
理想情况下,如果在节标题和表格之间有分页符,我希望获得与clearpage
在节标题开始之前插入相同的结果。
答案1
看看needspace
包裹。例如,此功能也存在于 中memoir
。您可以使用它添加以下内容:\needspace{5\baselineskip}
在标题之前。如果页面上没有剩余给定空间,则会插入分页符,并且在您的情况下,标题将出现在下一页上。
答案2
Just enclose your text in an unbreakable unit; before it issue a combination of glue and penalties that will fill the page if the unit has to go to the next one.
这适合您的情况,并且不会产生尴尬、不必要的分页符。
\documentclass{report}
\usepackage{longtable,tabu}
\newenvironment{absolutelynopagebreak}
{\par\nobreak\vfil\penalty0\vfilneg
\vtop\bgroup}
{\par\xdef\tpd{\the\prevdepth}\egroup
\prevdepth=\tpd}
\begin{document}
An initial line of text
\vskip 47.5em % Offset the section to close to the bottom of the page
\begin{absolutelynopagebreak}
\section{Test section}
\nopagebreak
\begin{longtabu}{l X}
\textbf{Column 1} & \textbf{Column 2} \\
\hline
\\
\endhead
Cell 1 & Cell 2 \\
\end{longtabu}
\end{absolutelynopagebreak}
\end{document}
答案3
我以前在类似情况下用过一个有点丑陋的技巧。如果你当然你总是希望表格和标题在同一页上,然后将它们放在例如 a 中,minipage
那么它们就不能设置在不同的页面上。这是一个相当丑陋的黑客行为,当你开始编辑东西时,它会充满问题,因为它们minipage
总是会在那里......
\documentclass{report}
\usepackage{longtable,tabu}
\begin{document}
An initial line of text
\vskip 47.5em % Offset the section to close to the bottom of the page
foo
\noindent
\begin{minipage}{\textwidth}
\section{Test section}
\begin{longtabu}{l X}
\textbf{Column 1} & \textbf{Column 2} \\
\hline
\\
\endhead
Cell 1 & Cell 2 \\
\end{longtabu}
\end{minipage}
\end{document}