Latex 公式对齐常用方式

注:本文为 “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手工指定分页,它同样可以带有这个参数。

常见公式环境及差异

关于公示环境有一下几点需要注意:

  1. 在这些环境里面默认的输入文本都是公式:

    即不需要再输入$ ... $\[ ... \]

    空格是被自动过滤的,如果需要调整间隔,需要插入文本或使用诸如\; \: \, \quad的公示环境间隔符。

  2. 如果要输入一般文本建议用 \text{...} 它由包 amstext 提供。

    它相对于 latex 内置的\mbox{...}的优势在于\text{}可以根据当前位置自动调整文本样式(尤其是大小),而\mbox{}采用统一的正文样式。这一点在文本被用作上下标的时候非常重要。

  3. 对于非简写的环境(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 nameDescriptionNotes
eqnarray eqnarray*Similar to align and align*Not recommended since spacing is inconsistent
multline multline*First line left aligned, last line right alignedEquation 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)=nn1λ

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=1n(XiXˉ)2)=E(n1i=1nXi2)E(n1i=1n2XˉXi)+E(n1i=1nXˉ2)=EX2E(Xˉ2)=DX+(EX)2DXˉ(EXˉ)2=nn1DX

4. 多 & 情况下 flalignalign 环境是如何对齐的:

根据&(假设 n 个)一行被分为 n+1 列。从左向右将列两个分为一组,第一组紧靠页左侧,最后一组紧靠页左侧,其余组均匀散布在整个行中。当公式比较短时,中间可能会有几段空白。

需要注意的是:

  1. 每一组内部也是有对齐结构的!它们在所在位置上向中间对齐的,即第一列向右对齐,第二列向左对齐。
  2. 所谓紧靠页左/右是在进行了组内对齐调整之后,最长的一块紧靠上去。也就是说对于长度不一两行,较短的那一行是靠不上去的。
  3. 如果总共有奇数个列,及最后一组只有一个列,则它右对齐到页右侧,即所有行的最后一列的右侧都靠在页右侧。

下面用一个极端的例子来说明这个环境的特点:

\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=xx+yσ2σ2=yx=xyx

用于内嵌的对齐环境

这些环境无法独立构成一个数学环境,必须要嵌入在其他环境内部

Math environment nameDescription
gatheredAllows to gather few equations to be set under each other and assigned a single equation number
splitSimilar to align*, but used inside another displayed mathematics environment
alignedSimilar to align, to be used inside another mathematics environment
alignedatSimilar 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}

在这里插入图片描述

拆分和对齐方程

Splitmultline非常相似。使用 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} 2x5y3x2+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*}

结果如下:

img


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:

文章中的延伸阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值