如何防止单行段落和数学显示之间出现分页符

如何防止单行段落和数学显示之间出现分页符

我需要用 来绑定单行段落和数学显示\nobreak\clubpenalty\widowpenalty\displaywidowpenalty没有效果,因为它是单行,并且\par数学显示之间有。取消注释\nobreak结果就可以了。单行转到下一页。手动干预 tex 文件不是一种选择。

梅威瑟:

\documentclass{article}
\usepackage[paperwidth=5cm,paperheight=3cm]{geometry}
\geometry{verbose,tmargin=.5cm,bmargin=.5cm,lmargin=.5cm,rmargin=.5cm}
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000

\begin{document}
Long long long long long long long long long text.

Single line paragraph:

%\nobreak
\begin{equation}
a+b
\end{equation}
\end{document}

错误输出:

错误的

完美的:

在此处输入图片描述

我正在使用 Luatex,通过post_linebreak_filter回调我可以识别单行段落,但我在这里看不到数学。我想创建惩罚节点并在显示之前添加它。 mlist_to_hlist可以找到数学,但我没有看到与其他回调的任何关联。看来这个回调稍后会起作用。任何想法都会非常有帮助

答案1

显示的方程式前永远不要有空行,这会强制在方程式前生成一个仅由空白组成的虚假单行段落(因此看起来有点像垂直空间,但实际上不是),这会产生较差的垂直空间并允许较差的分页符。

如果你使用

\documentclass{article}
\usepackage[paperwidth=5cm,paperheight=3cm]{geometry}
\geometry{verbose,tmargin=.5cm,bmargin=.5cm,lmargin=.5cm,rmargin=.5cm}
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000

\begin{document}
Long long long long long long long long long text.

Single line paragraph:
\begin{equation}
a+b
\end{equation}
\end{document}

所有内容都放在一页上,如果你添加一行

\documentclass{article}
\usepackage[paperwidth=5cm,paperheight=3cm]{geometry}
\geometry{verbose,tmargin=.5cm,bmargin=.5cm,lmargin=.5cm,rmargin=.5cm}
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000

\begin{document}
Long long long long long long long long long text.\\
zz

Single line paragraph:
\begin{equation}
a+b
\end{equation}
\end{document}

然后整个第二段(等式现在是第二段的一部分)移至第 2 页。

相关内容