注:本文为 “Latex 公式对齐” 相关文章合辑。
未整理去重。
Latex 常见公式环境与对齐方式小节(重修版)
yanxiangtianji于 2017-01-28 18:03:14 发布
本文将讨论全局与局部的公式对齐方式的调节,并对比各种常见的公式环境的差异(尤其是在对齐方面),介绍多行公式、多公式的编写方式。
针对各种常见环境(尤其是多行公式环境)的差异,对它们分别适用于哪种应用环境提出建议。
全局设置
全局对齐
默认的公式对齐方式是居中对齐。
如果全文要大量使用左对齐方式,可以采用在 documentclass 或者 amsmath 包前面加上参数fleqn,这样全局的默认对齐方式就是左对齐了。
\documentclass[fleqn]{article}
或
\usepackage[fleqn]{amsmath}
公式跨页
默认一个公式环境里面的多行公式是不会跨页显示的,可以使用下面命令开启全局的自动跨页显示:
\allowdisplaybreaks
或
\allowdisplaybreaks[n]
n 的值为 0 到 4,表示分页的坚决程度,例如 0 表示能不分页就不分页,4 表示强制分页。
也可以在公式环境中使用\displaybreak手工指定分页,它同样可以带有这个参数。
常见公式环境及差异
关于公示环境有一下几点需要注意:
-
在这些环境里面默认的输入文本都是公式:
即不需要再输入
$ ... $或\[ ... \];空格是被自动过滤的,如果需要调整间隔,需要插入文本或使用诸如
\; \: \, \quad的公示环境间隔符。 -
如果要输入一般文本建议用
\text{...}它由包 amstext 提供。它相对于 latex 内置的
\mbox{...}的优势在于\text{}可以根据当前位置自动调整文本样式(尤其是大小),而\mbox{}采用统一的正文样式。这一点在文本被用作上下标的时候非常重要。 -
对于非简写的环境(begin 和 end 包裹的)都有两种形式,一种直接写环境名,会参与自动编号;另一种是在环境名后面加一个星号“
*”,不会参与编号。如果没有有意修改,编号都是在最右边,在公式排版时,可以认为页面的右边缘被向左移动了一个编号所占用的距离。
下面的讨论为了描述简便都是在带有星号,并且页面是单栏的情况下进行的。
下面讨论各种常见公式环境,并重点讨论它们在对齐方面的差异。
简写形式(一个公式)
$ equation $
$$ equation $$
\[equation\]
它们的特点是都不产生编号公式。
后两种公式单独占一行,即不能嵌入正文中。
用$$ ... $$表示的公式自动居中,而\[ ... \]表示的公式会根据配置的全局对齐方式对齐。
标准单个公式环境
\begin{equation}
...
\end{equation}
它是最一般的公式环境,表示一个公式,默认情况下之表示一个单行的公式,但是它的功能可以通过内嵌各种其他环境进行扩展。
它可以内嵌的一些关于对齐的环境,这些环境将在后面介绍。
align(多个公式)
这是最基本的对齐环境,其他多公式环境都不同程度地依赖它。
与表格环境一样,它采用”&“分割各个对齐单元,使用”\\“换行。
它的每行是一个公式,都会独立编号。
在排版过程中,它将&分出来的列又分成组,组间特定方式排版,具体方式在 flalign 环境中讨论。
\begin{align*}
f(x) & = (x+a)(x+b) \\
& = x^2 + (a+b)x + ab
\end{align*}
它看起来是这样的:
f ( x ) = ( x + a ) ( x + b ) = x 2 + ( a + b ) x + a b \begin{align*} f(x) & = (x+a)(x+b) \\ & = x^2 + (a+b)x + ab \end{align*} f(x)=(x+a)(x+b)=x2+(a+b)x+ab
其他多公式环境
这些环境的各自对齐方式会覆盖全局的对齐方式,例如即使全局配置的是居中对齐,而flalign也会使它的首列左对齐。
| Environment name | Description | Notes |
|---|---|---|
eqnarray eqnarray* | Similar to align and align* | Not recommended since spacing is inconsistent |
multline multline* | First line left aligned, last line right aligned | Equation number aligned vertically with first line and not centered as with other environments. |
gather gather* | Consecutive equations without alignment | |
flalign flalign* | Similar to align, but left aligns first equation column, and right aligns last column | |
alignat alignat* | Takes an argument specifying number of columns. | Allows to control explicitly the horizontal space between equations You can calculate the number of columns by counting & characters in a line and adding 1 |
表格参考自:https://en.wikibooks.org/wiki/LaTeX/Advanced_Mathematics
其中除了 eqnarray 是内置的以外,其他的都需要 amsmath 包支持。
需要注意的是表格中说的对齐方式是从大方面说的,例如flalign的首列左对齐是相对与整个页面而言的,而各行不同长度的第一列却采用右对齐的方式,即其中最长的一个的左端顶着页边,其他的列的右端与它的右端对齐。尾列的右对齐与之类似。后面详细说明。
1. eqnarray
与 align 相同,只是在名字上更直接地表示它包含了多个公式。
2. gather
它是最简单的多行公式环境,自己不提供任何对齐。其中的各行公式按照全局方式分别对齐。
在设置了全局左对齐之后,因为不存在内部各个公式之间对排版的干扰,这种环境非常适合写数学推导或者证明。
\begin{gather*}
E(X)=\lambda \qquad D(X)=\lambda \\
E(\bar{X})=\lambda \\
D(\bar{X})=\frac{\lambda}{n} \\
E(S^2)=\frac{n-1}{n}\lambda \\
\end{gather*}
E ( X ) = λ D ( X ) = λ E ( X ˉ ) = λ D ( X ˉ ) = λ n E ( S 2 ) = n − 1 n λ \begin{gather*} E(X)=\lambda \qquad D(X)=\lambda \\ E(\bar{X})=\lambda \\ D(\bar{X})=\frac{\lambda}{n} \\ E(S^2)=\frac{n-1}{n}\lambda \\ \end{gather*} E(X)=λD(X)=λE(Xˉ)=λD(Xˉ)=nλE(S2)=nn−1λ
3. flalign
虽然可以使用多个&,但是比较一般的用法是在只在等号前面使用一个&,它使所有列表现地像是根据等号对齐了,因此这个环境很适合用来编写多行的公式推导和数值计算过程。例如:
\begin{align}
E(S^2) &=E\left(\frac{1}{n} \sum_{i=1}^n (X_i-\bar{X})^2\right) \\
& =E\left(\frac{1}{n}\sum_{i=1}^n X_i^2\right) - E\left(\frac{1}{n}\sum_{i=1}^n 2\bar{X}X_i\right) + E\left(\frac{1}{n}\sum_{i=1}^n \bar{X}^2\right) \\
& =EX^2 -E(\bar{X}^2) \\
& =DX + (EX)^2 - D\bar{X} - (E\bar{X})^2 \\
& =\frac{n-1}{n}DX
\end{align}
E ( S 2 ) = E ( 1 n ∑ i = 1 n ( X i − X ˉ ) 2 ) = E ( 1 n ∑ i = 1 n X i 2 ) − E ( 1 n ∑ i = 1 n 2 X ˉ X i ) + E ( 1 n ∑ i = 1 n X ˉ 2 ) = E X 2 − E ( X ˉ 2 ) = D X + ( E X ) 2 − D X ˉ − ( E X ˉ ) 2 = n − 1 n D X \begin{align} E(S^2) &=E\left(\frac{1}{n} \sum_{i=1}^n (X_i-\bar{X})^2\right) \\ & =E\left(\frac{1}{n}\sum_{i=1}^n X_i^2\right) - E\left(\frac{1}{n}\sum_{i=1}^n 2\bar{X}X_i\right) + E\left(\frac{1}{n}\sum_{i=1}^n \bar{X}^2\right) \\ & =EX^2 -E(\bar{X}^2) \\ & =DX + (EX)^2 - D\bar{X} - (E\bar{X})^2 \\ & =\frac{n-1}{n}DX \end{align} E(S2)=E(n1i=1∑n(Xi−Xˉ)2)=E(n1i=1∑nXi2)−E(n1i=1∑n2XˉXi)+E(n1i=1∑nXˉ2)=EX2−E(Xˉ2)=DX+(EX)2−DXˉ−(EXˉ)2=nn−1DX
4. 多 & 情况下 flalign 和 align 环境是如何对齐的:
根据&(假设 n 个)一行被分为 n+1 列。从左向右将列两个分为一组,第一组紧靠页左侧,最后一组紧靠页左侧,其余组均匀散布在整个行中。当公式比较短时,中间可能会有几段空白。
需要注意的是:
- 每一组内部也是有对齐结构的!它们在所在位置上向中间对齐的,即第一列向右对齐,第二列向左对齐。
- 所谓紧靠页左/右是在进行了组内对齐调整之后,最长的一块紧靠上去。也就是说对于长度不一两行,较短的那一行是靠不上去的。
- 如果总共有奇数个列,及最后一组只有一个列,则它右对齐到页右侧,即所有行的最后一列的右侧都靠在页右侧。
下面用一个极端的例子来说明这个环境的特点:
\begin{flalign*}
xyz &= b+c &=123 &=123 &=ssss \\
x &= 1+12 &=432523452345 &=2 &=a \\
&= 2 &=982739 &=p &=ttt
\end{flalign*}
\begin{flalign*}
xyz &= b+c &=123 &=123 &=wera &=ssss \\
x &= 1+12 &=432523452345 &=2 &=aeir &=a \\
&= 2 &=982739 &=p &=panie &=ttt
\end{flalign*}
5. multline
注意是 multline 不是 multiline,虽然它就是那个意思。
它不支持“&”分列。首行左对齐,末行右对齐,其余各行分别按照全局方式对齐。
没有常见的应用模式。
6. alignat
它接收一个参数用来指定根据哪一列对齐。
\begin{alignat}{2}
\sigma_1 &= x + y &\quad \sigma_2 &= \frac{x}{y} \\
\sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2'
&= \frac{\partial \frac{x}{y}}{\partial x}
\end{alignat}
σ 1 = x + y σ 2 = x y σ 1 ′ = ∂ x + y ∂ x σ 2 ′ = ∂ x y ∂ x \begin{alignat}{2} \sigma_1 &= x + y &\quad \sigma_2 &= \frac{x}{y} \\ \sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2' &= \frac{\partial \frac{x}{y}}{\partial x} \end{alignat} σ1σ1′=x+y=∂x∂x+yσ2σ2′=yx=∂x∂yx
用于内嵌的对齐环境
这些环境无法独立构成一个数学环境,必须要嵌入在其他环境内部。
| Math environment name | Description |
|---|---|
gathered | Allows to gather few equations to be set under each other and assigned a single equation number |
split | Similar to align*, but used inside another displayed mathematics environment |
aligned | Similar to align, to be used inside another mathematics environment |
alignedat | Similar to alignat, and just as it, takes an additional argument specifying number of columns of equations to set |
表格参考自:http://en.wikibooks.org/wiki/LaTeX/Advanced_Mathematics
这些环境都需要 amsmath 包支持。
1. aligned
例如:
\begin{equation}
\left.\begin{aligned}
B'&=-\partial \times E,\\
E'&=\partial \times B - 4\pi j,
\end{aligned}
\right\}
\qquad \text{Maxwell's equations}
\end{equation}
$$\begin{equation}
\left.\begin{aligned}
B'&=-\partial \times E,\\
E'&=\partial \times B - 4\pi j,
\end{aligned}
\right\}
\qquad \text{Maxwell's equations}
\end{equation}$$
其中\left和\right后加一个括号的表示用于自动调整各种括号的大小,必须配对使用。
公式中的\left.是一个虚的\left,目的是为了和\right\}配对。
2. split
它用于将一个公式拆分成多行,但是它整体还只是一个公式。
\begin{equation}
\begin{split}
(a + b)^4
&= (a + b)^2 (a + b)^2 \\
&= (a^2 + 2ab + b^2)
(a^2 + 2ab + b^2) \\
&= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4
\end{split}
\end{equation}
\begin{equation}
\begin{split}
(a + b)^3 &= (a + b) (a + b)^2 \\
&= (a + b)(a^2 + 2ab + b^2) \\
&= a^3 + 3a^2b + 3ab^2 + b^3
\end{split}
\end{equation}
(
a
+
b
)
4
=
(
a
+
b
)
2
(
a
+
b
)
2
=
(
a
2
+
2
a
b
+
b
2
)
(
a
2
+
2
a
b
+
b
2
)
=
a
4
+
4
a
3
b
+
6
a
2
b
2
+
4
a
b
3
+
b
4
\begin{equation} \begin{split} (a + b)^4 &= (a + b)^2 (a + b)^2 \\ &= (a^2 + 2ab + b^2) (a^2 + 2ab + b^2) \\ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 \end{split} \end{equation}
(a+b)4=(a+b)2(a+b)2=(a2+2ab+b2)(a2+2ab+b2)=a4+4a3b+6a2b2+4ab3+b4
(
a
+
b
)
3
=
(
a
+
b
)
(
a
+
b
)
2
=
(
a
+
b
)
(
a
2
+
2
a
b
+
b
2
)
=
a
3
+
3
a
2
b
+
3
a
b
2
+
b
3
\begin{equation} \begin{split} (a + b)^3 &= (a + b) (a + b)^2 \\ &= (a + b)(a^2 + 2ab + b^2) \\ &= a^3 + 3a^2b + 3ab^2 + b^3 \end{split} \end{equation}
(a+b)3=(a+b)(a+b)2=(a+b)(a2+2ab+b2)=a3+3a2b+3ab2+b3
LaTex 数学之用 amsmath 对齐方程
龙晨天已于 2022-03-10 14:58:25 修改
该amsmath软件包提供了一些用于显示方程式的选项。您可以选择更适合您的文档的布局,即使方程式很长,或者您必须在同一行中包含多个方程式。
方程的标准 LaTeX 工具可能缺乏一些灵活性,当方程太长时会导致重叠甚至修剪部分方程。我们可以通过使用该包来克服这些困难,该amsmath包可以使用 \usepackage{amsmath}.
让我们从一个基本的例子开始:
\usepackage{amsmath}
\begin{document}
\begin{equation} \label{eq1}
\begin{split}
A & = \frac{\pi r^2}{2} \\
& = \frac{1}{2} \pi r^2
\end{split}
\end{equation}
\end{document}
下图显示了 LaTeX 代码产生的输出:

equation如果要对其进行编号,则必须将方程式包装在环境中,否则使用equation*(带星号)。在equation环境内部,使用split环境将方程分割成更小的部分,这些更小的部分将相应地对齐。使用双反斜杠用作换行符,使用字符 & 设置方程垂直对齐的点。
写一个方程
如介绍中所述,要显示单个方程式,必须使用equation*或者equation环境,具体取决于是否希望对方程式进行编号。此外,您可以在文档中添加标签以供将来参考。
\usepackage{amsmath}
\begin{document}
\begin{equation} \label{eu_eqn}
e^{\pi i} + 1 = 0
\end{equation}
The beautiful equation \ref{eu_eqn} is known as the Euler equation.
\end{document}

显示长方程
对于长于一条线的方程,请使用multline环境。插入双反斜杠以设置要断开的方程的点。第一部分将左对齐,第二部分将显示在下一行并右对齐。
同样,在环境名称中使用星号 * 确定等式是否编号。
\usepackage{amsmath}
\begin{document}
\begin{multline*}
p(x) = 3x^6 + 14x^5y + 590x^4y^2 + 19x^3y^3\\
- 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3
\end{multline*}
\end{document}

拆分和对齐方程
Split与multline非常相似。使用 split 环境来打断方程并将其按列对齐,就像方程的各个部分在表格中一样。此环境必须在方程式环境中使用。例如,查看本文档的介绍。
对齐几个方程
如果需要垂直对齐多个方程式,则 align 环境会执行此操作:
\usepackage{amsmath}
\begin{document}
\begin{align*}
2x - 5y &= 8 \\
3x + 9y &= -12
\end{align*}
\end{document}

通常二元运算符 ( >,<和=) 是为了美观的文档而对齐的。
如前所述,& 字符决定了方程式的对齐位置。让我们看一个更复杂的例子:
\usepackage{amsmath}
\begin{document}
\begin{align*}
x&=y & w &=z & a&=b+c\\
2x&=-y & 3w&=\frac{1}{2}z & a&=b\\
-4 + 5x&=2+y & w+2&=-1+w & ab&=cb
\end{align*}
\end{document}

在这里,我们将方程排列成三列。LaTeX 假设每个方程由两个部分组成,由一个&分隔,并且每个方程与之前的一个由一个&分隔。
同样,使用 * 切换方程编号。当允许编号时,可以单独标记每一行。
分组和居中方程
如果只需要显示一组连续的方程,居中且没有任何对齐,请使用gather环境。设置/取消设置方程编号的星号技巧也适用于此。
\usepackage{amsmath}
\begin{document}
\begin{gather*}
2x - 5y = 8 \\
3x^2 + 9y = 3a + c
\end{gather*}
\end{document}

在 LaTex 中使用不同的方法来让公式对齐
霜雪之梦666已于 2024-02-23 17:05:16 修改
1,使用 align 环境:
align 环境允许你在多行中对齐公式。你可以在需要对齐的位置使用 & 符号。
\begin{align}
2x - 5y &= 8 \\
3x^2 + 9y &= 3a + c
\end{align}
这将在页面上显示两行公式,其中等号对齐。
可以使用 \tag{} 命令来实现添加序列,方便后续引用或者说明时指代具体的方程。
结果如下:
2 x − 5 y = 8 3 x 2 + 9 y = 3 a + c \begin{align} 2x - 5y &= 8 \tag{1}\\ 3x^2 + 9y &= 3a + c \tag{2} \end{align} 2x−5y3x2+9y=8=3a+c(1)(2)
2, 使用 split 环境:
如果你想在一个公式中对齐多个部分,可以使用 split 环境。
\begin{equation}
\begin{split}
A &= \frac{\pi r^2}{2} \\
&= \frac{1}{2} \pi r^2
\end{split}
\end{equation}
结果如下:
A = π r 2 2 = 1 2 π r 2 \begin{equation} \begin{split} A &= \frac{\pi r^2}{2} \\ &= \frac{1}{2} \pi r^2 \tag{3} \end{split} \end{equation} A=2πr2=21πr2(3)
3, 使用 multline 环境:
如果你的公式太长,可以使用 multline 环境。这将在需要换行的地方自动对齐。
\begin{multline*}
p(x) = 3x^6 + 14x^5y + 590x^4y^2 \\
+ 19x^3y^3 - 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3
\end{multline*}
结果如下:

LaTex多个方程组下完成多处对齐排列
Liu,Xun于 2021-01-02 13:20:53 发布
问题: 多个方程组下实现方程组中多处对齐排列
如:

在排列图示三个方程组时,一方面想要方程组在大括号处对齐,另一方面想实现,各方程组在右侧for文字处对齐。如下提供一种在amsmath宏包下的方法:
\documentclass{article}
\usepackage{amsmath, amssymb}
\usepackage[english]{babel}
\newcommand{\for}{\text{for }}
\begin{document}
\newlength{\widest}
\settowidth{\widest}{$(1-e^{-\lambda h})\,P_1(p'|p=0, n)$}
\begin{align*}
p^{00}_{p p'}&=
\begin{cases}
\makebox[\widest][l]{$e^{-\lambda h}\,P_0(p'|p, n)$} & \for p_t\leq p_B (a_t=0)\\
e^{-\lambda h}\,P_0(p'|p=0, n) & \for p_t>p_B (a_t=1)
\end{cases}\\
p^{01}_{p p'}&=
\begin{cases}
(1- e^{-\lambda h})\,P_1(p'|p, n)& \for p_t\leq p_B (a_t=0)\\
(1-e^{-\lambda h})\,P_1(p'|p=0, n) & \for p_t>p_B (a_t=1)
\end{cases}\\
P^{10}_{p p'}&=
\begin{cases}
\makebox[\widest][l]{$0$} & \for p_t\leq p_B (a_t=0)\\
e^{-\lambda h}\, P_0(p'|p=0, n) &\for p_t>p_B (a_t=1)
\end{cases}
\end{align*}
\end{document}
基本思路是定义方程组所含方程的最长长度,而后封装为该长度的 box,其余短方程写入该长度 box 内。
via:
-
Latex 常见公式环境与对齐方式小节(重修版)_eqnarray-优快云博客 yanxiangtianji于 2017-01-28 18:03:14 发布
https://blog.youkuaiyun.com/yanxiangtianji/article/details/54767265 -
LaTex 数学之用 msmath 对齐方程-优快云博客 龙晨天已于 2022-03-10 14:58:25 修改
https://blog.youkuaiyun.com/qq_30759585/article/details/123027689 -
[翻译] 在 LaTeX 中对齐公式_latex公式对齐-优快云博客 Xovee 已于 2022-03-21 11:15:20 修改
https://blog.youkuaiyun.com/xovee/article/details/106983649 -
在 LaTex 中使用不同的方法来让公式对齐_latex公式对齐-优快云博客 霜雪之梦666已于 2024-02-23 17:05:16 修改
https://blog.youkuaiyun.com/weixin_56251174/article/details/136253301 -
LaTex多个方程组下完成多处对齐排列_latex线性方程组对齐-优快云博客 Liu,Xun 于 2021-01-02 13:20:53 发布
https://blog.youkuaiyun.com/simonliu2021/article/details/112095187
文章中的延伸阅读
-
Aligning equations with amsmath
https://www.overleaf.com/learn/latex/Aligning equations with amsmath -
[数学表达式]
https://www.overleaf.com/learn/Mathematical_expressions -
[括号]
https://www.overleaf.com/learn/Brackets_and_Parentheses -
[上下标]
https://www.overleaf.com/learn/Subscripts_and_superscripts -
[公式中的间距]
https://www.overleaf.com/learn/Spacing_in_math_mode -
[数学模式中的展示样式]
https://www.overleaf.com/learn/Display_style_in_math_mode -
[希腊字符和数学符号列表]
https://www.overleaf.com/learn/List_of_Greek_letters_and_math_symbols -
[分式和二次项]
https://www.overleaf.com/learn/Fractions_and_Binomials -
[
amsmath包官方文档]
http://mirrors.ctan.org/macros/latex/required/amsmath/amsmath.pdf
2551

被折叠的 条评论
为什么被折叠?



