绝对,绝对,防止分页

绝对,绝对,防止分页

这个问题以前曾以各种方式被问到过,但我还没有找到一个通用的答案。也许我误解了什么,解决方案实际上非常简单。

我的文档中有一部分绝对不允许分页符。它由几个段落组成,后面跟着一些公式。我想要的是,如果当前页面上没有足够的空间,该部分应该被移到下一页,即使这意味着当前页面只包含一行文本。

我尝试了所有常用的解决方案。当我使用时\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

相关内容