跳到正文

LaTeX 公式对齐:align、gather、cases

单个带编号的公式用 equation 环境,在 & 处对齐的多行公式用 align。在其中写 \label{eq:name},正文中的 \eqref{eq:name} 就会输出带括号的编号。

带编号的公式

equation 环境把一个公式单独排成一行,并在右侧加上编号。在其中加上 \label,再用 \eqref(带括号的编号)或 \ref(只有编号)引用它。

带编号的公式及其引用

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
The energy of a body at rest is
\begin{equation}
  E = mc^2 . \label{eq:energy}
\end{equation}
Equation~\eqref{eq:energy} links mass and energy;
\ref{eq:energy} is its number.
由 Scissor LaTeX 排版: 带编号的公式及其引用

equation* 和 \[ ... \] 给出同样的版式,但没有编号。带星号的环境来自 amsmath 宏包;在每个含有数学内容的文档中都请加载它。

对齐多行

align 把多行在 & 处对齐,& 通常放在 = 之前。除最后一行外,每行都以 \\ 结尾。

在等号处对齐的多行

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\begin{align*}
  (a+b)^2 &= (a+b)(a+b) \\
          &= a^2 + ab + ba + b^2 \\
          &= a^2 + 2ab + b^2
\end{align*}

这里的编号规则

Scissor LaTeX 对公式的编号与 TeX 发行版相同:align 或 gather 的每一行都有自己的编号。

你写的TeX 发行版Scissor LaTeX
equation一个编号一个编号
三行的 align、gather三个编号三个编号
部分行上有 \nonumber 或 \notag这些行不编号这些行不编号
每行都有 \nonumber没有编号没有编号
align*, gather*, equation*没有编号没有编号
一个块中有两个 \label两个标签两个标签
\tag{A}用标记“A”代替编号用标记“A”代替编号
\numberwithin{equation}{section}(1.1), (1.2)(1.1), (1.2)

align 公式块:每行一个编号

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\begin{align}
  f(x) &= (x+1)^2 \label{eq:square} \\
       &= x^2 + 2x + 1
\end{align}
By \eqref{eq:square}, $f(1) = 4$.

每个带编号的行使用一个 equation 环境

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\begin{equation}
  a + b = 44 \label{eq:sum}
\end{equation}
\begin{equation}
  a - b = 2 \label{eq:diff}
\end{equation}
Adding \eqref{eq:sum} and \eqref{eq:diff} gives $a = 23$.

gather:居中的多行

gather 把多行居中排列,但不对齐。

用 gather* 居中多行

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\begin{gather*}
  a^2 + b^2 = c^2 \\
  e^{i\pi} + 1 = 0 \\
  \sin^2 x + \cos^2 x = 1
\end{gather*}

split:把一个长公式分成多行

在 equation 中,split 把一个长公式拆成若干对齐的行,这些行共用一个编号。

拆成两行的长公式

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\begin{equation}
\begin{split}
  (x+y)^3 &= (x+y)(x+y)^2 \\
          &= x^3 + 3x^2y + 3xy^2 + y^3
\end{split}
\end{equation}

multline 也能拆分长公式而不对齐:它的第一行排在左边,最后一行排在右边。

cases:分情况定义

cases 环境在多行前面加上一个大花括号。值和条件之间用 & 分隔。

分情况定义的函数

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\begin{equation*}
  \operatorname{sign}(x) =
  \begin{cases}
    -1 & \text{if } x < 0, \\
     0 & \text{if } x = 0, \\
     1 & \text{if } x > 0.
  \end{cases}
\end{equation*}

在其他数学环境中使用 aligned 和 gathered

aligned 和 gathered 的作用和 align*、gather* 一样,但用在公式内部,例如在 \[ ... \] 中或花括号旁边。

行间公式中的 aligned

LaTeX导言区: \usepackage{amsmath}在编辑器中打开 (在新标签页中打开)
\[
  \left.
  \begin{aligned}
    x + y &= 44 \\
    x - y &= 4
  \end{aligned}
  \right\}
  \quad \Rightarrow \quad x = 24,\ y = 20
\]

其他环境

环境在 Scissor LaTeX 中
equation, equation*可用
align, align*可用,每行一个编号
gather, gather*可用,每行一个编号
multline, multline*可用
split(在 equation 内)可用
cases, aligned, gathered可用
alignat, flalign可用
eqnarray可用
一行 align 中有多组 & 列对可用
\intertext{...}可用

与 TeX 发行版的区别

关于这个宏包的更多内容,请参阅 amsmath 页面和 mathtools 页面。宏包的完整手册位于 ctan.org/pkg/amsmath。

要快速试写单个公式并实时预览,请使用 LaTeX 公式编辑器。

常见问题

如何让公式在等号处对齐?

使用 \begin{align*} ... \end{align*},并在每个 = 之前紧接着放一个 &。除最后一行外,每行都以 \\ 结尾。

如何去掉某个公式的编号?

不带编号的公式请使用 equation*、align* 或 \[ ... \]。要去掉 align 中某一行的编号,请在该行的 \\ 之前写 \nonumber(或 \notag)。

如何为 align 的每一行编号?

align 会为每一行单独编号;在想引用的每一行上加 \label。

本页的每个示例都在构建网站时由 Scissor LaTeX 排版。 最后更新:2026-11-07