要在单个 LaTeX 项下方放置短箭头和说明文字,可将 \underset 与 amsmath 中的双行 \substack 结合使用。本指南提供适用于 Mac 桌面工作流的完整文档,以及针对表达式拥挤情况的间距调整方法。
使用 amsmath 构建标注
基本布局分为三个层次:代数项、其下方的向上箭头,以及箭头下方的简短标签。箭头指向它所解释的项。amsmath 指南介绍了用于在基项下方放置内容的 \underset,以及用于堆叠多行内容的 \substack。将它们结合起来即可生成此处使用的标注。amsmath 宏包用户指南
如果你的 Mac 上没有可用的 LaTeX 安装,LaTeX 项目推荐使用 MacTeX,它包含 TeX 系统和文档编辑器。如果你已经能成功编译 LaTeX 文档,就使用现有安装。获取 LaTeX
在 LaTeX 编辑器中将以下完整文档保存为 annotations.tex。使用 pdfLaTeX 编译,并检查生成的 PDF。所有标签和表达式均为示例。
\documentclass{article}
\usepackage{amsmath}
% First argument: mathematical term.
% Second argument: short text label.
\newcommand{\termnote}[2]{%
\underset{\substack{\uparrow\\\text{#2}}}{#1}%
}
\begin{document}
\[
F(x)=
\termnote{ax^2}{quadratic}
+\termnote{bx}{linear}
+\termnote{c}{constant}.
\]
\end{document}
此示例分别为 ax^2、bx 和 c 添加标注。加号留在命令参数之外,从而明确了每条说明的作用范围。若要标注整个分组表达式,则将该分组作为第一个参数传入。
名称 \termnote 是本文档中定义的自定义命令,并非宏包内置命令。它的定义组合了文档所述的组件。\text 命令可在数学模式中提供普通文本,并会根据周围的数学样式调整字号。amstext 宏包
理解参数顺序
将 \termnote{bx}{linear} 理解为“用标签 linear 标注项 bx”。在定义中,\underset 先接收下方内容,再接收基项。\\ 用于分隔箭头行和标签行。
如果只需临时使用一次标注,下面的数学模式片段与该命令调用等效。将它放在上方完整文档的显示公式定界符内:
\underset{\substack{\uparrow\\\text{linear}}}{bx}
在整篇文档中保持箭头方向一致。向上的箭头表示说明针对其上方的项。如果你想表达从公式指向下方说明的含义,请在命令定义中将 \uparrow 替换为 \downarrow。
选择适合说明内容的布局
添加宏包之前,先确定箭头需要连接什么。标识单个项的标注、沿表达式延伸的箭头,以及解释公式行之间转换的箭头,需要使用不同的构造方式。
| 预期效果 | 适用构造 | 放置位置 |
|---|---|---|
| 单个项下方的短竖箭头和文字 | \underset、\substack 和 \text 的自定义组合 |
数学表达式内部 |
| 表达式下方的水平箭头 | amsmath 中的 \underrightarrow、\underleftarrow 或 \underleftrightarrow |
围绕需要添加箭头的表达式 |
| 箭杆上方或下方带文字的水平箭头 | amsmath 中的 \xrightarrow 或 \xleftarrow |
数学对象之间 |
| 连续公式行旁边的说明箭头 | witharrows 中的 WithArrows 或 DispWithArrows |
该宏包的公式对齐环境中 |
amsmath 指南区分了下置箭头和可伸缩箭头:前者用于装饰表达式,后者则可容纳附在箭头上的标签。这两种箭头都不会自动生成第一个示例中的三层竖向标注。amsmath 宏包用户指南
witharrows 宏包将 WithArrows 说明为一种类似 aligned 的对齐组件,将 DispWithArrows 说明为一种类似 align 的显示环境。它的主要布局是在公式行右侧放置说明箭头。若要直接在单个项下方放标签,请使用第一个示例;若要说明各行之间的步骤,则选择 witharrows。plain-TeX 和 LaTeX 的 witharrows 宏包
控制标签宽度,避免相互重叠
先从第一个文档开始,并检查间距,然后再进行更改。constant 这样的标签可能远宽于它所标注的项 c。多出的宽度会让短表达式显得松散,但也为说明留出了空间。
如果需要保持项间距紧凑,mathtools 提供了 \mathclap。它会将内容居中放入一个报告宽度为零的盒子中。该宏包会加载 amsmath,因此修改后的文档只需添加 \usepackage{mathtools}。mathtools 宏包,第 2 节和第 3.1.1 节
下面是第二个完整文档,可供比较。它只隐藏标签的宽度;箭头仍计入标注的测量宽度。
\documentclass{article}
\usepackage{mathtools}
\newcommand{\compacttermnote}[2]{%
\underset{%
\substack{\uparrow\\\mathclap{\text{#2}}}%
}{#1}%
}
\begin{document}
\[
F(x)=
\compacttermnote{ax^2}{quadratic}
\quad+\quad
\compacttermnote{bx}{linear}
\quad+\quad
\compacttermnote{c}{constant}.
\]
\end{document}
报告宽度为零并不意味着文字不可见。标签仍会从中心向两侧延伸。因此,即使代数表达式在行内排得很宽松,邻近标签仍可能重叠。此示例布局中明确设置的 \quad 间距为标签留出了更多空间;请根据自己的表达式查看效果后进行调整。
按以下顺序处理:先缩短标签,再比较普通版和紧凑版,然后在需要处增加明确的间距。如果说明仍需要一个完整句子,就把它移到周围的正文中,并在项下方保留简短标识。这样在正常阅读字号下,标注仍然实用。
将带标注的表达式放入正确的环境
对于一个无编号的表达式,请像上文那样使用 \[ ... \]。对于多行对齐的公式,请直接在文档正文中使用 align*。而 aligned 环境应放在外层数学环境内部。这些边界在 amsmath 指南中有说明。amsmath 宏包用户指南,第 3 节
以下是第一个文档的替换用显示公式片段。它使用已有的 \termnote 定义;请替换整个原显示公式,包括开头和结尾的定界符。
\begin{align*}
F(x) &= ax^2+bx+c \\
&= \termnote{ax^2}{quadratic}
+\termnote{bx}{linear}
+\termnote{c}{constant}.
\end{align*}
结合后面的段落或公式检查带标注的公式行。标签会在数学基线下方增加高度,因此单独看起来平衡的布局,放进较长的推导中可能会显得拥挤。如果需要解释多个项,优先将这些标注放在显示公式中。
排查常见问题
- 自定义命令未定义: 在
\begin{document}之前加入\newcommand定义。 - 宏包命令未定义: 检查是否已加载相应宏包。紧凑示例需要
mathtools来使用\mathclap。 - 标注作用到了错误的内容: 检查第一个参数周围的花括号。使用
\termnote{ax^2}{quadratic}将系数和指数一起纳入。 - 标签相互重叠: 改回普通宽度版本,缩短文字,或增大带标注项之间的间距。
- 对齐时出现嵌套错误: 使用上文所示的完整环境布局,不要将
align*放入另一个显示公式环境中。
对于这些普通代数项,该命令会将项作为基项,并在其下方添加说明。amsmath 的实现还会在基项具有二元运算符或关系符的分类时保留该分类,但标注运算符会带来额外的间距问题。请先从标注项本身开始。amsmath 宏包,第 12 节
这些示例依据文档中介绍的命令进行了核对,但未在研究环境中编译。将命令集成到较大的文稿之前,请先在 Mac 上的 LaTeX 安装中编译完整文档。
请以普通宽度版本作为起点。当每个箭头都清楚地指向对应项,且每个标签都清晰可读后,只在周围表达式有足够空间容纳可见文字时使用紧凑版本。
来源
- 获取 LaTeX — LaTeX 项目。
- amsmath 宏包用户指南 — 美国数学学会和 LaTeX 项目。
- amstext 宏包 — LaTeX 项目,经由 CTAN 发布。
- mathtools 宏包 — Morten Høgholm、Lars Madsen 和 LaTeX3 项目,经由 CTAN 发布。
- plain-TeX 和 LaTeX 的 witharrows 宏包 — F. Pantigny,经由 CTAN 发布。
- amsmath 宏包 — LaTeX 项目,经由 CTAN 发布。