这个问题以前曾以各种方式被问到过,但我还没有找到一个通用的答案。也许我误解了什么,解决方案实际上非常简单。
我的文档中有一部分绝对不允许分页符。它由几个段落组成,后面跟着一些公式。我想要的是,如果当前页面上没有足够的空间,该部分应该被移到下一页,即使这意味着当前页面只包含一行文本。
我尝试了所有常用的解决方案。当我使用时\begin{samepage}
,有时仍会在部分中间出现分页符。
如果我使用\begin{minipage}
,那么该部分不会在中间出现分页符,而是被推到上一页的底部(即,它超出了页面末尾)。
有没有通用的解决方案可以解决我想要做的事情?如果有,怎么办?如果没有,我该如何解决这个问题?
还有一点需要注意:该文档是自动生成的,所以我无法通过手动将分页符放在需要的位置来解决这个问题。
答案1
只需将您的文本放在一个牢不可破的单元中;在它发出胶水和惩罚的组合之前,如果单元必须转到下一个单元,这些组合将填满整个页面。
\documentclass{article}
\usepackage{lipsum}
\newenvironment{absolutelynopagebreak}
{\par\nobreak\vfil\penalty0\vfilneg
\vtop\bgroup}
{\par\xdef\tpd{\the\prevdepth}\egroup
\prevdepth=\tpd}
\begin{document}
\lipsum[1]
\begin{absolutelynopagebreak}
\lipsum[1-3]\lipsum*[4]
\end{absolutelynopagebreak}
HERE WE RESTART \lipsum[2]
\end{document}
尝试改变\lipsum[1-3]
,\lipsum[1-2]
单元将停留在一页。
答案2
\filbreak
一种解决方案可能是在节之前使用,在纯 TeX 中定义为\vfil\penalty-200\vfilneg
。这表明该行是一个有利的断点位置。至少对于我遇到的类似问题,这种方法是有效的。
答案3
您不仅需要防止分页符(minipage),还需要允许前一页延伸(最容易使用\raggedbottom
)
答案4
除了其他答案之外,\nopagebreak
还可以帮助防止中断,但要注意意外的混淆,例如\nopagebreak 何时起作用?。
还\pagebreak[x]
可以考虑在更好的位置建议分页符。
还要注意隐含建议分页的命令,例如,,\smallbreak
(如果您的章节不断中断,请阅读您在各部分之间使用的命令的文档)。\midbreak
\bigbreak