我需要用 来绑定单行段落和数学显示\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 页。