
考慮到內聯數學模式,是否存在概念或排版上的原因,為什麼 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 在評論中對有序對有一個有趣的觀點,然而,這更好地說明了我認為這種行為是多麼荒謬。
所以,如果我們有一個有序對(A,乙),我們當然不想破壞它。這可能被視為不允許逗號後中斷的論點。但現在考慮擁有一雙(A+乙,C)。這裡,TeX 允許在加號之後進行換行,但不允許在逗號之後進行換行。但是在加號後面打斷比在逗號後面打斷更沒有意義。另一方面,有更複雜的元組,例如 (A+乙,A2+乙2 ,A3+乙3),我認為在逗號之後打破它一點也不壞,但是在加號之後打破它肯定不好。
最後,請注意,如果標點符號允許換行,那麼有一個巧妙的方法可以禁止簡單對中的換行(A,乙),將其寫在一個群組中${(a,b)}$
,這在某種程度上尊重了公式的內部邏輯。
答案1
一個答案,這種行為是如何的意思是TeXbook 中顯然提供了(第 173 頁)
例如,如果您輸入在中間段落中,TEX 有可能在 = 符號(它更喜歡這個)之後或 - 或 + 或 - (在緊急情況下)之後中斷。但在任何情況下,逗號後面都不會出現中斷 — 需要中斷的逗號不應出現在 $ 之間。$f(x,y) = x^2-y^2 = (x+y)(x-y)$
如果您確實希望允許在公式外層的某個點處中斷,您可以說 \allowbreak。例如,如果公式出現在aa段落的文字中,TEX將允許它被分成兩部分 '(X1 , ...,X米,'和'y1 , ...,yn )'。$(x_1,\ldots,x_m,\allowbreak y_1,\ldots,y_n)$
我覺得這不是很幸運,但我想我必須面對它。
編輯:為了以某種方式結束該主題並使之成為我自己問題的詳盡答案,讓我分享我的解決方案。
關於逗號後的換行符,我定義
\def\ppen{\penalty300 } %punctuation penalty
\let\col=\colon
\def\colon{\col\ppen}
也就是說,每一個 後,都會有300 等級的\colon
懲罰。\ppen
\ppen
(a,\ppen b+c)