3 排版数学公式
3.1 宏包
- amsmath宏包:多行公式的排版;
- amsfonts宏包以及基于它的amssymb宏包提供了丰富的数学符号;
- amsthm宏包:扩展了Latex定理证明格式。
3.2 公式排版基础
3.1.1 行内和行间公式
- 数学公式有两种排版公式:
- 与文字混排,称为行内公式;
- 由一对$符号包裹
- 单独列为一行排版,称为行间公式。
- 由equation环境包裹
- 该环境为公式自动生成一个编号,这个编号可以用\label和\ref生成交叉引用。
- amsmath的\eqref命令可以为引用自动加上圆括号;
- \tag命令手动修改公式的编号;
- \notag命令取消公式编码。
- 将公式用命令 \[ 和 \] 包裹行间公式,将不带编号;
- 行间公式的对齐、编号位置等性质由文档类选项控制:
- 文档类的fleqn选项令行间公式左对齐;
- 文档类的Leqno选项令编号放在公式左边。
1 \documentclass{article} 2 \usepackage{amsmath,amsfonts,amssymb,amsthm}%数学公式宏包 3 \begin{document} 4 The Pythagorean theorem is $a^2 + b^2 = c^2$.%两个$符号直接引用 5 6 The Pythagorean theorem is: 7 \begin{equation} %equation环境自动带编号 8 a^2 + b^2 = c^2 \label{pythagorean} 9 \end{equation} 10 11 Equation \eqref{pythagorean} is called `Gougu theorem' in Chinese. 12 13 It's wrong to say 14 \begin{equation} 15 1 + 1 = 3 \tag{tagname} 16 \end{equation} 17 or 18 \begin{equation} 19 1 + 1 = 4 \notag %equation环境自动带编号,\notag命令去掉带编号的命令 20 \end{equation} 21 22 \begin{equation*}%带星号的equation环境 23 a^2 + b^2 = c^2 24 \end{equation*} 25 26 \begin{equation}%未带星号的equation环境 27 a^2 + b^2 = c^2 28 \end{equation} 29 30 For short: 31 \[ a^2 + b^2 = c^2 \] 32 33 Or if you like the long one: 34 \begin{displaymath} 35 a^2 + b^2 = c^2 36 \end{displaymath} 37 38 In text: 39 $\displaystyle\lim_{n \to \infty}\sum_{k=1}^n \dfrac{1}{k^2} = \dfrac{\pi^2}{6}$. 40 In display: 41 \[ 42 \lim_{n \to \infty}\sum_{k=1}^n \dfrac{1}{k^2} = \dfrac{\pi^2}{6} 43 \] 44 \end{document}
3.2.2 数学模式
- 使用$开启行内公式输入,或时使用\[命令、equation环境时,latex就进入了数学模式;
- 数学模式相比于文本模式由以下特点:
- 输入的空格会被忽略。需要认为引入间距时,使用\quad和\qquad等命令;
- 不允许有空行(分段)。
- 所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。如果想在数学公式中输入正体的文本,
- 简单情况可以使用\mathrm命令;
- 用amsmath提供的\text命令。
1 \documentclass{article} 2 \usepackage{amsmath,amsfonts,amssymb,amsthm}%数学公式宏包 3 \begin{document} 4 $x^{2} \geq 0 \qquad\text{for \textbf{all} }x\in\mathbb{R}$ 5 \end{document}
3.3 数学符号
latex默认提供了常用的数学符号,amssymb宏包提供了一些次常用的符号。
3.3.1 一般符号
- 希腊字母符号的名称就是其英文名称,如α(\alpha)、β(\beta) 等等;
- 大写的希腊字母为首字母大写的命令,如Γ(\Gamma)、Δ(\Delta) 等等;
- 无穷大符号为∞(\infty);
- 省略号有...(\dots) 和…(\cdots) 两种形式;
- \ldots 和\dots 是完全等效的,它们既能用在公式中,也用来在文本里作为省略号;
- 在矩阵中可能会用到竖排的...(\vdots) 和斜排的...(\ddots)。
3.3.2 指数、上下标和导数
- 在latex中用^和_标明上下标;
- 注意:上下标的内容(子公式)一般需要用花括号包裹,否则上下标只对后面的一个符号起作用。
- 导数符号'是一类特殊的上标,可以适当连用表示多阶导数,也可以在其后连用上标。
\documentclass{article} \usepackage{amsmath,amsfonts,amssymb,amsthm}%数学公式宏包 \begin{document} $p^3_{ij} \qquad m_\mathrm{Knuth}\qquad \sum_{k=1}^3 k $ $a^x+y \neq a^{x+y}\qquad e^{x^2} \neq {e^x}^2$ $f(x) = x^2 \quad f'(x) = 2x \quad f''^{2}(x) = 4 \quad f^{(2)}(x) = 4$ \end{document}
3.3.3 分式和根式
- 分式使用\frac{分子}{分母}来书写。
- amsmath宏包提供了方便的命令\dfrac和\tfrac,令用户能够在行内使用正常大小的分式,或是反过来。
- 分式的大小在行间公式中是正常大小,而在行内被极度压缩。一般的根式使用\sqrt{…};表示n次方根时写成\sqrt[n]{…}。
- 特殊的分式形式,如二项式结构,由amsmath宏包的\binom命令生成。
\documentclass{article} \usepackage{amsmath,amsfonts,amssymb,amsthm}%数学公式宏包 \begin{document} 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{x} \Leftrightarrow x^{1/2} \quad \sqrt[3]{2} \quad \sqrt{x^{2} + \sqrt{y}}$ Pascal's rule is \[ \binom{n}{k} =\binom{n-1}{k} + \binom{n-1}{k-1} \] \end{document}
3.3.4 关系符
latex还提供了自定义二元关系符分命令\stackrel,用于将一个符号叠加在原有的二元关系符之上 \[ f_n(x) \stackrel{*}{\approx} 1 \] ;效果如下图:
3.3.5 算符
- 常用的有乘号× (\times)、除号÷ (\div)、点乘· (\cdot)、加减号± (\pm) / ∓(\mp) 等等;
- ∇ (\nabla) 和@ (\partial) 也是常用的算符,虽然它们不属于二元算符。
3.3.6 巨算符
- 积分号∫(\int)、求和号∑(\sum) 等符号称为巨算符;巨算符在行内公式和行间公式的大小和形状有区别。
- 巨算符的上下标位置可由\limits 和\nolimits 调整:
- 前者令巨算符类似lim 或求和算符∑,上下标位于上下方;
- 后者令巨算符类似积分号,上下标位于右上方和右下方。
- amsmath 宏包还提供了\substack,能够在下限位置书写多行表达式;subarray 环境更进一步,令多行表达式可选择居中(c) 或左对齐(l)。
1 \documentclass{article} 2 \usepackage{amsmath,amsfonts,amssymb,amsthm}%数学公式宏包 3 \begin{document} 4 In text: 5 $\sum_{i=1}^n \quad \int_0^{\frac{\pi}{2}} \quad \oint_0^{\frac{\pi}{2}} \quad \prod_\epsilon $ \\ 6 In display: 7 \[\sum_{i=1}^n \quad \int_0^{\frac{\pi}{2}} \quad \oint_0^{\frac{\pi}{2}} \quad \prod_\epsilon \] 8 9 In text: 10 $\sum\limits_{i=1}^n \quad \int\limits_0^{\frac{\pi}{2}} \quad \prod\limits_\epsilon $ \\ 11 In display: 12 \[\sum\nolimits_{i=1}^n \quad \int\limits_0^{\frac{\pi}{2}} \quad \prod\nolimits_\epsilon \] 13 14 \[ \sum_{\substack{0\le i\le n \\ 15 j\in \mathbb{R}}} P(i,j) = Q(n) \] 16 \[ 17 \sum_{ 18 \begin{subarray}{l} 19 0\le i\le n \\ 20 j\in \mathbb{R} 21 \end{subarray} 22 } 23 P(i,j) = Q(n) 24 \] 25 \end{document}
3.3.7 数学重音和上下括号
- \overbrace 和 \underbrance 命令用来生成上/下括号,各自可带一个上/下标公式。
- $\underbrace{\overbrace{(a+b+c)}^6 \cdot \overbrace{(d+e+f)}^7} _\text{meaning of life} = 42$
- $\underbrace{\overbrace{(a+b+c)}^6 \cdot \overbrace{(d+e+f)}^7} _\text{meaning of life} = 42$
3.3.8 箭头
- amsmath 的\xleftarrow 和\xrightarrow 命令提供了长度可以伸展的箭头,并且可以为箭头增加上下标:
- 1 \[ a\xleftarrow{x+y+z} b \] 2 \[ c\xrightarrow[x<y]{a*b*c}d \]
3.3.9 括号和定界符
- 定界符大小的调整(\big,\bigg,\bigl,\biggl,\bigr,\biggr等)
1 $\Bigl((x+1)(x-1)\Bigr)^{2}$ 2 3 $\bigl( \Bigl( \biggl( \Biggl( \quad \bigr\} \Bigr\} \biggr\} \Biggr\} \quad \big\| \Big\| \bigg\| \Bigg\| \quad \big\Downarrow \Big\Downarrow \bigg\Downarrow \Bigg\Downarrow$
3.4 多行公式
3.4.1 长公式折行
- amsmath宏包的multline环境提供了书写折行长公式的方便环境;
- 它允许\\折行,将公式编号放在最后一行;
- 多行公式的首行左对齐,末行右对齐,其余行居中;
- 公式的最后一行不写\\,如果写了,反倒会产生一个多余的空行。
3.4.2 多行公式
- align环境,将公式用&隔为两部分并对齐,分隔符通常放在等号左边;
- align环境会给每行公式都编号,可以用\notag去掉某行的编号;
- 为了对齐等号,我们可以将分隔符放在右侧,并且此时需要在等号后添加一对括号{}以产生正常的间距;
- align还能够对齐多组公式,除等号前的&之外,公式之间也用&分隔;
- 如果不需要按等号对齐,只需罗列数个公式,gather将是一个很好用的环境。
1 \documentclass{article} 2 \usepackage{amsmath,amsfonts,amssymb,amsthm}%数学公式宏包 3 \begin{document} 4 5 \begin{align} 6 a & = b + c \\ 7 & = d + e 8 \end{align} 9 10 \begin{align} 11 a ={} & b + c \\ 12 ={} & d + e + f + g + h + i + j + k + l \notag \\ 13 & + m + n + o \\ 14 ={} & p + q + r + s 15 \end{align} 16 17 \begin{align} 18 a &=1 & b &=2 & c &=3 \\ 19 d &=-1 & e &=-2 & f &=-5 20 \end{align} 21 22 \begin{gather} 23 a = b + c \\ 24 d = e + f + g \\ 25 h + i = j + k \notag \\ 26 l + m = n 27 \end{gather} 28 29 \end{document}
3.4.3 公用编号的多行公式
- 将多个公式组在一起公用一个编号,编号位于公式的居中位置:
- amsmath宏包提供了诸多aligned、gathered等环境,与equation环境套用。
- 以-ed结尾的环境用法与前一节不以-ed结尾的环境用法一一对应。
- 和aligned环境用法类似
- 用于和equation环境套用;
- 区别:split只能将每行的一个公式分两栏,aligned允许每行多个公式多栏。
以aligned举例:
1 \begin{equation} 2 \begin{aligned} 3 a &= b + c \\ 4 d &= e + f + g \\ 5 h + i &= j + k \\ 6 l + m &= n 7 \end{aligned} 8 \end{equation}
3.5 数组和矩阵
- 排版二维数组,提供array环境:
- 用法与tabular环境极为类似;
- 需要定义列格式,并用\\换行;
- 数组可作为一个公式块,在外套用\left、\rigt等定界符。
- 可以利用空的定界符排版除大括号方程组的效果(同cases环境效果相同)。
- 不带定界符的matrix,以及带各种定界符的矩阵pmatrix,bmatrix,Bmatrix,vmatrix,Vmatrix,使用这些环境,无需给定列格式。