杂项符号

1655 年,牛津数学家约翰·沃利斯在一本讲圆锥曲线的书里写下了一个此前无人使用的横躺的 8——无穷大 ∞ 就此诞生。本页要讲的「杂项符号」,也就是 LaTeX 里的 \infty\partial\nabla\ell\hbar\dagger 这一类既不属于希腊字母、也不属于运算符、关系符或箭头的记号,几乎都是这样来的:某个人发明了一次,它就留了下来。下面按来历和用途梳理那些真正要动手敲的符号,说明哪些是 LaTeX 标准自带、哪些需要 amssymb 宏包,以及如何避开 \ell 与字母 l、\prime 与撇号这类经典误用。

为什么在正文里写 \infty 会报 ! Missing $ inserted

因为本页的符号几乎都是只能用于数学模式的命令。直接在正文里敲 \infty,LaTeX 会报 ! Missing $ inserted,并试着替你补上 $。在 TeX 看来 ∞ 不是图形,而是一个归类为「普通符号(ordinary)」的原子;由这个类别推出的左右间距,在数学模式之外根本没有定义。所以要写成 $\infty$。例外是那些本来就为正文准备的记号:节号 \S(§)、段落号 \P(¶)、\copyright(©),以及剑标 \dag\ddag,它们在文本模式下可以直接使用。

document.tex
\usepackage{amssymb}   % needed for \varnothing, \square, \measuredangle, \circledR
% ...
The volume $V$ diverges to $\infty$, and the gradient is $\nabla f$.
\[
  \frac{\partial f}{\partial x}, \qquad \angle ABC = 90^\circ, \qquad \hbar\omega
\]

另一条分界线是宏包规则\infty\partial\nabla\angle\ell\hbar\Re\Im\wp\aleph\surd\prime\dagger\ddagger\forall\exists\neg\top\bot\emptyset\flat\sharp\natural 全部属于 LaTeX 标准,不需要任何额外宏包。相反,\varnothing(∅ 的圆形变体)、\square(□)、\measuredangle(∡)、\circledR(®)以及希伯来字母 \beth(ℶ)都是 AMS 追加的:导言区一旦漏掉 \usepackage{amssymb},编译就会停在 ! Undefined control sequence。看到这条错误,先怀疑宏包,再怀疑拼写。

∞、∂、∇、∠ 是从哪里来的

这几个符号都是某位作者带进来、被下一代接手的。\infty(∞)最早出现在沃利斯 1655 年的《De sectionibus conicis》,他本人从未解释为何选了这个形状。\partial(∂)——那个圆润的 d ——1786 年由勒让德用于偏导数,他后来又弃之不用;1841 年雅可比重新起用,这才固定下来。最有意思的是 \nabla(∇)。给这个形状取名「nabla」的是百科全书编者 威廉·罗伯逊·史密斯,他在 1870 年写给彼得·格思里·泰特的信中说,这个倒过来的 delta 像一件腓尼基竖琴(希腊语 νάβλα)。泰特和麦克斯韦在私人通信里半开玩笑地一直这么叫,结果它就进了全世界的教科书。

实用上,这四个符号都容易与形近符号混用,而排版程序不会提醒你。\nabla(∇)与大写 delta \Delta(Δ)只差一个上下颠倒,把梯度写成 Δ 照样能顺利编译。\partial 一定要写成命令,不要用斜体 d 顶替,否则读者就分不清全微分与偏导数。\infty 单独出现的机会远少于它在下标里的用法——\lim_{n \to \infty}\int_0^{\infty}——在那些位置它会自动缩小。\surd(√)只是根号的那一「勾」,横线不会伸长;真要排平方根,请用带参数的 \sqrt{x}\angle(∠)属于标准,但测量角 \measuredangle(∡)和球面角 \sphericalangle(∢)需要 amssymb

命令字形意义 / 用途
\infty无穷大;标准;常见于 \lim_{n \to \infty}
\partial偏导数的圆润 d;标准;不要用 d 顶替
\nablanabla / del(梯度、散度、旋度);标准;勿与 \Delta 混淆
\angle角;标准;\measuredangle ∡ 需要 amssymb
\surd仅根号那一勾;标准;平方根请用 \sqrt{x}
\prime撇号(prime);标准;通常写作 f'

当字母升格为符号:ℓ、ℏ、ℜ、℘、ℵ

这些符号原本都是字母,通过换字体或加一笔,逐渐背上了独立的含义。\ell(ℓ)是手写体小写 l,用于长度、直线和数列下标。\hbar(ℏ)是加了一横的 h,表示约化普朗克常数 h/2π——多加一笔就成了另一个常数,这正是物理学惯用的命名方式。\wp(℘)是花体 p,代表魏尔斯特拉斯椭圆函数;\aleph(ℵ)是希伯来字母 aleph,表示无穷基数。\Re\Im 给出复数的实部与虚部,输出的并非正体 R 和 I,而是 哥特体(Fraktur)的 ℜ 和 ℑ。以上全部属于 LaTeX 标准,无需 amssymb

由此得出两条实用判断。其一,哥特体的 ℜ 与 ℑ 在现代版面上略显古旧,读者也确实会把它们误读成 R 和 I。若想把正体的「Re」「Im」当作算子来排,如今的定式是 amsmath\operatorname{Re}\operatorname{Im},它们还会按算子取好前后间距。其二,\aleph 属于标准,但紧随 aleph 之后的希伯来字母 beth ℶ、gimel ℷ、daleth ℸ\beth\gimel\daleth)需要 amssymb。集合论论文里敲出 ℶ 却撞上 ! Undefined control sequence,原因几乎总是这个。

命令字形意义 / 用途
\ell手写体小写 l(长度、直线);标准
\hbar约化普朗克常数 h/2π;标准
\Re实部;哥特体;正体形式为 \operatorname{Re}
\Im虚部;哥特体;正体形式为 \operatorname{Im}
\wp魏尔斯特拉斯 p(椭圆函数);标准
\alephaleph(无穷基数);标准
\bethbeth(基数);需要 amssymb

量词、否定、⊤/⊥ 与空集

逻辑用的记号 \forall(∀)、\exists(∃)、\neg(¬,别名 \lnot)、\top(⊤)、\bot(⊥)全属 LaTeX 标准。∀ 是倒过来的 A(all),∃ 是反过来的 E(exists)——字形本身就说明了来历。有一处区别值得记住:\bot\perp。二者字形都是 ⊥,但 \bot 注册为普通符号(ordinary),\perp 注册为关系符(relation),因此左右留白不同。表示「假」或「最小元」时写 \bot;表示「垂直」这一关系时写 AB \perp CD。同理,\top 用于「真」或「最大元」。只有否定的存在量词 \nexists(∄)需要 amssymb

空集有两种写法。标准的 \emptyset 是加了斜线的椭圆,在 Computer Modern 里有时看着像被压扁的 0。amssymb 提供的 \varnothing 则是加斜线的正圆,正因为一眼就能看出「这不是零」,许多作者偏爱它。选哪一个都行,但 同一份文档里不要混用——评审一定会挑出来。若要用 \varnothing,别忘了 \usepackage{amssymb},否则就是 ! Undefined control sequence。量词与集合运算的全貌,请见集合与逻辑符号页。

命令字形意义 / 用途
\forall全称量词「对任意」;标准
\exists存在量词「存在」;标准
\neg¬否定;与 \lnot 相同;标准
\top真 / 最大元;普通符号;标准
\bot假 / 最小元;普通符号;垂直请用 \perp
\emptyset空集(带斜线的椭圆);标准
\varnothing空集(圆形变体);需要 amssymb

剑标 † ‡,以及为证明收尾的 ∎

剑标 \dagger(†)与双剑标 \ddagger(‡)都是 LaTeX 标准的数学模式符号。若要在正文里当脚注标记,可用文本模式的 \dag\ddag。但在公式里,† 表示的不是脚注,而是伴随(厄米共轭)A^{\dagger} 读作「A dagger」,量子力学里的产生算符 a^{\dagger} 也是同一个用法。因为它几乎总在上标位置,单独敲 \dagger 的场合极少。

证明末尾那个空心方块 ∎ 叫作「墓碑(tombstone)」或「哈尔莫斯符号」。箭头那一页顺带提到,是保罗·哈尔莫斯把它带进数学的;故事还有后半段。哈尔莫斯在回忆录《I Want to Be a Mathematician》里写道,这个符号根本不是他的发明——他是在与数学毫无关系的大众杂志上看到它被用来标示文章结束,于是借了过来。他在数学语境中首次使用它是 1950 年。用 LaTeX 排的话可以写 amssymb\square(□)或 \blacksquare(■),但实务上用 amsthmproof 环境就会自动补在末尾。想自己决定位置就用 \qedhere,想换掉符号本身则用 \renewcommand{\qedsymbol}{...}

命令字形意义 / 用途
\dagger数学模式;伴随 A^{\dagger};标准
\ddagger数学模式的双剑标;标准
\dag文本模式;用作脚注标记;标准
\square空心方块 / QED 记号;需要 amssymb
\blacksquare实心方块;需要 amssymb

排出 ♭ ♯ ♮ ——\sharp# 完全是两回事

三个变音记号——降号 \flat(♭)、升号 \sharp(♯)、还原号 \natural(♮)——都是 LaTeX 标准的数学符号。即使在正文里写音名,也要进入数学模式:B$\flat$$B\flat$。这里最容易出事的是 #。在 TeX 看来 # 是标记宏参数的特殊字符,直接写进正文会报错;要打印出来必须转义成 \#。而 \# 打印的是井号,不是音乐里的升号 ♯——两者是字形和倾斜都不同的字符。音名请写 $C\sharp$,编程语言请写 C\#。真正排乐谱是另一回事,那要用专门的排版系统。

命令字形意义 / 用途
\flat降号;数学模式;标准
\sharp升号;与 \# 不同;标准
\natural还原号;数学模式;标准

三组易混——\ell 与 l、\prime'\Re 与 R

先看 \ell(ℓ)与数学斜体的 l。在许多数学字体里,斜体小写 l 几乎无法与数字 1 和竖线 | 区分,手写体 ℓ 正是为避免这一点而设。凡是希望读作「l」的量——长度、直线、下标——选 \ell 最稳妥。绝不能做的是 在同一份文档里用 \elll 表示两个不同的量:读者一定会弄混。二选一即可。同理,要给 i、j 加重音符号时,应以无点的 \imath(ı)、\jmath(ȷ)为底:\hat{i} 会让圆点与帽子重叠,所以写 \hat{\imath}

再看 \prime(′)与撇号。在数学模式里 '^{\prime} 的简写,因此 f'f^{\prime} 输出完全相同。单独写 \prime 会把一个上标尺寸的字形放在基线上,很不好看,所以几乎不会单用。TeX 会把连续的撇号连同紧随其后的 ^ 一并处理,所以 x'^2 排得毫无问题。出问题的是次序颠倒:x^2' 被解释为 x^2^{\prime},编译停在 ! Double superscript.。这时请把意图写清楚,例如 {x^2}'x^{2\prime}。另外,正文里的 ' 是右单引号,不是撇号(prime)。

第三组是 \Re 与 R。\Re 排出的是哥特体 ℜ,与实数集 amssymbamsfonts\mathbb{R})完全是两个符号。「复数 z 的实部」写 \Re z\operatorname{Re} z;「z 是实数」写 z \in \mathbb{R}。这两者一旦混用,读者会连着好几行会错意。\Im\mathbb{I} 同理。

latex
% x'^2 is fine; x^2' raises ! Double superscript.
\[ f'(x), \quad f''(x), \quad x'^2, \quad {x^2}' \]
% real part vs the set of real numbers
\[ \Re z, \qquad \operatorname{Re} z, \qquad z \in \mathbb{R} \]
% dotless bases keep the accent clear
\[ \hat{\imath}, \quad \hat{\jmath}, \quad \ell = 2\pi r \]

若遇到本页未收录的符号,最终答案是 Scott Pakin 的 The Comprehensive LaTeX Symbol Listctan.org/pkg/comprehensive)。它把两万多个符号(TeX Live 2024 附带版为 20,323 个)连同产生它们的命令和宏包一并列出,「这个字形该怎么敲」的问题基本都能在这里了结。