在决定公式外观的细节中,最常用的两项是 上下标(上标和下标) 与 间距。上下标只用 ^ 和 _ 两个字符就能写出,但是否加波括号会改变结果。间距则是对 TeX 自动插入的空白进行微调的机制,例如使用 \,。本页只围绕可确认的事实,说明两者的规则以及当时为什么要这样做。
上标和下标
在数学模式中,^ 生成 上标(superscript),_ 生成 下标(subscript)。例如 x^2 会在 x 的右上方放一个小的 2,a_n 会在 a 的右下方放 n。这两个字符在普通正文中没有这种特殊含义,因此上下标一定要写在 $ ... $、\[ ... \] 等数学模式内部。
有一条重要规则需要记住:^ 和 _ 只会把 紧随其后的“一个记号” 作为上下标。记号可以是一个字符,也可以是一条命令。因此如果想把两个以上字符一起升高或降低,必须 用波括号 { } 把它们括成一个整体。
$x^{10}$ % 10 全体が上付き:x の右肩に「10」
$x^10$ % 1 だけが上付き、0 は本行の大きさ:x¹0
$a_{ij}$ % ij をまとめて下付き
$2^{n+1}$ % n+1 全体が指数也就是说,x^{10} 会把整个“10”作为指数;而省略波括号的 x^10 只会 把“1”作为上标,“0”仍以普通大小留在基线上(看起来像 x¹0)。这不是语法错误,编译会静默通过,反而很容易漏掉。只要指数或下标不止一个字符,就养成毫不犹豫加波括号的习惯会更安全。
一个符号也可以 同时带上标和下标。无论写成 x_i^2 还是 x^2_i,LaTeX 都会不受顺序影响地正确叠放它们。上下标还可以 嵌套(多层),但每一层仍然需要波括号:x^{y^z} 表示 z 是 y 的指数,而整个 y^z 是 x 的指数。省略波括号写成 x^y^z 会触发 “Double superscript” 错误 并停止排版。像 x_{i_0} 这样的嵌套下标也是同理。
如果想把上下标放在符号 前面,例如同位素记号的左上、左下位置,可以用 空波括号 {} 作为基座。写成 {}_{Z}^{A}X 时,开头的 {} 会作为“空元素”供上下标附着,从而把 A 和 Z 放到 X 的左上和左下。
微分中的 撇号 ′ 可以直接用撇号字符 ' 来写。f'(x) 会在 f 的右上方放一个撇号,f''(x) 会放两个。它在内部是 ^{\prime} 的简写,所以写 f^{\prime} 结果相同。撇号会自动成为上标,因此不需要自己加 ^,不要写 f^'。
\limits 与 \nolimits — 大型运算符的上下标位置
对于求和 \sum、积分 \int、极限 \lim、连乘 \prod 这样的 大型运算符,用 ^ 和 _ 加上的上下标会面临一个选择:放在 符号的上下方,还是放在 右侧。例如,求和符号上下的上下标表示“上端和下端的值”,因此这种位置称为 limits(极限/范围) 位置。
默认位置由 数学样式 决定。在陈列样式中,\sum_{i=1}^{n} 的上下标会居中放在符号 正上方和正下方。而在正文中(行内/文本样式)的 $\sum_{i=1}^{n}$ 中,同样的上下标会 缩小并移到右侧,以免撑开周围行距。包括 \lim 在内的许多运算符都有相同行为。
只有 \int 是例外:它的定义中 内置了 \nolimits,所以即使在陈列样式中,上下标也会放在 右侧(积分号上下堆叠极限会显得纵向过长)。下面两个命令可以覆盖默认值。\limits 强制把前一个运算符的上下标放在 上下方,\nolimits 则强制放在 右侧。
\[ \sum_{i=1}^{n} i % display:i=1 が下、n が上に中央配置\]
\[ \int_{0}^{1} f(x)\,dx % \int は既定で 0,1 を右側に\]
\[ \int\limits_{0}^{1} f(x)\,dx % 0,1 を上下に置く\]
$\displaystyle\sum_{i=1}^{n} i$ % 本文中でも上下配置を強制也可以切换样式本身。如果想在正文中把求和上下标放在上下方,写 $\displaystyle\sum_{i=1}^{n}$;反过来,如果想在陈列公式中把它们推到右侧,就加上 \textstyle。区别在于:\limits / \nolimits 只针对 那个运算符,而 \displaystyle / \textstyle 会改变 后续整个数学内容的样式。
数学中的间距与 mu
在数学模式中,TeX 会根据各个符号的种类(运算符、关系符等)自动 插入间距。例如 a+b 中 + 左右的空白,或 a=b 中 = 左右的空白,并不是书写者手动指定的。不过自动间距有时不够或过多,这时就用 间距命令 手动调整。
这些宽度用 mu(math unit,数学单位) 定义。1 mu 是 1/18 em,其中 em 来自当前数学符号字体的大小(大致相当于大写 M 的宽度)。因此 1 em = 18 mu。由于这是随字体大小变化的相对单位,放大文字时空白也会按同样比例变宽。代表性命令及其宽度如下。
| 命令 | 宽度 | 使用场景 |
|---|---|---|
\, | 3 mu(细空格,= 1/6 em) | 最常用的微调:放在 dx 前、分隔 \sqrt{2}\,x 等 |
\: | 4 mu(中等空格) | 想稍微拉开时(与 \medspace 相同) |
\; | 5 mu(粗空格) | 较宽的分隔(与 \thickspace 相同) |
\! | −3 mu(负细空格) | 收紧间距;正好是 \, 的反向 |
\quad | 18 mu(= 1 em) | 较大的空隙,例如公式与附加条件、分情况条件之间 |
\qquad | 36 mu(= 2 em) | \quad 的两倍;更大的空隙 |
最常用的是细空格 \,。典型例子是积分中 被积函数与 dx 之间 的间隔:写成 \int f(x)\,dx 时,f(x) 与 dx 会略微分开,更容易阅读(省略 \, 时,f(x)dx 看起来会粘在一起)。\quad 和 \qquad 适合较大的空白,例如把公式与其附加条件分开(如“公式 (当 n ≥ 1 时)”)。
反向的 \! 是用于 收紧 间距的负空白。例如在二重积分中写 \int\!\!\int,可以让两个积分号靠得更近。另一个命令是反斜杠后跟一个空格的 \ (控制空格),它即使在数学中也会插入 与正文词间空格相同宽度 的空白。
\! 实际上是 \negthinspace 的别名,也就是 \, 的负版本。加载 amsmath 包 后,还可以使用 \:(4 mu)和 \;(5 mu)的负版本 \negmedspace(−4 mu)与 \negthickspace(−5 mu),这样负方向也形成了 3/4/5 mu 的对称。
\phantom 与 \mathstrut — 用不可见盒子对齐高度和宽度
排版中经常需要“只保留位置,但不显示内容”的调整。\phantom 系列就是为此准备的。\phantom{...} 会创建一个不可见的空盒子,其 高度、深度和宽度 与正常排版参数时相同。不会打印任何字符,但对应空间会完整保留下来。
也有只取某一个方向尺寸的版本。\hphantom{...} 只保留 宽度,高度和深度为零。\vphantom{...} 则相反,只保留 高度和深度,宽度为零。因此 \vphantom 适用于“想确保竖直高度,但不想占用横向空间”的情况。
作为具体例子,考虑上下标嵌套导致高度不一致的情况。把下面两项并排放置时,右侧有 3^{3^{3^j}} 这样的高指数塔,TeX 会为了腾出空间而把该求和的主体往下放。这样左右两个 \sum 的垂直位置就会错开。在左侧项中放入 \vphantom{3^{3^{3^j}}},就能在 不可见的情况下保留与右侧相同的高度,从而让两个求和符号对齐。
\[
\sum_{j \in \{0,\ldots,10\} \vphantom{3^{3^{3^j}}}}
\sum_{i \in \{0,\ldots,3^{3^{3^j}}\}} i \cdot j
\]用途相近的 \mathstrut(数学支柱)是定义为 \vphantom( 的 专用不可见支柱(strut)。也就是说,它具有 与左圆括号 ( 相同的高度和深度,宽度为零。它不接受参数,只要放在那里,就会在该位置保留一个括号字符大小的竖直空间。像 \sqrt{a} 和 \sqrt{a^2} 这样把高度不同的元素并排时,在每个参数开头放入 \mathstrut,可以让根号高度一致,使整列看起来更整齐。
$\sqrt{\mathstrut a}\;\sqrt{\mathstrut a^2}\;\sqrt{\mathstrut b}$
% 各 \sqrt の中身が同じ高さになり、根号の天井がそろう概括来说,基本用法是:想对齐宽度用 \hphantom,想对齐高度用 \vphantom 或 \mathstrut,两者都要则用 \phantom。它们都基于同一个思路:用不可见盒子只操控尺寸。