仅当已经填充了一定数量的行时,才在节前执行 \clearpage

仅当已经填充了一定数量的行时,才在节前执行 \clearpage

我用:

\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已占用的空间量。

相关内容