我不太明白 LaTeX 如何理解通过\operatorname{…}
/创建的对象\DeclareMathOperator
。我知道它会以直立罗马字体排版,但系统如何处理它?
我应该何时使用这些命令,以便 LaTeX 将该函数视为运算符。
$d(x,y)$
$\operatorname{d}(x,y)$
$\mathit{Var}(x)$
$\operatorname{Var}(x)$
$P(X=x)$
$\operatorname{P}(X=x)$
$E[X]$
$\operatorname{E}[X]$
$\mathit{Bin}(n,p)$
$\operatorname{Bin}(n,p)$
$B(\ell,\varepsilon)$
$\operatorname{B}(\ell,\varepsilon)$
$O(x)$
$\operatorname{O}(x)$
\sigma = \mathit{id}
\sigma = \operatorname{id}
d(x,y) 表示距离,Var 表示分布的方差,P 表示概率,E 表示平均值(或分布的均值),B 表示二项分布,B 表示以 l 为中心、半径为 epsilon 的球,O 表示大 O 符号。
在这些例子中,哪些应该被 LaTeX 视为运算符?然后排版正确。
我的问题可能是我不太明白运算符是什么(除了它在 LaTeX 中的含义)。
编辑:好吧,正如@cgnieder 所说,这可能偏离主题。问题是,我认为这不是偏离主题的原因是我从未考虑过 LaTeX 世界中的运算符和直立罗马字母。基本上是因为我在手写数学时不会改变形状。因此,我确实认为这与 (La)TeX 有关。抱歉,我编辑了而不是添加评论,但我的连接不允许我这样做。
编辑2:我不想包括微分算子在列表中,因为它有自己的问题。
答案1
从数学上来说,运算符(在这种情况下)是一种以标准前缀形式使用的函数,而不是位于其参数之间的二元运算符(例如 +)(或位于其参数之后的后缀运算符,群论学家所钟爱的)。
对于 TeX 来说,运算符是任何(在扩展之后)被原语包围的表达式,或者是数学类 1(大运算符)的\mathop{...}
字符标记或-ed 标记。\mathchardef
因此,为了获得具有数学意义的排版,我们的想法是让这两个概念尽可能地匹配。
虽然有一些小问题,特别是单字母原始 mathop 在数学轴上垂直居中,这通常适用于符号d
在显示模式下,但对于字母运算符(例如或)来说通常不需要,D
尤其是在内联数学中,因此有时您需要使用\mathord
而不是,或者通过包含如来\mathop
确保 mathop 原子永远不会只有一个字母(这是 AMS所做的)。对于多字母运算符名称,使用罗马字体也是惯例,尽管 TeX 本身并不认为字体选择是 mathop 规范的一部分,但的默认字体与表达式其余部分的字体相同。{}
\mathop{d{}}
\DeclareMathOperator
\mathop
原子的间距取决于其类别(当前情况下为普通或 mathop),但也取决于下一个原子的类别。您的问题有很多例子,只选一个,当它后面跟着有类别的mathop 字符Bin
时,您实际上看不到 mathop 间距的效果,但是如果您在它后面跟着一个 mathord 字符,例如,那么您会更清楚地看到差异。(
\mathopen
X
\documentclass{article}
\usepackage{amsmath}
\begin{document}
$\mathit{Bin}(n,p)$
$\operatorname{Bin}(n,p)$
$\mathrm{Bin}(n,p)$
$\mathop{\mathrm{Bin}}(n,p)$
$\mathrm{Bin} X$
$\mathop{\mathrm{Bin}} X$
\end{document}