我用:
\AddToHook{cmd/section/before}{\clearpage}
在新的部分之前开始新的页面。是否有可能仅在页面已填充超过 X 百分比时才执行此操作?这样,如果当前页面仅包含几行,\clearpage
就不会执行?
答案1
您可以检查是否\pagetotal
大于的某个分数\pagegoal
:
\documentclass{article}
\usepackage{lipsum}
\AddToHook{cmd/section/before}{\par
\ifdim\pagetotal>0.5\pagegoal % 50% of pagegoal
\clearpage
\fi}
\begin{document}
\lipsum[1]
\section{same page}
\lipsum[1-2]
\section{next page} % \clearpage here
\lipsum[2]
\end{document}
\pagegoal
是 TeX 维度,用于保存 TeX 在将框放入主垂直列表时尝试填充的垂直尺寸,以及\pagetotal
已占用的空间量。