等号诞生于 1557 年,加号和减号可以追溯到 15 世纪。而箭头——今天数学中最醒目的符号——直到 20 世纪才被普遍使用。它一旦出现,几乎立刻就成了主角:在范畴论中,对象之间的箭头比对象本身更重要。本页梳理 LaTeX 能排出的约四十种箭头,贯穿其中的只有一个想法——箭头的形状本身就在说明它的含义。多数时候,看一眼样子就知道该选哪一个。
箭头住在数学模式里
在 TeX 看来,箭头不是图形,而是一个关系符,而关系符两侧要留出固定的间距。这正是在正文里直接写 \to 会报错、而不只是难看的原因:在数学模式之外,那条间距规则根本不存在。要先进入数学模式,例如 $f\colon A \to B$。命名方式极其机械——方向(left、right、up、down)加上形状。把首字母大写就得到双线形式(\Rightarrow ⇒),加上 long 前缀就得到加长形式(\longrightarrow ⟶)。这些名字可以推导出来,不必死记。
% a map, and a chain of implications
\[
P \implies Q, \qquad x \to 0, \qquad a_n \to L \;(n \to \infty)
\]有两个别名,知道来历之后就再也不会忘。\to 是 \rightarrow 的别名,\gets 是 \leftarrow 的别名——但 \gets 这个名字来自计算机科学而非数学。x \gets 1 读作「x 取得(gets)1」,也就是赋值。写出 TeX 的高德纳同时是《计算机程序设计艺术》的作者,他把描述算法的词汇直接带进了排版系统。另一个是 \iff(⟺)。把「iff」用作「当且仅当」的缩写,是数学家 保罗·哈尔莫斯 推广开的;证明末尾那个空心方块 ∎ 也出自他手,至今仍被称作哈尔莫斯符号。实用上:映射与极限用短的 \to/\gets,等价命题用 \iff。
水平箭头:第二条线是做什么的
水平箭头分为单线族(\leftarrow、\rightarrow、\leftrightarrow)和双线族(\Leftarrow、\Rightarrow、\Leftrightarrow),各自都有加 long 的加长版本。单线与双线之别不是装饰。按照读者共享的惯例,单线 → 表示集合或对象之间的映射,双线 ⇒ 表示命题之间的蕴涵。因此当「f: A → B」与「P ⇒ Q」出现在同一页上时,仅凭线的条数就能让读者明白这是两个不同层次的陈述。加长形式长度固定,与本页末尾的可伸缩箭头不是一回事。
| 命令 | 字形 | 意义/用途 |
|---|---|---|
\leftarrow | ← | 向左箭头(与 \gets 相同) |
\gets | ← | \leftarrow 的别名;表示赋值 |
\rightarrow | → | 向右箭头(与 \to 相同);用于映射 |
\to | → | \rightarrow 的别名;f\colon A \to B |
\leftrightarrow | ↔ | 双向箭头 |
\longleftarrow | ⟵ | 向左长箭头 |
\longrightarrow | ⟶ | 长向右箭头 |
\longleftrightarrow | ⟷ | 加长的双向箭头 |
\Leftarrow | ⇐ | 双线向左箭头 |
\Rightarrow | ⇒ | 双线向右箭头;蕴涵 |
\Leftrightarrow | ⇔ | 双线双向箭头;等价 |
\Longleftarrow | ⟸ | 长双线向左箭头 |
\Longrightarrow | ⟹ | 长双线向右箭头 |
\Longleftrightarrow | ⟺ | 加长的双线双向箭头 |
\iff | ⟺ | 当且仅当;在 \Longleftrightarrow 前后加了空白 |
在偏叙述的逻辑文字中,amsmath 提供的 \implies(⟹)与 \impliedby(⟸)能让书写风格更统一。它们就是在 \Longrightarrow/\Longleftarrow 两侧加了额外间距,与 \iff 的留白一致。把推理写成「P \implies Q \iff R」,符号前后就有了呼吸感,多出的空白像标点一样起作用,再长的式子也能看出该在哪里停顿。相反,一连串紧凑的 \Rightarrow 容易让式子挤成一团。
当形状即定义:映射与带钩的箭头
从这里开始,箭头成了词汇。\mapsto(↦)尾部带一竖,表示的不是「从集合 A 到集合 B」,而是「这个元素映到那个元素」。把 x \mapsto x^2 与 f\colon \mathbb{R} \to \mathbb{R} 并列书写,就能在一行之内分清映射本身与元素之间的对应。这一记法通过数学家团体 布尔巴基 的著作传播开来。\hookrightarrow(↪)尾部的钩子有「勾住」的意象,惯例上标记包含映射——把子集原封不动地嵌入更大的集合。二者都属标准 LaTeX,无需宏包。
| 命令 | 字形 | 意义/用途 |
|---|---|---|
\mapsto | ↦ | 元素之间的对应;x \mapsto x^2 |
\longmapsto | ⟼ | 加长的元素对应箭头 |
\hookleftarrow | ↩ | 带钩的左箭头 |
\hookrightarrow | ↪ | 带钩的右箭头;包含映射(单射) |
\[
f\colon \mathbb{R} \to \mathbb{R}, \quad x \mapsto x^2,
\qquad \mathbb{Z} \hookrightarrow \mathbb{Q}
\]当你想直接声明单射或满射时,箭头的造型最为雄辩。在 amssymb 中,\rightarrowtail(↣)在尾部长出一条「尾巴」,\twoheadrightarrow(↠)则把箭头变成双层。尾巴读作「各归各的去处」,即单射;双层箭头读作「覆盖对面的全部」,即满射;两者兼备的 ⤖ 表示双射。也就是说,把箭头拆成尾、轴、头三个部件,含义便可以直接读出来。不过这类记号依赖上下文,论文中最稳妥的做法是首次出现时定义一次。另外别把 \mapsto 挪用来表示包含,也别把 \hookrightarrow 与 \rightarrowtail 弄混。
竖直与斜向:图表的骨架
竖直与斜向的箭头在交换图中最能发挥作用。这类图表在 1945 年被大量使用——正是 塞缪尔·艾伦伯格 与 桑德斯·麦克莱恩 创立范畴论的那篇论文——并由此确立了「以对象为顶点、以映射为边」的数学书写方式。竖直一族是单线的 \uparrow、\downarrow、\updownarrow 与双线的 \Uparrow、\Downarrow、\Updownarrow。四个斜向是 \nearrow(↗)、\searrow(↘)、\swarrow(↙)、\nwarrow(↖),名字就是东北、东南、西南、西北这几个方位。在分析学中,↗ 与 ↘ 还用来标记单调递增与单调递减的收敛。另外 \uparrow 等也可作为 \left … \right 的定界符使用。
| 命令 | 字形 | 意义/用途 |
|---|---|---|
\uparrow | ↑ | 向上箭头 |
\downarrow | ↓ | 向下箭头 |
\updownarrow | ↕ | 上下箭头 |
\Uparrow | ⇑ | 双线向上箭头 |
\Downarrow | ⇓ | 双线向下箭头 |
\Updownarrow | ⇕ | 双线上下箭头 |
\nearrow | ↗ | 东北箭头 |
\searrow | ↘ | 东南箭头 |
\swarrow | ↙ | 西南箭头 |
\nwarrow | ↖ | 西北箭头 |
鱼叉箭头与 amssymb:单侧倒钩说明了什么
鱼叉箭头(harpoon)是只在一侧带倒钩的箭头。把上钩与下钩组合起来的 \rightleftharpoons(⇌)是化学中表示可逆反应或平衡的通用符号。单侧带钩本身就是含义所在:上下两支箭表示正反应与逆反应是两个独立的过程,这与双侧带钩的 ⇄ 并不相同。若要正式排版化学式,mhchem 宏包可以让你写成 \ce{A <=> B},并顺带处理系数与状态符号。在物理中,鱼叉箭头也出现在角动量相关的记法里。
| 命令 | 字形 | 注释 |
|---|---|---|
\rightharpoonup | ⇀ | 向右、只有上侧带钩的鱼叉箭头(标准) |
\rightharpoondown | ⇁ | 向右、只有下侧带钩的鱼叉箭头(标准) |
\leftharpoonup | ↼ | 向左、只有上侧带钩的鱼叉箭头(标准) |
\leftharpoondown | ↽ | 向左、只有下侧带钩的鱼叉箭头(标准) |
\rightleftharpoons | ⇌ | 可逆反应箭头(标准) |
另一方面,双头、带尾、虚线之类的装饰性箭头并不在标准 LaTeX 之内,需要 \usepackage{amssymb}。该宏包属于美国数学会(AMS)编制的一套字体与宏,用来补足高德纳最初设计的数学字体中、一线数学家觉得不够用的符号。反过来说,下表中的每一个箭头之所以存在,都是因为有人在论文里需要它。
| 命令 | 字形 | 含义/用途 (amssymb) |
|---|---|---|
\twoheadrightarrow | ↠ | 双箭头的右箭头;满射 |
\twoheadleftarrow | ↞ | 双箭头的左箭头 |
\rightarrowtail | ↣ | 带尾的右箭头;单射 |
\leftarrowtail | ↢ | 带尾部的左箭头 |
\rightrightarrows | ⇉ | 两个并排的向右箭头 |
\leftleftarrows | ⇇ | 两个并排的向左箭头 |
\rightleftarrows | ⇄ | 向右与向左并排的一对箭头 |
\rightsquigarrow | ⇝ | 弯曲的右箭头 |
\leftrightsquigarrow | ↭ | 波浪形的左右箭头 |
\curvearrowright | ↷ | 顺时针弯曲箭头 |
\nrightarrow | ↛ | 否定(斜线)右箭头 |
\nRightarrow | ⇏ | 否定双线右箭头 |
承载文字并随之伸长的箭头
到目前为止的箭头长度都是固定的。amsmath 提供的 \xrightarrow{…} 与 \xleftarrow{…} 会让轴身随着上方文字的宽度伸长。当映射需要命名时——A \xrightarrow{\ f\ } B——或者要在正合列、交换图的边上写附加条件时,就用它们。用 \stackrel 把文字叠在定长的 \longrightarrow 之上是更早的写法,至今仍能用,但只要文字比箭头长就会溢出,所以如今直接用可伸缩箭头更自然。
\usepackage{amsmath} % \xrightarrow, \xleftarrow
% \usepackage{mathtools} % also \xLeftarrow, \xhookrightarrow, \xmapsto
\[
A \xrightarrow{\;f\;} B \xrightarrow{\;g\;} C,
\qquad x \xrightarrow[n\to\infty]{} L
\]再加上方括号里的可选参数,就能在箭头下方也放文字。写成 \xrightarrow[n \to \infty]{\ a_n\ },上方是映射的名字、下方是条件,关于极限或收敛的陈述便能收进一支箭头里。一旦要排整幅图表,tikz-cd 之类的专用宏包最终更省事,因此实用的分工是:行内只需一支箭头时用 \xrightarrow,要绘制图表本身时用 tikz-cd。
总结起来,判断大致分三步。用作映射或关系时,标准 LaTeX 就够了(\to、\mapsto、\hookrightarrow、\Rightarrow)。当形状本身要承载含义——单射、满射、平衡——就取用 amssymb。当箭头要承载文字并随之伸长,就用 amsmath 的 \xrightarrow 一族。而一旦要绘制图表本身,就转向 tikz-cd。选择箭头,同时也是在无声地告诉读者:现在讨论的是哪一个层次。