Rel、Bin 之后的惩罚,但不是 Punct

Rel、Bin 之后的惩罚,但不是 Punct

考虑到内联数学模式,是否存在概念或印刷原因,为什么 TeX 会自动在 Rel 和 Bin 类型的原子后放置惩罚,而不会在 Punct 类型后放置惩罚?

我想到的一个原因是,它可能让你以某种方式方便地控制允许的换行符。因此,也许你应该写为而Let $a$, $b$ be numbers不是,Let $a,b$ be numbers因为没有理由避免变量之间的换行符。另一方面,你可能想写Let $a,b\in Z而不是,Let $a$, $b\in Z$因为你可能想禁止变量之间的换行符。

$a$但在我看来,即使在第二种情况下,和之间的换行$b$仍然比在 之后换行要好,所以我认为在逗号后\in包含一些低于 的正惩罚会更有意义。\relpenalty

另一个例子:我倾向于将数学中的映射定义为$f\colon A\to B$(我认为在这种情况下使用冒号作为标点符号比关系更合适,即冒号后有空格,冒号前没有空格)。在这个例子中,TeX 允许在 之后换行\to,但不允许在 之后换行\colon,这绝对更合适。

解决这两个问题最简单的方法可能是仅在数学模式之外使用标点符号,或者重新定义宏\colon以包含一些惩罚。(在另一个线程中考虑了其他可能性在内联数学模式中允许在“,”处换行吗?) 尽管如此,我还是相当感兴趣的想知道 TeX 为何会表现出这种行为,因为也许我正在监督一些重要的事情。

编辑:@egreg 在评论中对有序对提出了一个有趣的观点,然而,在我看来,这更好地说明了这种行为是多么的荒谬。

因此,如果我们有一对有序对(Ab),我们当然不想中断它。这可能被视为不允许在逗号后中断的理由。但现在考虑一对 (A+bC)。这里,TeX 允许在加号后断开,但不允许在逗号后断开。但在加号后断开比在逗号后断开更不合理。另一方面,有更复杂的元组,如 (A+bA2 +b2A3 +b3 ),我认为在逗号后断开它没有什么不好,但在加号后断开它肯定不好。

最后,请注意,如果标点符号允许换行,那么一个巧妙的方法是禁止在简单的对中换行(Ab),就是把它写在一组中${(a,b)}$,这在某种程度上尊重了公式的内在逻辑。

答案1

答案是,这种行为是如何意味着TeXbook 中显然提供了 (第 173 页)

例如,如果你输入
$f(x,y) = x^2-y^2 = (x+y)(x-y)$
在段落中间,TEX 可能会在 = 符号后(它更喜欢这样)或在 - 或 + 或 - 后(紧急情况下)中断。但无论如何逗号后都不会有中断 — 逗号后需要中断,但不应出现在 $ 之间。
如果你确实想允许在公式外层的某个点处中断,你可以说 \allowbreak。例如,如果公式
$(x_1,\ldots,x_m,\allowbreak y_1,\ldots,y_n)$
出现在一个段落的文本中,TEX 允许将其分成两部分'(X1,...,X,'和'1,...,n )'。

我并不认为这是幸运的,但我想我必须面对它。


编辑:为了以某种方式结束该主题并使其成为我自己问题的详尽答案,让我分享我的解决方案。

关于逗号后的换行符,我定义

\def\ppen{\penalty300 } %punctuation penalty
\let\col=\colon
\def\colon{\col\ppen}

也就是说,每次之后\colon,都会有 300 数量级的惩罚。\ppen现在\ppen也可以在其他地方使用,例如(a,\ppen b+c)在排版有序对时。

相关内容