在線上數學模式中,我傾向於使用文字斜線(即/
)來表示除法。但與常見的二元運算子 [ + - \times \div
] 不同,/
它被視為普通的數學物件。這可能很容易導致不一致(不對稱)的水平間距,例如/
當前面是變數而後面是函數時,如下例所示:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\noindent
\(\tan x = \sin x / \cos x\)
\end{document}
輸出:
當然,我可以透過變成\cos x
一個普通的數學物件來修正水平間距:
\(\tan x = \sin x / {\cos x}\)
輸出:
或者,我可以將/
函數設定為類似於 [ + - \times \div
] 的二元運算子:
\(\tan x = \sin x \mathbin{/} \cos x\)
輸出:
現在,我很好奇:應該首選上述兩種解決方法中的哪一個?或者還有更好的嗎?
答案1
\sin x / {\cos x}
您絕對應該更喜歡帶有小空間的版本,或者\sin x / \!\cos x
如egreg 所建議的那樣。來自 TeXbook,第 132 頁:
TeX 不將其
/
視為二元運算,儘管斜槓代表除法(從數學角度看,它符合二元運算的資格)。原因是印表機傳統上會在符號+
、−
和周圍放置額外的空間*
,但不會在周圍放置額外的空間/
。
高德納 (Knuth) 繼續說道,解釋說這1 \mathbin{/} 2
將會出現
這是錯誤的;所以 TeX 認為
/
是一個普通符號。
從第 170 頁開始:
在公式 中
$n/\log n$
,TeX 會自動在 之前插入不需要的空格\log
,因為斜線被視為普通符號,並且普通符號和運算符(如 )之間通常需要空格\log
。
答案2
在您的情況下,您使用/
二元運算子\mathbin{/}
::
$a \mathbin{/} b$
作為縮寫,可以將指令定義為充當二元運算子的斜線:
\mathchardef\mslash="202F
$a \mslash b$
/
或者可以全域更改符號以充當二元運算符:
\mathcode`\/="202F
$a / b$
起始編號是類,0x200 是二元運算子。十六進制數的最後兩位2F
是 的字元代碼/
。