在内联数学模式中,我倾向于使用文字斜杠(即/
)来表示除法。但与常见的二元运算符 [ + - \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
为 的字符代码/
。