CorTeX 文档打开 CorTeX
打开 CorTeX
浏览全部主题

对齐多行公式

用 amsmath 的对齐点、换行和编号,让推导更易读。

本页内容

使用 amsmath 环境,在推导逻辑发生变化的位置换行,而不只是因为源码太长。根据对齐方式和编号需求选择环境。

选择合适的环境#

环境 用途
align / align* 多行相关公式按关系符号对齐;带星号形式不编号。
aligned 嵌套在 equation 或其他数学容器中的紧凑对齐块。
split 将一个较长的编号公式拆为多行,使用一列对齐点。
gather / gather* 多个独立居中的公式,不需要共用对齐点。
cases 带左花括号并对齐条件的分段定义。

编写并引用推导#

在需要对齐的关系符号之前放 &,用 \\ 分隔行。每一行都应作为周围句子的一部分保留标点。

LaTeX 源代码
\documentclass[10pt]{article}
\usepackage{amsmath}
\begin{document}
The least-squares objective satisfies
\begin{align}
  J(\theta) &= \sum_{i=1}^{n}(y_i-\theta x_i)^2, \label{eq:objective}\\
  \frac{dJ}{d\theta} &= -2\sum_{i=1}^{n}x_i(y_i-\theta x_i), \notag\\
  \hat{\theta} &= \frac{\sum_i x_i y_i}{\sum_i x_i^2}. \label{eq:estimate}
\end{align}
Equation~\eqref{eq:estimate} is valid when \(\sum_i x_i^2>0\).

A clipped response is defined by
\begin{equation}
  g(x)=\begin{cases}
    0, & x<0,\\
    x, & 0\leq x\leq 1,\\
    1, & x>1.
  \end{cases}
\end{equation}
\end{document}

推导第一行与第三行分别有标签和编号,\notag 取消中间行编号。分段函数用第二列对齐条件。每个 \label 应写在它所指的那一行。

使用嵌套和非对齐布局#

以下示例用于演示布局。最后的梯度和 Hessian 条件,是二阶连续可微函数在无约束局部极小点的必要条件;仅凭它们不能证明极小值。

多条关系共用一个公式编号时,使用 aligned

\begin{equation}
  \begin{aligned}
    a &= b+c,\\
    d &= e-f.
  \end{aligned}
\end{equation}

一个较长编号公式有自然续行时使用 split;多个公式彼此相关但没有合适的公共对齐点时,使用 gather

\begin{equation}
  \begin{split}
    p(y\mid x) &= \int p(y,z\mid x)\,dz \\
                &= \int p(y\mid z,x)p(z\mid x)\,dz.
  \end{split}
\end{equation}

\begin{gather*}
  \nabla f(x^*)=0, \\
  \nabla^2 f(x^*) \succeq 0.
\end{gather*}

gather 的带星号形式取消全部编号。split 使用外层 equation 提供的单个编号。

不要把 aligngatherequation 放在 \[...\] 中;这些环境本身已经进入独立数学模式。多个 & 会创建多个对齐列和交替间距,只在有意安排成对公式等布局时使用。遇到对齐错误时,先检查第一条报错行是否多了 &、漏了 \\,或数学边界不配对。

练习取消目标函数所在行的编号,只引用估计结果。确认引用仍能解析,标点与正文连贯,再学习定理与证明