使用 amsmath 的 alignat 环境,让对应项在连续的化简步骤中共享对齐列。本指南将展示如何在 Mac 上的 LaTeX 文档中构建这种布局,包括某一项消失的步骤。
选择推导所需的对齐方式
首先确定读者应当纵向追踪什么:等号、对应项的起始位置,还是各个运算符。这些是不同的布局选择。对于下面的示例,目标是在化简表达式时,让二次项、一次项和常数项分别保持在三个固定位置。
LaTeX 项目建议读者参考 amsmath 宏包用户指南,了解数学排版。该指南记录的环境提供以下选择。LaTeX 核心文档,amsmath 用户指南,第 3.3–3.7 节。
| 期望的布局 | 环境 | 使用位置 |
|---|---|---|
| 在等号处对齐简单的等式链 | align 或 align* |
直接放在文档正文中 |
| 使用明确间距对齐多个对应项组 | alignat 或 alignat* |
直接放在文档正文中 |
| 将按项对齐的推导放在一个公式编号下 | alignedat 放在 equation 内 |
放在外层数学环境内 |
| 在一个对齐位置拆分单个公式 | split 放在 equation 内 |
放在外层显示环境内 |
| 拆分长公式,但不对齐对应项 | multline |
直接放在文档正文中 |
对于本任务,从 alignat* 开始。它的成对列让你可以控制各组之间的间距。相比之下,align 会在不同公式组之间提供间距,这可能让逐项推导显得过于松散。星号会取消公式编号。amsmath 用户指南,第 3.6 节,学习 LaTeX:数学公式。
构建完整的按项对齐化简过程
下面这个合成示例先合并 x 的同次幂项,再简写它们的系数。所有字母都表示普通的可交换标量。定义 A=a+b、B=c+d 和 C=e+f;最后一行是在合并之后改变记号。
将此完整文档保存为 term-alignment.tex。所需宏包须在 \begin{document} 之前加载。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Let $A=a+b$, $B=c+d$, and $C=e+f$.
Then
\begin{alignat*}{3}
P(x)&=a x^2+b x^2 &&{}+c x+d x &&{}+e+f\\
&=(a+b)x^2 &&{}+(c+d)x &&{}+e+f\\
&=A x^2 &&{}+B x &&{}+C
\end{alignat*}
\end{document}
将布局理解为三个纵向组。第一组包含等号和二次项。第二组以一次项前的加号开头。第三组以常数项前的加号开头。合并系数会改变各组的宽度,但每行中选定的对齐位置仍然相同。
这是对文档所述列机制的应用,而不是自动识别相匹配的代数项。你需要将每个表达式分配到预定列中;对齐环境会排布这些列。该实现交替使用右对齐和左对齐字段。amsmath 宏包,第 17 节。
编辑前先理解与号
在 alignat* 中,参数 {3} 声明三对列。因此,字段完整的一行有六个字段和五个 & 分隔符。手册中的计数规则是:取某行中 & 的最大数量,加一后再除以二。amsmath 用户指南,第 3.6 节。
第一行的字段分配如下:
| 字段 | 内容 | 在本例中的用途 |
|---|---|---|
| 1 | P(x) |
右对齐的左侧表达式 |
| 2 | =a x^2+b x^2 |
左对齐的等号和二次项组 |
| 3 | 空 | 未使用的右对齐字段 |
| 4 | {}+c x+d x |
左对齐的一次项组 |
| 5 | 空 | 未使用的右对齐字段 |
| 6 | {}+e+f |
左对齐的常数项组 |
&& 序列会将字段 3 和 5 留空。在后续行中,开头的 & 会将字段 1 留空,让推导可以从另一个等号继续。\\ 命令用于结束一行。
{}+ 中的空组为在字段边界处留出二元加号的间距提供了左操作数;它不会输出任何字符。调整这些示例时,请保留这种写法。宏包的对齐前导部分也会在左对齐字段开头使用空组。amsmath 宏包,对齐前导部分。
普通源码中的空格能让代码更易读,但在数学模式中不会确定水平位置。对齐由字段结构决定。学习 LaTeX:数学公式。
在 Mac 上编译示例
编译前需要安装可用的 TeX 发行版。TeXShop 安装文档介绍了 MacTeX 和 BasicTeX 的安装,并指出 /Library/TeX/texbin 是共享位置,应用程序可通过它找到当前发行版的程序。TeXShop:安装 TeX Live。
若要直接编译,请将文件以纯文本格式保存到桌面,打开 Terminal,并按顺序运行以下两条命令:
cd "$HOME/Desktop"
/Library/TeX/texbin/pdflatex -interaction=nonstopmode -halt-on-error term-alignment.tex
打开生成的 term-alignment.pdf,检查这三个项组。此处假设你的桌面位于 $HOME/Desktop,且文件名与所示名称完全一致。如果编译中止,请先解决报告的错误,再检查 PDF;较早编译成功时生成的 PDF 可能仍然存在。
当某项消失时保留列位置
出现抵消时,固定布局尤其有用。假设一次项的系数为 c-c。你可能希望最终的常数仍然位于前面常数的正下方,同时一次项位置保持空白。
下面的完整文档始终保留相同的六字段结构。中间行明确显示零系数;最后一行移除了该项,但没有将常数移到它的位置。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Cancelling the linear coefficient gives
\begin{equation}
\begin{alignedat}{3}
Q(x)&=(a+b)x^2 &&{}+(c-c)x &&{}+d\\
&=(a+b)x^2 &&{}+0x &&{}+d\\
&=(a+b)x^2 && &&{}+d
\end{alignedat}
\end{equation}
\end{document}
在最后一行中,二次表达式后面的两个 && 序列都要保留。它们会保留中间的空字段。删除其中一个序列会将常数放入较前面的组中,从而改变纵向排列所表达的含义。
本例还演示了给整个推导添加一个编号的受支持方法:将 alignedat 放在 equation 内。内部环境占据其内容的自然宽度,并且需要一个外层数学环境。amsmath 用户指南,第 3.7 节。
在读者追踪抵消过程时,空位置很有用。若要在文档的其他位置单独呈现最终公式,请写紧凑表达式 (a+b)x^2+d。应根据当前显示内容的目的,决定是展示对应关系还是呈现最终结果。
排查间距和对齐问题
调整各处距离之前,先检查结构。以下步骤针对上面的两个布局示例。
- 确认已加载宏包。 在导言区保留
\usepackage{amsmath}。 - 检查外层环境。 在文档正文中直接使用
alignat*。在equation内或其他合适的数学环境中使用alignedat。 - 统计分隔符。 每个示例行都有五个
&字符,对应{3}。新插入的行也要符合此模式。 - 检查分组归属。 如果只有一个项横向移动,请将它的字段位置与前一行对比。
- 检查数学内容。 符号、系数或指数的变化属于代数变化,即使各列仍然对齐。
对齐分隔符过多可能导致宏包报错:Extra & on this line。错误地将 align 这样的显示环境嵌套在 equation 内,也会触发公式结构错误;为此应使用 alignedat 这样的内部构件。amsmath 宏包,第 17 节。
如果某一列似乎过宽,请检查其中最长的表达式。在第一个示例中,a x^2+b x^2 的宽度大于 A x^2。这额外的宽度有助于呈现预期的对应关系。尝试压缩之前,先确认三个组是否仍然都需要独立的对齐位置。
还要准确判断哪里看起来没有对齐。这些示例对齐的是各项组的起始位置,包括前导加号。它们不会在各组内部单独对齐每个系数、变量和指数。如果读者只需要追踪连续的等式,使用单一对齐锚点的简单布局可能更易读。
添加说明而不重建推导
如果某个变换需要用句子说明,mathtools 会提供 \shortintertext,可在保留对齐点的同时,在对齐行之间插入文字。它会加载 amsmath,因此需要将导言区改为 \usepackage{mathtools}。mathtools 宏包,第 2 节和第 3.5 节。
例如,完成上述宏包更改后,下面这个带标签的片段可替换第一个完整文档中的对齐代码块:
\begin{alignat*}{3}
P(x)&=a x^2+b x^2 &&{}+c x+d x &&{}+e+f\\
\shortintertext{Collect coefficients of matching powers of $x$.}
&=(a+b)x^2 &&{}+(c+d)x &&{}+e+f
\end{alignat*}
用这句话说明读者应注意的运算。此处,共享列已经显示每一组所在的位置;插入的文字则解释了形式为何发生变化。
处理自己的推导时,先画出预期的项组,将每组分配给固定字段,并在抵消过程中保留这些字段。每添加一个新变换后都进行编译。这样可以有意安排各项之间的对应关系,也让你日后返回编辑时仍能看懂源码。
来源
- LaTeX 文档 — LaTeX 项目。
- amsmath 宏包用户指南 — 美国数学学会和 LaTeX 项目。
- amsmath 宏包 — LaTeX 项目。
- 数学公式 — Learn LaTeX。
- 安装 TeX Live — TeXShop。
- mathtools 宏包 — Morten Høgholm、Lars Madsen 和 LaTeX3 项目。