Home LaTex 数学公式
Post
Cancel

LaTex 数学公式

[toc]

一、AMS 宏集

AMS 宏集是美国数学学会 (American Mathematical Society) 提供的对 LaTex 原生数学公式排版的扩展,其核心是 amsmath 宏包,对多行公式的排版提供了有力的支持。此外,amsfonts 宏包以及基于它的 amssymb 宏包提供了丰富的数学符号;amsthm 宏包扩展了 LaTex 定理证明格式。

二、公式排版基础

行内公式和行间公式

数学公式有两种排版方式:其一是与文字混排,称为行内公式;其二是单独列为一行排版,称为行间公式。

行内公式由一对 $ 符号包裹:

1
2
The Pythagorean theorem is
$a^2 + b^2 = c^2$.

行间公式由 equation 环境包裹。equation 环境为公式自动生成一个编号,这个编号可以用 \label\ref 生成交叉引用,amsmath 的 \eqref 命令则为引用自动加上圆括号;还可以用 \tag 命令手动修改公式的编号,或者用 \notag 命令取消为公式编号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
The Pythagorean theorem is:
\begin{equation}
a^2 + b^2 = c^2 \label{pythagorean}
\end{equation}
Equation \eqref{pythagorean} is
called `Gougu theorem' in Chinese.

It's wrong to say
\begin{equation}
1 + 1 = 3 \tag{dumb}
\end{equation}
or
\begin{equation}
1 + 1 = 4 \notag
\end{equation}

如果需要直接使用不带编号的行间公式,则将公式用命令 \[\] 包裹,与之等效的是 displaymath 环境。有的人更喜欢 equation* 环境,体现了带星号和不带星号的环境之间的区别。

1
2
3
4
5
6
7
8
9
\begin{equation*}
a^2 + b^2 = c^2
\end{equation*}
For short:
\[ a^2 + b^2 = c^2 \]
Or if you like the long one:
\begin{displaymath}
a^2 + b^2 = c^2
\end{displaymath}

为了与文字相适应,行内公式在排版大的公式元素(分式、巨算符等)时显得很“局促”,以下是对比:

1
2
3
4
5
6
7
8
9
10
11
In text:
$\lim_{n \to \infty}
\sum_{k=1}^n \frac{1}{k^2}
= \frac{\pi^2}{6}$.

In display:
\[
\lim_{n \to \infty}
\sum_{k=1}^n \frac{1}{k^2}
= \frac{\pi^2}{6}
\]

数学模式

当用户使用 $ 开启行内公式输入,或是使用 \[ 命令、equation 环境时,LaTex 就进入了数学模式。数学模式相比于文本模式有以下特点:

  • 空格被忽略,数学符号的间距默认由符号的性质(关系符号、运算符等)决定。需要人为引入间距时,使用 \quad\qquad 等命令。
  • 不允许有空行(分段),行间公式中也无法用 \\ 命令手动换行。
  • 所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。如果想在数学公式中输入正体的文本,简单情况下可用 \mathrm 命令,或者用 amsmath 提供的 \text 命令。
1
$x^{2} \geq 0 \qquad \text{for \textbf{all} } x \in \mathbb{R}$

三、数学符号

LaTex 默认提供了常用的数学符号,amssymb 宏包提供了一些次常用的符号。

一般符号

希腊字母符号的名称就是其英文名称,如 α (\alpha)、β (\beta) 等等。大写的希腊字母为首字母大写的命令,如 Γ (\Gamma)、∆ (\Delta) 等等。

greece_symbol

无穷大符号为 ∞ (\infty),等等。

other_symbol

省略号:. . . (\dots) 和 · · · (\cdots) ,以及竖排的 (\vdots) 和斜排的 (\ddots)。

指数、上下标和导数

用 ^ 和 _ 标明上下标,上下标的内容(子公式)一般需要用花括号包裹,否则上下标只对后面的一个符号起作用。

1
2
3
4
5
$p^3_{ij} \qquad
m_\mathrm{Knuth}\qquad
\sum_{k=1}^3 k $\\[5pt]
$a^x+y \neq a^{x+y}\qquad
e^{x^2} \neq {e^x}^2$

导数符号 ‘ 是一类特殊的上标,可以适当连用表示多阶导数,也可以在其后连用上标:

1
2
$f(x) = x^2 \quad f'(x)
= 2x \quad f''^{2}(x) = 4$

分式和根式

分式使用 \frac{分子}{分母} 来书写。分式的大小在行间公式中是正常大小,而在行内 极度压缩。amsmath 提供了方便的命令 \dfrac\tfrac,令用户能够在行内使用正常大小的分式,或是反过来。

1
2
3
4
5
6
7
8
In display style:
\[
3/8 \qquad \frac{3}{8}
\qquad \tfrac{3}{8}
\]
In text style:
$1\frac{1}{2}$~hours \qquad
$1\dfrac{1}{2}$~hours

根式使用 \sqrt{...},表示 n 次方根时写成 \sqrt[n]{...}

1
2
3
$\sqrt{x} \Leftrightarrow x^{1/2}
\quad \sqrt[3]{2}
\quad \sqrt{x^{2} + \sqrt{y}}$

特殊的分式形式,如二项式结构,由 amsmath 宏包的 \binom 命令生成:

1
2
3
4
5
Pascal's rule is
\[
\binom{n}{k} =\binom{n-1}{k}
+ \binom{n-1}{k-1}
\]

关系符

常见的关系符号除了可以直接输入的 =,>,<,其它符号用命令输入,常用的有不等号 \ne、大于等于号 ≥ (\ge) 和小于等于号 ≤ (\le)、约等号 ≈ (\approx)、等价 ≡ (\equiv)、正比 ∝ (\propto)、相似 ∼ (\sim) 等等。

LaTex 还提供了自定义二元关系符的命令 \stackrel,用于将一个符号叠加在原有的二元关系符之上:

1
2
3
4
\[
f_n(x) \stackrel{*}{\approx} 1 
f_n(x) \stackrel{\ne}{\approx} 1
\]

binary_relation

算符

算符大多数是二元算符,除了直接用键盘可以输入的 +、−、∗、/,其它符号用命令输入,常用的有乘号 × (\times)、除号 ÷ (\div)、点乘 · (\cdot)、加减号 ± (\pm) / ∓ (\mp)∇ (\nabla)∂ (\partial) 等等。

binary_calc

LaTex 也将数学函数的名称作为一个算符排版,字体为直立字体。

functions

巨算符

积分号 \int、求和号 \sum 等符号称为巨算符。

giant_operator

巨算符在行内公式和行间公式的大小和形状有区别。

1
2
3
4
5
6
7
8
9
10
In text:
$\sum_{i=1}^n \quad
\int_0^{\frac{\pi}{2}} \quad
\oint_0^{\frac{\pi}{2}} \quad
\prod_\epsilon $ \\
In display:
\[\sum_{i=1}^n \quad
\int_0^{\frac{\pi}{2}} \quad
\oint_0^{\frac{\pi}{2}} \quad
\prod_\epsilon \]

巨算符的上下标位置可由 \limits\nolimits 调整,前者令巨算符类似 lim 或求和算符上下标位于上下方;后者令巨算符类似积分号,上下标位于右上方和右下方。

1
2
3
4
5
6
7
8
In text:
$\sum\limits_{i=1}^n \quad
\int\limits_0^{\frac{\pi}{2}} \quad
\prod\limits_\epsilon $ \\
In display:
\[\sum\nolimits_{i=1}^n \quad
\int\limits_0^{\frac{\pi}{2}} \quad
\prod\nolimits_\epsilon \]

amsmath 宏包还提供了 \substack,能够在下限位置书写多行表达式;subarray 环境更进 一步,令多行表达式可选择居中 (c) 或左对齐 (l):

1
2
3
4
5
6
7
8
9
10
11
12
\[
\sum_{\substack{0\le i\le n \\
  j\in \mathbb{R}}}
P(i,j) = Q(n)
\]
\[
\sum_{\begin{subarray}{l}
0\le i\le n \\
  j\in \mathbb{R}
\end{subarray}}
P(i,j) = Q(n)
\]

重音和箭头

hats

arrows

hat-arrows

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$\bar{x_0} \quad \bar{x}_0$\\[5pt]
$\vec{x_0} \quad \vec{x}_0$\\[5pt]
$\hat{\mathbf{e}_x} \quad
 \hat{\mathbf{e}}_x$
 
$0.\overline{3} =
\underline{\underline{1/3}}$ \\[5pt]
$\hat{XY} \qquad \widehat{XY}$\\[5pt]
$\vec{AB} \qquad
\overrightarrow{AB}$

$\underbrace{\overbrace{(a+b+c)}^6
\cdot \overbrace{(d+e+f)}^7}
_\text{meaning of life} = 42$

amsmath 的 \xleftarrow\xrightarrow 命令提供了长度可以伸展的箭头,并且可以为箭头增加上下标:

1
2
\[ a\xleftarrow{x+y+z} b \]
\[ c\xrightarrow[x<y]{a*b*c}d \]

括号和定界符

braces

LaTex 提供了多种括号和定界符表示公式块的边界,如小括号 ()、中括号 []、大括号 {}({})、尖括号 ⟨⟩ (\langle \rangle)等。

1
${a,b,c} \neq \{a,b,c\}$

使用 \left\right 命令可令括号(定界符)的大小可变,在行间公式中常用。LaTex 会自动根据括号内的公式大小决定定界符大小。\left\right 必须成对使用。需要使用单个定界符时,另一个定界符写成 \left.\right.

1
2
3
4
\[1 + \left(\frac{1}{1-x^{2}}
\right)^3 \qquad
\left.\frac{\partial f}{\partial t}
\right|_{t=0}\]

四、多行公式

长公式折行

通常来讲应当避免写出超过一行而需要折行的长公式。如果一定要折行的话,习惯上优先在等号之前折行,其次在加号、减号之前,再次在乘号、除号之前。其它位置应当避免折行。

amsmath 宏包的 multline 环境提供了书写折行长公式的方便环境。它允许用 \\ 折行,将公式编号放在最后一行。多行公式的首行左对齐,末行右对齐,其余行居中。

1
2
3
4
5
6
\begin{multline}
a+b+c+d+e+f + g + h + i \\
= j + k + l + m + n \\
= o + p + q + r + s \\
=t+u+v+x+z
\end{multline}

多行

align 环境,它将公式用 & 隔为两部分并对齐。分隔符通常放在等号左边:

1
2
3
4
\begin{align}
a & = b + c \\
&=d+e
\end{align}

align 环境会给每行公式都编号。但可以用 \notag 去掉某行的编号:

1
2
3
4
5
6
7
\begin{align}
a ={} & b + c \\
  ={} & d + e + f + g + h + i
        + j + k + l \notag \\
      & + m + n + o \\
  ={} & p + q + r + s
\end{align}

align 还能够对齐多组公式,除等号前的 & 之外,公式之间也用 & 分隔:

1
2
3
4
\begin{align}
a &=1  & b &=2  & c &=3 \\
d &=-1 & e &=-2 & f &=-5
\end{align}

如果不需要按等号对齐,只需罗列数个公式,gather 将是一个很好用的环境:

1
2
3
4
5
6
\begin{gather}
a = b + c \\
d = e + f + g \\
h + i = j + k \notag \\
l+m=n
\end{gather}

公用编号

另一个常见的需求是将多个公式组在一起公用一个编号,编号位于公式的居中位置。为此,amsmath 宏包提供了诸如 aligned、gathered 等环境,与 equation 环境套用。以 -ed 结尾的环境用法与不以 -ed 结尾的环境用法一一对应。

1
2
3
4
5
6
7
8
\begin{equation}
\begin{aligned}
a &= b + c \\
d &= e + f + g \\
h + i &= j + k \\
l + m &= n
\end{aligned}
\end{equation}

五、数组和矩阵

array 环境用来排版数组和矩阵,用法与 tabular 环境极为类似,也需要定义列格式,并用 \ 换行。数组可作为一个公式块,在外套用 \left\right 等定界符:

1
2
3
4
5
6
7
\[ \mathbf{X} = \left(
\begin{array}{cccc}
x_{11} & x_{12} & \ldots & x_{1n}\\
x_{21} & x_{22} & \ldots & x_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
x_{n1} & x_{n2} & \ldots & x_{nn}\\
\end{array} \right) \]
1
2
3
4
5
6
\[ |x| = \left\{
\begin{array}{rl}
-x & \text{if } x < 0,\\
0 & \text{if } x = 0,\\
x & \text{if } x > 0.
\end{array} \right. \]

上述例子也可以用 amsmath 提供的 cases 环境更轻松地完成::

1
2
3
4
5
6
\[ |x| =
\begin{cases}
-x & \text{if } x < 0,\\
0 & \text{if } x = 0,\\
x & \text{if } x > 0.
\end{cases} \]
amsmath 宏包还直接提供了多种排版矩阵的环境,包括不带定界符的 matrix,以及带各种定界符的矩阵 pmatrix( ( )、bmatrix( [ )、Bmatrix( { )、vmatrix()、Vmatrix( )。
1
2
3
4
5
6
7
8
9
10
11
\[
\begin{matrix}
1 & 2 \\ 3 & 4
\end{matrix} \qquad
\begin{bmatrix}
x_{11} & x_{12} & \ldots & x_{1n}\\
x_{21} & x_{22} & \ldots & x_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
x_{n1} & x_{n2} & \ldots & x_{nn}\\
\end{bmatrix}
\]

六、公式间距

distances

绝大部分时候,数学公式中各元素的间距是根据符号类型自动生成的,需要我手动调整的情况极少。

一个常见的用途是修正积分的被积函数 f(x) 和微元 dx 之间的距离。

1
2
3
4
5
\[
\int_a^b f(x)\mathrm{d}x
\qquad
\int_a^b f(x)\,\mathrm{d}x
\]

另一个用途是生成多重积分号。如果我们直接连写两个 \int,之间的间距将会过宽,此时可以使用负间距 \! 修正之。不过 amsmath 提供了更方便的多重积分号,如二重积分 \iint、三 重积分 \iiint 等。

1
2
3
4
5
6
7
8
9
\newcommand\diff{\,\mathrm{d}}
\begin{gather*}
\int\int f(x)g(y)
\diff x \diff y \\
\int\!\!\!\int
f(x)g(y) \diff x \diff y \\
\iint f(x)g(y) \diff x \diff y \\
\iint\quad \iiint\quad \idotsint
\end{gather*}

七、定理环境

LaTex 原始定理环境

LaTex 提供了 一个基本的命令 \newtheorem 提供定理环境的定义:

1
2
\newtheorem{⟨theorem environment⟩}{⟨title⟩}[⟨section-level⟩] 
\newtheorem{⟨theorem environment⟩}[⟨counter⟩]{⟨title⟩}

⟨theorem environment⟩ 为定理环境的名称。原始的 LaTex 里没有现成的定理环境,不加定义而直接使用很可能会出错。⟨title⟩ 是定理环境的标题(“定理”,“公理”等)。

定理的序号由两个可选参数之一决定,它们不能同时使用:

  • ⟨section level⟩ 为章节级别,如 chapter、section 等,定理序号成为章节的下一级序号

  • ⟨counter⟩ 为用 \newcounter 自定义的计数器名称,定理序号由这个计数器管理

如果两个可选参数都不用的话,则使用默认的与定理环境同名的计数器。

以下示例代码中,定义了一个 mythm 环境,其序号设为 section 的下一级序号。

1
2
3
4
5
6
7
8
9
10
11
12
\newtheorem{mythm}{My Theorem}[section]
\begin{mythm}\label{thm:light}
The light speed in vacuum
is $299,792,458\,\mathrm{m/s}$.
\end{mythm}
\begin{mythm}[Energy-momentum relation]
The relationship of energy,
momentum and mass is
\[E^2 = m_0^2 c^4 + p^2 c^2\]
where $c$ is the light speed
described in theorem \ref{thm:light}.
\end{mythm}

amsthm 宏包

amsthm 提供了 \theoremstyle 命令支持定理格式的切换,在用 \newtheorem 命令定义定理环境之前使用。amsthm 预定义了三种格式用于 \theoremstyle:plain 和 LaTex 原始的格式 一致;definition 使用粗体标签、正体内容;remark 使用斜体标签、正体内容。

另外 amsthm 还支持用带星号的 \newtheorem* 定义不带序号的定理环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\theoremstyle{definition} \newtheorem{law}{Law}
\theoremstyle{plain} \newtheorem{jury}[law]{Jury}
\theoremstyle{remark} \newtheorem*{mar}{Margaret}

\begin{law}\label{law:box}
Don't hide in the witness box.
\end{law}
\begin{jury}[The Twelve]
It could be you! So beware and
see law~\ref{law:box}.\end{jury}
\begin{jury}
You will disregard the last
statement.\end{jury}
\begin{mar}No, No, No\end{mar}
\begin{mar}Denis!\end{mar}

证明环境和证毕符号

amsthm 还提供了一个 proof 环境用于排版定理的证明过程。proof 环境末尾自动加上一个证毕符号:

1
2
3
4
5
6
7
\begin{proof}
For simplicity, we use
\[
E=mc^2
\]
That's it.
\end{proof}

如果行末是一个不带编号的公式, 符号会另起一行,这时可使用 \qedhere 命令将符号放在公式末尾:

1
2
3
4
5
6
\begin{proof}
For simplicity, we use
\[
E=mc^2 \qedhere
\]
\end{proof}
This post is licensed under CC BY 4.0 by the author.

LaTex 文档元素

LaTex 排版样式