LaTeX

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,两边相等。

AB 的迹等于 BA 的迹,tr 为正体

注意 \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 时,只改这一行。

工作区对照 tr、mathrm 与斜体三种写法的间距

命名时要避开已有的命令。把 det 再定义一遍,编译会报错:

LaTeX Error: Command \det already defined.

\DeclareMathOperator 写到 \begin{document} 之后也会报错,它只认导言区。网页上常用的 KaTeX 认 \operatorname 与 \operatorname*,不认 \DeclareMathOperator,公式要同时放进网页的,正文里直接用 \operatorname。

重定义 det 时报命令已定义的错误

常见错误

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

operatorname 四种常见写错与改法对照表

本站公式编辑器里输入 \operatorname{tr} 同样排成正体,命令随打随显,按空格结束;公式编辑与预览免费、不用登录,导出要登录并开通本站会员。

一串字母要不要做成算子,看它是不是一个整体的名字:tr、rank 是,两个变量相乘的 ab 不是。

延伸阅读

  • LaTeX公式粘贴到Word:公式进 Word 前先选可编辑还是展示用
  • 免费latex:免费使用 LaTeX 的边界在哪三处
  • latex bm宏包:\bm与\boldsymbol加粗对照

常见问题

带星号版本有什么区别?
区别只在下标位置。不带星号时,行间公式里的下标排在算子右下角,和 sin、log 一样;带星号时,行间公式里的下标排到算子正下方,和 max、lim 一样。行内公式里两者都在右下角。DeclareMathOperator 同样有带星号的版本。