我发现内联数学中的自动换行有点晦涩难懂。有没有一份全面的总结,说明哪里可能发生自动换行,哪里不可能发生自动换行,惩罚是什么,等等?我想这应该在 LaTeX 配套书或 TeX 书中,但在哪里呢?但我也接受任何参考资料。另外,是否可以为 LaTeX 建议特别好的断点?
具体来说,我正在考虑诸如此类的事情$\{x \in X \mid P(x) \allowbreak\ \text{and}\ \allowbreak Q(x)\}$
。这是正确的用法吗?可能不是。
答案1
这一点也不晦涩,因为只有一条规则:可以在可能自动插入的惩罚下进行换行。
TeXbook 第 96 页解释了换行点的一般规则。
TeX 自动在关系原子和二元运算原子后插入惩罚。插入的惩罚分别为\relpenalty
和\binoppenalty
。默认值
\relpenalty=500
\binoppenalty=700
您可以在公式中的任何位置手动添加惩罚;如果您在 TeX 会自动添加惩罚的地方这样做,它不会在特定情况下添加它(TeXbook,第 174 页)。
其实还有另一条规则:如果这些惩罚(隐式或显式)出现在子公式中,基本上在和之间(不界定参数)或和之间,则{
不会产生任何后果。子公式是不可分割的(其中的空间是“冻结的”)。}
\left
\right
标准示例是$x=\nobreak0$
,或者,在正确的 LaTeX 中$x=\nolinebreak0$
,因为命令会插入价值 10000 的惩罚,从而禁止换行。
在其他情况下,你可以在逗号后添加惩罚,以解决有问题的段落的情况:
$x_1,\linebreak[0],x_2,\dots,x_n$
(在纯 TeX 中,它会是\allowbreak
)。默认情况下,TeX 在数学模式下不会在逗号后换行,如上所述,但手动插入的惩罚允许这样做。
\documentclass{article}
\begin{document}
\parbox{0pt}{
$x=y$ % line break
$x=\nolinebreak y$ % no line break
$x+y$ % line break
$x+\nolinebreak y$ % no line break
$x,y$ % no line break
$x,\linebreak[0]y$ % line break
${x=\linebreak y}$ % no break because of the braces
$\left(x=\linebreak y\right)$ % no break because of \left and \right
}
\end{document}
由于 施加了零宽度,因此空格被压缩\parbox{0pt}
,这只是为了触发尽可能多的换行符。
在你的例子中,\allowbreak
应该去前空格,因此如果实际进行了换行,后者将被丢弃。