要在一个 LaTeX 方程中于对齐步骤之间插入分段表达式,请将 cases 放在 aligned 的一行中,然后用 equation 包住整个结构。这样可以对齐等号,并让完整推导共用一个方程编号。

本指南适用于在 Mac 上编辑 .tex 文档,并希望在分段表达式的上方和下方放置普通代数步骤的读者。主要示例只使用 amsmath;其他方案说明了何时适合使用 mathtools 或彼此独立居中的块。

如何让步骤和分段表达式保持在同一个对齐方程中?

使用三层嵌套结构:equation 包含整个显示公式,aligned 排列推导步骤,而 cases 在其中一行提供带大括号的表达式。官方指南将 aligned 描述为可置于包含表达式中的构造块,并要求 aligned 和 cases 都出现在数学模式中。请参阅 amsmath 宏包用户指南第 3.7 节。

下面是一个完整文档。设 n 为整数,a 为标量。无论 n 是偶数还是奇数,该表达式的值都是 a;分段表达式让这一步推理清晰可见。

\documentclass{article}
\usepackage{amsmath}

\begin{document}
Let \(n\) be an integer and \(a\) be a scalar.
\begin{equation}
\label{eq:cases-chain}
\begin{aligned}
S(n) &= a\bigl[(-1)^n+1-(-1)^n\bigr] \\
     &= a(-1)^n+a\bigl(1-(-1)^n\bigr) \\
     &= \begin{cases}
          a+0,   & \text{if } n \text{ is even}, \\
          -a+2a, & \text{if } n \text{ is odd}
        \end{cases} \\
     &= a.
\end{aligned}
\end{equation}
The result is recorded in \eqref{eq:cases-chain}.
\end{document}

将示例看作四个外层行。前两行展开表达式,第三行按奇偶性计算,第四行给出共同结果。两个分支都化简为 a,因此最后的等式适用于每个整数 n。此处的代数仅作示范;请替换为你自己推导中的表达式和条件。

各环境中的和号与换行符分别起什么作用?

外层的 &= 标记每个等号前的对齐点。在 cases 内,和号用于分隔分支表达式与条件。这两层各有用途:分段表达式占据一个外层行的一部分,即使它本身包含多个分支行也是如此。该宏包将 cases 实现为一个带左大括号的两列表格,如 amsmath 宏包文档所示。

本示例中关键的衔接是 \end{cases} \\。关闭 cases 会结束分段表达式;紧接着的 \\ 会结束外围 aligned 行。随后,新的 &= a 就能从前面等号的下方开始。cases 内的换行只会移到另一个分支。

改写示例时,先保持这个结构不变。每次只更改一个分支表达式或条件,然后检查结果。这样更容易判断意外的排版是由外围推导还是分段表达式本身造成的。

如何在 Mac 上使用此示例?

你需要可正常使用的 LaTeX 发行版和源代码编辑器。如果你已经在使用 TeXShop,它提供编辑器和 PDF 预览,并使用 TeX Live 进行排版。根据开发者的 关于 TeXShop 页面,其默认 PDF 工作流程使用 pdftex 和 pdflatex。

  1. 新建源文件并粘贴完整示例。
  2. 将文件保存为 cases-between-steps.tex。
  3. 使用 LaTeX 排版引擎,例如 pdflatex。
  4. 在 TeXShop 的 Typeset 菜单中选择 Typeset。根据 TeXShop 更新记录的说明,该命令会排版当前文档。
  5. 如果方程引用尚未解析,请再次排版,然后检查 PDF。

在预览中检查三个方面:外层等号是否排成同一竖列,大括号是否只覆盖两个分支,以及推导是否只有一个方程编号。还要检查两个条件和最后一行,确认修改后数学内容仍然正确。

这些示例已对照文档检查,但由于此处没有 LaTeX 引擎,因此未进行编译。请先尝试这个小型独立文档,再将其整合到较大的项目中。

应该选择哪些环境和宏包?

根据步骤之间的关系选择外层结构。对于连续的等式链,使用一个共同的对齐环境。如果只是需要将几组内容放在分段表达式的上方和下方,请使用下一节中彼此独立居中的方案。

预期结果 结构 宏包
等号对齐且共用一个编号 equation 包含 aligned,并嵌套 cases amsmath
各组独立居中且共用一个编号 equation 包含 gathered,并嵌套各个块 amsmath
在 cases 各行中使用较大的分数 将 cases 替换为 dcases mathtools
条件自动使用文本格式 使用 cases* 或 dcases* mathtools

这些紧凑构造块见 amsmath 用户指南;其他 cases 变体见 mathtools 宏包第 3.4.3 节。

什么时候应该用 dcases 替换 cases?

普通的 cases 使用文本样式的数学格式。mathtools 环境 dcases 使用显示样式,适用于需要更大空间的分数。加载 mathtools 也会加载 amsmath。带星号的变体 dcases* 会将第二列设为文本格式;请在其中用行内数学定界符括住数学条件。这些行为见 mathtools 宏包的说明。

下面这个完整的替代示例使用分数。对于整数 n,第一行的分母只能是三或一,因此两个分支都有定义。

\documentclass{article}
\usepackage{mathtools}

\begin{document}
Let \(n\) be an integer and \(a\) be a scalar.
\begin{equation}
\begin{aligned}
T(n) &= \frac{2a}{2+(-1)^n} \\
     &= \begin{dcases}
          \frac{2a}{3}, & \text{if } n \text{ is even}, \\
          2a,          & \text{if } n \text{ is odd}
        \end{dcases} \\
     &= \frac{a}{1+\frac{1}{2}(-1)^n}.
\end{aligned}
\end{equation}
\end{document}

这里,更改分支样式不会影响外层排版。分支内容较紧凑时选择 cases;分数需要显示样式时选择 dcases。对于 cases 或 dcases,请将文字放在 \text{...} 内;对于带星号的变体,可直接在第二列写文字。

如果只需要将这些块上下堆叠,怎么办?

当上方和下方的内容需要各自局部对齐时,使用 gathered。这是对指南中所述紧凑构造块的一种应用:每个 aligned 组都会成为包含它们的 gathered 结构中的一行。请参阅 amsmath 对齐构造块。

\documentclass{article}
\usepackage{amsmath}

\begin{document}
Let \(n\) be an integer and \(a,b\) be scalars.
\begin{equation}
\begin{gathered}
  \begin{aligned}
    S(n) &= a\bigl[(-1)^n+1-(-1)^n\bigr] \\
         &= a(-1)^n+a\bigl(1-(-1)^n\bigr)
  \end{aligned} \\
  S(n)=\begin{cases}
         a+0,   & \text{if } n \text{ is even}, \\
         -a+2a, & \text{if } n \text{ is odd}
       \end{cases} \\
  \begin{aligned}
    S(n)   &= a, \\
    S(n)+b &= a+b.
  \end{aligned}
\end{gathered}
\end{equation}
\end{document}

这种排法刻意让顶部组、中间表达式和底部组分别进行水平定位。不同组中的等号不必彼此对齐。重复使用 S(n) 可以明确显示它们之间的联系,而最后一行则给出该结果的推论。

如果需要让等号连续排成一列,请回到第一个示例。仅仅因为几个独立的 aligned 组出现在同一个方程中,它们并不能共用对齐点。

如何诊断常见的排版问题?

从外向内逐层检查。先找出带编号的显示公式,再找出负责生成其各行的结构,最后检查 cases 块。在调整间距之前,按以下顺序诊断:

  • **下方步骤出现在分段表达式旁边:**检查 \end{cases} 后面是否紧接着外层 \\。
  • **看似后续的内容出现在大括号下方:**检查该后续内容之前是否出现了 \end{cases}。
  • **上方和下方的等号不一致:**检查它们是否属于不同的 aligned 组。要共用对齐点,请使用一个外层 aligned。
  • **文档报告嵌套错误:**检查 equation 内是否有 align。在该位置使用从属环境 aligned。
  • **分数看起来太小:**考虑使用 dcases,并加载 mathtools。

宏包对错误嵌套方程结构的恢复机制会替换为 aligned,这支持了上述嵌套诊断;请参阅 amsmath 宏包文档。分数替代方案依据 mathtools 的 cases 文档。

若想在分段表达式后增加少量间距,可将其外层行末尾替换为 \end{cases} \\[4pt]。此处的间距值只是一个示范性的起点。另外,数学环境中不要留空行,并且最后一行末尾不要添加用于结束行的 \\。这些约定见 amsmath 用户指南第 3.1 和 3.9 节。

一个重要的限制是分页:aligned 和 gathered 都是不可拆分的结构,因此 \allowdisplaybreaks 不会将它们跨页拆开。对于特别长的推导,请重新组织显示公式,不要指望该命令能拆分页中的这种嵌套排版。请参阅 amsmath 关于分页的说明了解这一限制。

对于常见的短推导,可从一个 equation、一个 aligned 和一个嵌套的 cases 行开始。将外层换行放在分段表达式之后,核对每个分支的条件;只有在需要不同的水平对齐方式或数学字号时,才改用其他结构。

来源