在数学中,我们会把各种东西叠在符号的上方或下方:跨过整个表达式的横线和花括号、会随覆盖内容宽度伸缩的帽子和箭头,以及只保持单个字母大小的小重音。它们看起来相近,但标记是否会*伸展*决定了该用哪一个。本页把它们分成三组:(1)放在表达式上下的线和花括号,(2)会按宽度伸展的可伸缩重音,(3)针对一个符号的固定宽度重音,随后介绍 amsmath 的 \overset / \underset 如何把任意符号放到另一个符号的上方或下方。
跨过表达式的线和花括号
先看会在参数整体范围内画横线或花括号的命令。\overline{…} 在参数上方画线,\underline{…} 在下方画线;二者都是标准 LaTeX 命令,线会按内容宽度伸展。\overline 常用于表示补集或复共轭,\underline 的下线会避开向下伸出的字母(descender,例如 y 或 g)。
\[
\overline{a + b} = \overline{a} + \overline{b}, \qquad
\underline{x + y}
\]在这个例子中,左边会在整个 a+b 上方画一条横线,右边则在每个字母上方放一条短线(如下文所述,对单个字母有时 \bar 比 \overline 更自然)。\underline{x+y} 会在 x+y 下方画线,并避开 y 的下伸部分。横线和下线是少数可以干净嵌套的装饰,因此 \overline{\overline{z}} 这样的双线也能正常排出。
花括号使用 \overbrace{…} 和 \underbrace{…}。它们同样属于标准 LaTeX,横向花括号会伸展到内容的完整宽度。方便之处在于可以附加标签:花括号像表达式上的上标或下标一样工作,因此用上标 ^ 可以把标签放在上方花括号外侧,如 \overbrace{…}^{label};用下标 _ 可以把标签放在下方花括号外侧,如 \underbrace{…}_{label}。
\[
\underbrace{1 + 2 + \cdots + n}_{n \text{ 個の項}}
= \frac{n(n+1)}{2}
\]这会在 1 + 2 + … + n 下方伸展出全宽花括号,并在其下方居中放置“n 个项”的标签。同样,\overbrace{x + x + \cdots + x}^{k} 会在和式上方放置花括号,并把项数 k 放在其上方。标签中含有中文、日文或普通词语时,由于仍在数学模式中,最好用 amsmath 的 \text{…} 包住。
按宽度伸展的重音
接下来是会按参数宽度伸展的重音。代表是 \widehat{…}(宽帽)和 \widetilde{…}(宽波浪)。\hat{x} 只是在一个字母上方的小尖帽,而 \widehat{xyz} 会把尖帽横向展开,覆盖整个 xyz;\widetilde 也是同样,在整个表达式上方放一条大的波浪线。二者都属于标准 LaTeX。
不过,伸展也有极限。\widehat 和 \widetilde 会从预先准备好的几个尺寸中选择最接近的一种,因此覆盖很长表达式时,帽子可能不够宽,看起来有些别扭。这种情况下可以考虑 \overline,或下文介绍的 \overrightarrow 这类线/箭头形式。
也有把箭头放在参数上方的命令。\overrightarrow{…} 在参数上方画向右箭头,\overleftarrow{…} 画向左箭头,二者都会按宽度伸展(标准 LaTeX)。双向箭头 \overleftrightarrow{…},以及把箭头放在下方的 \underrightarrow / \underleftarrow / \underleftrightarrow 需要 amsmath 包。在向量记号中,这类可伸展箭头适合表示 AB 上方的有向线段等。
这里容易混淆的是 \vec。\vec{a} 是只适合一个符号的小型固定箭头,不会按宽度伸展。因此写 \vec{AB} 时,小箭头实际上只落在 B 附近,而不是覆盖 A 和 B 整体,看起来不像线段向量。若要让从 A 到 B 的箭头跨过整个表达式,应使用 \overrightarrow{AB}。
\[
\widehat{x + y} \neq \hat{x} + \hat{y}, \qquad
\vec{a} \quad \text{vs.} \quad \overrightarrow{AB}
\]在这个例子中,左侧的 \widehat{x+y} 在整个 x+y 上方放置宽帽,而 \hat{x} 只在单个字母 x 上方放小帽。右侧把 \vec{a} 的小型固定箭头和覆盖 AB 全宽的 \overrightarrow{AB} 箭头并排放置,用来展示差别。
单个符号用的固定宽度重音
第三组是主要放在单个字母上方的固定宽度重音:表示导数的 \dot、二阶导数的 \ddot、平均或共轭的 \bar、估计量的 \hat、近似的 \tilde 等,都是理工科中频繁出现的符号。它们都属于标准 LaTeX;即使加在多个字母上也不会伸展,而是以单个符号的大小居中放置。
| 命令 | 放置的标记 | 会伸缩吗 |
|---|---|---|
\hat | 尖帽(抑扬符) | 固定宽度;宽版是 \widehat |
\tilde | 波浪线(tilde) | 固定宽度;宽版是 \widetilde |
\bar | 短横线(长音符) | 固定宽度;整式使用 \overline |
\vec | 小型右箭头 | 固定宽度;宽箭头是 \overrightarrow |
\dot | 一个点 | 固定宽度 |
\ddot | 两个点(分音符状) | 固定宽度;\dddot/\ddddot 需要 amsmath |
\acute | 锐音符(向右上) | 固定宽度 |
\grave | 重音符(向右下) | 固定宽度 |
\check | 反抑扬符(háček,v 形) | 固定宽度 |
\breve | 短音符(˘) | 固定宽度 |
\mathring | 小圆圈(ring) | 固定宽度 |
\[
\dot{x}, \quad \ddot{x}, \quad \bar{x}, \quad \hat{p},
\quad \tilde{a}, \quad \vec{v}, \quad \check{s}
\]这些分别会在 x 上方放一个点、两个点,在 x 上方放短横线,在 p 上方放小尖帽,在 a 上方放波浪,在 v 上方放小型右箭头,在 s 上方放 v 形检查符。注意,给 i 或 j 加重音会和它们原本的点重叠,显得难看,因此传统上使用无点的 \imath / \jmath。例如写 \hat{\imath},就只会在无点 i 上方放一个尖帽。
把任意符号放在上方或下方(\overset / \underset)
前面介绍的命令都是线、括号、重音这类固定装饰。如果想把任意符号或表达式以较小尺寸放到另一个符号的上方或下方,使用 amsmath 包的 \overset{above}{base} 和 \underset{below}{base}。\overset{a}{b} 会把小的 a 放在 b 上方,\underset{a}{b} 会把小的 a 放在 b 下方。第二个参数是底座,第一个参数是添加的内容。第一个参数以 scriptstyle 排版,也就是 LaTeX 用于上标和下标的字号,因此无需额外处理就会自然变小。
\[
A \overset{f}{\longrightarrow} B, \qquad
X \underset{n \to \infty}{\longrightarrow} x, \qquad
\overset{!}{=}
\]在这个例子中,\overset{f}{\longrightarrow} 把映射名 f 小小地放在箭头上方,\underset{n\to\infty}{\longrightarrow} 把极限条件添在箭头下方。\overset{!}{=} 是在等号上放感叹号、表示“按要求相等”的记法。与上一节的固定重音不同,这些命令的优点在于可以自由选择上下放置的内容。
如果上下都要添加内容,可以嵌套写成 \overset{a}{\underset{b}{X}}。注意它与上下标的区别:^ 和 _ 会放在符号的右侧,而 \overset / \underset 会把内容放在正上方和正下方。像求和号和 \lim 这样本来就把范围放在上下的算子有自己的机制,另见单独页面。
如何选择与常见陷阱
最后整理几个容易出错的点。第一是 \bar 和 \overline 的区别。\bar{x} 是一个字母大小的固定宽度重音,而 \overline{x} 是会按内容宽度伸展的横线规则。LaTeX2e 参考手册也明确指出“\overline 不同于重音命令 \bar”。单个符号的平均值用 \bar{x},跨多个项的横线用 \overline{x+y}。
第二是混淆 \hat(固定)和 \widehat(可伸缩)。像估计量 \hat{\beta} 这样只作用于一个符号时用 \hat;像 \widehat{f(x)} 这样覆盖整个表达式时用 \widehat。\tilde / \widetilde、\vec / \overrightarrow 也遵循同样的“固定 ↔ 可伸缩”对应。
第三,双重重音通常无法漂亮堆叠。像 \hat{\vec{x}} 这样叠两个重音时,上面的标记往往会漂得太高、显得松散,或位置不自然(能比较自然嵌套的基本只有 \overline 和 \underline)。如果只是想增加点数,使用 \ddot 或 amsmath 的 \dddot / \ddddot;真正复杂的叠放,最好用 \overset 明确构造,或依赖专用包。
- 单个字母上的小标记 → 固定重音(
\hat、\bar、\dot、\vec等)。 - 覆盖整个表达式 → 可伸缩形式(
\widehat、\widetilde、\overline、\overrightarrow)。 - 用花括号标示范围 →
\overbrace{…}^{…}/\underbrace{…}_{…}。 - 任意符号放在上方或下方 → amsmath 的
\overset{…}{…}/\underset{…}{…}。 - 给 i 或 j 加重音 → 使用无点的
\imath/\jmath作为底座。