我在文章类中重新定义了 \subsection
\renewcommand\subsection{%
\penalty-8888
%\pagebreak[3]
\@startsection {subsection}{1}{0em}{1\parskip plus 1\parskip minus 1\parskip}{1\parskip plus 1\parskip minus 1\parskip}{\centering\rmfamily\bfseries\scshape}%
}
在我的文本中,某个部分靠近底部。启用 pagebreak[3] 并注释掉 \penalty 后,该部分从下一页开始,但前一个文本会向底部扩展。这是预料之中的。如果我使用 \penalty-8888 选项,情况也是如此。
如果我将 \newpage 放在我的子部分之前,页面底部会有一个空白区域。这是预期的,也是我想要的,但只有在必要时才会出现(比如在页面的三分之二处);是否可以使用 \pagebreak 之类的参数来缓和它的触发?
PS:实际上,我也重新定义了 \subsubsection,也遇到了同样的问题。我也重新定义了 \section,但我在其中明确添加了 \newpage,所以一切正常。
答案1
你可能想替换
\penalty-8888
比如
\par\vspace{0pt plus .3\textheight}\pagebreak[3]\vspace{0pt plus -.3\textheight}
这将允许空间在分页符之前延伸至文本高度的 30%,因此页面很短,但如果没有发生分页,则两个 vspace 会抵消并且不会添加额外的空间。
或者更简单,但有点弹性
\filbreak