latex operatorname:自定义正体算子与下标位置
更新于
latex operatorname 是 amsmath 提供的命令,\operatorname{tr} A 把 tr 排成正体,并在它和后面的 A 之间自动留出算子间距,效果和内核自带的 \sin、\det 一样。同一个算子全文要用很多次,就在导言区写 \DeclareMathOperator{\tr}{tr},正文直接写 \tr A。两个命令都有带星号的版本,区别只在行间公式里下标放右下角还是正下方。
速查表:13 种写法与效果
| 写法 | 排出来 | 说明 |
|---|---|---|
\operatorname{tr} A |
正体 tr,后面留细空 | 一次性用,amsmath |
\DeclareMathOperator{\tr}{tr} |
定义成 \tr |
只能写在导言区 |
\operatorname{rank} A |
正体 rank | 矩阵的秩 |
\operatorname{sgn} x |
正体 sgn | 符号函数 |
\operatorname{diag}(\lambda_1, \dots, \lambda_n) |
正体 diag,括号紧贴 | 对角矩阵 |
\operatorname{Var}(X) |
正体 Var | 方差 |
\operatorname{Res}_{z=0} f |
下标在右下角 | 不带星号 |
\operatorname*{ess\,sup}_{x} f |
行间下标在正下方 | 带星号 |
\mathrm{tr} A |
正体,但 tr 和 A 挤在一起 | 缺算子间距 |
\text{tr} A |
同上,且字体跟着正文走 | 不推荐 |
tr A |
斜体 t、r、A 三个变量 | 错误写法 |
\det A |
内核已有的算子 | 不必自定义 |
\DeclareMathOperator{\det}{det} |
报错 | 名字已被占用 |
内核已经定义好的算子有 \sin、\log、\det、\dim、\ker、\deg、\exp、\lim、\max 等;tr、rank、sgn、diag、Var 都不在其中,要自己定义。
三个示例:tr、rank、sgn
迹。 迹是方阵主对角线元素之和,tr 是 trace 的缩写。矩阵乘积的迹与乘的顺序无关:
\operatorname{tr}(AB) = \operatorname{tr}(BA)
取 A 的两行为 (1, 2)、(3, 4),B 的两行为 (0, 1)、(1, 0)。AB 的两行是 (2, 1)、(4, 3),迹 2 + 3 = 5;BA 的两行是 (3, 4)、(1, 2),迹 3 + 2 = 5,两边相等。

注意 \operatorname{tr}(AB) 里 tr 和括号之间没有空隙,\operatorname{tr} A 里 tr 和 A 之间有一个细空。这是算子的自动间距规则:后面跟括号不加空,跟字母才加。
秩。 两行成比例的矩阵秩为 1:
\operatorname{rank} \begin{pmatrix} 1 & 2 \\ 2 & 4 \end{pmatrix} = 1
第二行 (2, 4) 正好是第一行 (1, 2) 的 2 倍,所以只有一行线性无关,秩是 1。
符号函数。 分段定义里的 sgn 同样用正体:
\operatorname{sgn} x = \begin{cases} 1, & x > 0 \\ 0, & x = 0 \\ -1, & x < 0 \end{cases}
x = −3 时取第三段,sgn(−3) = −1。前面有系数时写 2\operatorname{sgn} x,2 和 sgn 之间也会自动留出间距。
operatorname 与 DeclareMathOperator 怎么选
一篇文章里只出现一两次,用 \operatorname;出现很多次,在导言区统一定义:
\usepackage{amsmath}
\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\sgn}{sgn}
rank 就是秩;sgn 取自拉丁文 signum,有的教材写成 sign,用 \operatorname{sign} 即可,定义方式完全一样。
定义放在导言区还有一个好处:期刊要求把 tr 改成 Tr 时,只改这一行。

命名时要避开已有的命令。把 det 再定义一遍,编译会报错:
LaTeX Error: Command \det already defined.
\DeclareMathOperator 写到 \begin{document} 之后也会报错,它只认导言区。网页上常用的 KaTeX 认 \operatorname 与 \operatorname*,不认 \DeclareMathOperator,公式要同时放进网页的,正文里直接用 \operatorname。

常见错误
- 用
\mathrm{tr}代替:字是正体了,但 tr 和后面的 A 挤成 trA,要靠手动加\,才分得开。 - 没加载 amsmath:
\operatorname报Undefined control sequence.。 - 重定义已有算子:见上文,det、dim、ker 这些直接用。
- 该带星号没带:想让行间公式的下标在正下方,却写了不带星号的版本,下标一直在右下角。

本站公式编辑器里输入 \operatorname{tr} 同样排成正体,命令随打随显,按空格结束;公式编辑与预览免费、不用登录,导出要登录并开通本站会员。
一串字母要不要做成算子,看它是不是一个整体的名字:tr、rank 是,两个变量相乘的 ab 不是。
延伸阅读
- LaTeX公式粘贴到Word:公式进 Word 前先选可编辑还是展示用
- 免费latex:免费使用 LaTeX 的边界在哪三处
- latex bm宏包:
\bm与\boldsymbol加粗对照
常见问题
- 带星号版本有什么区别?
- 区别只在下标位置。不带星号时,行间公式里的下标排在算子右下角,和 sin、log 一样;带星号时,行间公式里的下标排到算子正下方,和 max、lim 一样。行内公式里两者都在右下角。DeclareMathOperator 同样有带星号的版本。