LaTeX 实现空间不足时换到下一页

LaTeX实现与下段同页

需求

用一个自定义命令\head{}生成类似标题的效果,当标题在页面结尾时,想让它出现在下一页,此页结尾处留白,类似word中“与下段同页”的设置。

没那么麻烦

texdoc needspace 文档即可。

1
2
\needspace{5\baselineskip}
The next five lines ...

The \needspace <length> macro reserves an approximate amount of space length for the material following to be kept on the same page. The accuracy of its calculations depend on what penalties are in effect, but is efficient and normally adequate. A short page will be ragged bottom even if \flushbottom is in effect.

ChatGPT

要实现在\head命令发现自己出现在页尾时,将自己放到下一页,并在当前页结尾处留白,类似Word中的“与下段同页”设置,你可以使用\needspace命令和\vfill命令。

以下是一种可能的实现方法:

在导言区或你的自定义命令之前,添加以下代码:

1
latexCopy Code\usepackage{needspace}

然后,在你的自定义命令中添加如下代码:

1
2
3
4
5
6
7
8
9
10
latexCopy Code\newcommand{\head}[1]{%
\needspace{2\baselineskip} % 设置所需的空间大小,这里是2行文字的高度
\par\nobreak % 禁止在新页上方产生分页符
\vspace*{\fill} % 添加垂直间距以填充当前页剩余空间
\clearpage % 强制创建新页面
\section*{#1} % 插入标题
\markboth{}{} % 如果需要设置页眉,可以在这里添加内容
\vspace*{\fill} % 添加垂直间距以填充新页面上方的空白
\par\nobreak % 禁止在新页面上方产生分页符
}

上述代码首先使用\needspace{}命令指定了所需的空间大小,这里设为2倍行高。这意味着如果当前页剩余空间不足以放置2行文字的高度,\head命令将会在下一页开始新的一行。

接着,我们使用\par\nobreak命令禁止在新页面的顶部产生分页符,并使用\vspace*{\fill}命令添加垂直间距以填充当前页面的剩余空间。这样可以确保标题出现在新页面的开头,并在当前页面结尾处留白。

然后,我们使用\clearpage命令创建新页面,并插入标题使用\section*{}命令。再接着,使用\vspace*{\fill}命令添加垂直间距以填充新页面上方的空白,并使用\par\nobreak命令禁止在新页面的顶部产生分页符。

通过这种方式,\head命令将在发现自己出现在页尾时,将标题放到下一页,并在当前页结尾处留白。希望对你有帮助!


LaTeX 实现空间不足时换到下一页
https://taylorandtony.github.io/2025/03/13/latex-实现空间不足时换到下一页/
作者
TaylorAndTony
发布于
2025年3月13日
许可协议