4. 排版数学公式 #
4.1 AMS 宏集 #
AMS 宏集扩展了 LaTeX 的数学排版功能:
| 宏包 | 主要用途 |
|---|---|
amsmath |
多行公式、公式编号、数学文字等。 |
amsfonts |
AMS 数学字体。 |
amssymb |
扩展数学符号,并加载 amsfonts。 |
amsthm |
定理样式和证明环境。 |
下面是本章的完整起点:
\documentclass[UTF8,fontset=fandol]{ctexart}
\usepackage{amsmath,amssymb}
\begin{document}
勾股定理是 $a^2+b^2=c^2$。
\end{document}
除特别说明外,本章片段都使用这个导言区。本章使用传统 AMS 数学字体方案;unicode-math 在第 5 章单独介绍,不要把两套数学字体配置直接叠加。
4.2 公式排版基础 #
4.2.1 行内和行间公式 #
行内公式放在 $...$ 或 \(...\) 中;不编号的行间公式用 \[...\]:
半径为 $r$ 的圆,其面积为 $S=\pi r^2$。
一元二次方程的求根公式为
\[
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}.
\]
公式仍是句子的一部分,应按语义保留标点。行内公式的分式和巨算符通常更紧凑,以适应文字行高。
编号公式使用 equation:
\begin{equation}
E=mc^2
\label{eq:energy}
\end{equation}
公式~\eqref{eq:energy} 给出质量与能量的关系。
\eqref 自动加圆括号。\tag{A} 可指定显示的编号;\notag 取消编号。equation* 与 \[...\] 都可输出无编号公式。
不要再在 equation 内加 $ 或 \[,也不要用原始 TeX 的 $$...$$ 代替 LaTeX 行间环境。
4.2.2 数学模式 #
数学模式忽略普通空格,不允许空白段落,字母按变量排版。在公式里添加文字使用 \text:
\[
x^2\geq 0 \qquad \text{对任意 }x\in\mathbb{R}.
\]
不要把整段中文包进数学模式。单个 equation 或 \[...\] 中也不能随意用 \\ 换行,多行结构要使用专门环境。
4.3 数学符号 #
4.3.1 一般符号 #
希腊字母使用 \alpha、\beta、\gamma 等;大写形式如 \Gamma、\Delta、\Omega。\infty 表示无穷。
\dots 适合逗号分隔的序列,\cdots 适合加法等表达式,矩阵中还有 \vdots、\ddots:
\[
a_1,a_2,\dots,a_n
\qquad
a_1+a_2+\cdots+a_n.
\]
4.3.2 指数、上下标和导数 #
^ 和 _ 分别表示上标、下标,只作用于后面的一个符号或分组:
\[
a_{ij},\quad x^{10},\quad e^{x^2},\quad
f'(x),\quad f''(x).
\]
x^10 不等于 x^{10}。文字性下标可以用 \mathrm{max},包含完整词语或中文时用 \text{最大值}。导数撇号本身已是上标,附加上标通常放在撇号后,如 f''^{\,2}。
4.3.3 分式和根式 #
| 命令 | 作用 |
|---|---|
\frac{a}{b} |
分式,尺寸适应当前位置。 |
\dfrac{a}{b} |
强制行间尺寸。 |
\tfrac{a}{b} |
强制行内尺寸。 |
\sqrt{x}、\sqrt[3]{x} |
平方根、立方根。 |
\binom{n}{k} |
二项式系数。 |
\[
\binom{n}{k}
=\binom{n-1}{k}+\binom{n-1}{k-1},
\qquad \sqrt{x^2+y^2}.
\]
行内大量使用 \dfrac 会撑大行距;简单分数有时用 1/2 更合适。
4.3.4 关系符 #
常见关系包括 \neq、\leq、\geq、\approx、\equiv、\propto 和 \sim。amssymb 还提供 \leqslant 等扩展形式。
\stackrel{*}{\approx} 把星号叠到关系符上;AMS 的 \overset 和 \underset 可作更一般的上下标记。根据数学含义选择符号,不要仅因为外形相似而替换。
4.3.5 算符 #
乘除使用 \times、\cdot、\div,不要把字母 x 当乘号。函数名用 \sin、\log、\exp、\det、\lim 等命令,才能得到正体和正确间距。
\[
\lim_{x\to 0}\frac{\sin x}{x}=1,
\qquad a\bmod b,
\qquad x\equiv a\pmod b.
\]
额外的函数名在导言区定义:
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}
星号形式允许条件像极限那样排在算符下方。定义后,在数学模式中使用 \rank A、\argmax_x f(x)。
4.3.6 巨算符 #
\sum、\prod、\int、\oint 等会根据行内、行间模式改变大小和上下标位置:
\[
\sum_{k=1}^{n}k=\frac{n(n+1)}{2},
\qquad
\int_0^1 x^2\,\mathrm{d}x=\frac{1}{3}.
\]
\limits 把上下标移到算符上下,\nolimits 放到右侧。一般先接受默认结果,尤其不要随意撑高行内公式。
\substack 可以在求和条件中换行:
\[
\sum_{\substack{1\leq i\leq n\\1\leq j\leq n}} a_{ij}.
\]
需要控制条件的左右对齐时,可以使用 subarray。
4.3.7 数学重音和上下括号 #
\hat{x}、\bar{x}、\vec{x}、\dot{x}、\ddot{x} 是常用重音。多个字母可使用 \widehat{AB}、\overline{AB} 或 \overrightarrow{AB}。
重音一般作用于变量本身,例如 \bar{x}_0,而不是把下标也包进 \bar{x_0}。
\[
\underbrace{a+\cdots+a}_{n\text{ 项}}=na.
\]
\overbrace 在上方加括号,\underbrace 在下方加括号,分别用上标或下标写注解。
4.3.8 箭头 #
\to、\rightarrow、\leftarrow、\mapsto 适合常见箭头。带说明、可伸长的箭头由 AMS 提供:
\[
A\xrightarrow[\text{条件}]{f}B.
\]
必选参数放在上方,可选参数放在下方。长说明会影响箭头宽度。
4.3.9 括号和定界符 #
普通括号可直接输入;打印花括号要用 \{ 和 \}。\left、\right 根据内容自动调整大小:
\[
\left(\frac{a}{b}\right)^2,
\qquad
\left.\frac{\partial f}{\partial t}\right|_{t=0}.
\]
点表示不可见的定界符。\left 和 \right 必须成对,不能跨多行公式的换行点。需要固定尺寸时可用 \bigl/\bigr、\Bigl/\Bigr 等。
绝对值用 \lvert x\rvert,范数用 \lVert v\rVert,有助于明确左右定界符的角色。
4.4 多行公式 #
4.4.1 长公式折行 #
优先在关系符、加减号等有意义的位置换行。单个长公式用 multline:
\begin{multline}
p(x)=a_0+a_1x+a_2x^2+a_3x^3\\
+a_4x^4+a_5x^5+a_6x^6.
\end{multline}
首行靠左、末行靠右、中间行居中,整体一个编号。无编号用 multline*。最后一行不加 \\,避免多出空行。
4.4.2 多行公式 #
align 用 & 指定对齐点,通常放在等号前:
\begin{align}
(a+b)^2 &= a^2+2ab+b^2 \label{eq:plus}\\
(a-b)^2 &= a^2-2ab+b^2 \label{eq:minus}
\end{align}
每行默认都有编号,\notag 取消某一行编号,align* 全部不编号。不要用旧的 eqnarray 代替,它的关系符间距和编号处理不如 AMS 环境。
不需要对齐点,只想逐行居中时用 gather。一行多组公式时,align 中既要标出每组内部的对齐点,也要用 & 分隔各组。
4.4.3 公用编号的多行公式 #
多行共用一个编号时,在 equation 内使用 aligned:
\begin{equation}
\begin{aligned}
(a+b)^2 &= (a+b)(a+b)\\
&= a^2+2ab+b^2.
\end{aligned}
\label{eq:expansion}
\end{equation}
gathered 是逐行居中的内部环境;split 适合在一个公式中按单个对齐点拆行。不要把 align 再套进 equation。
4.5 数组和矩阵 #
array 类似数学模式里的 tabular,需要列格式。AMS 的矩阵环境则不写列格式,直接用 & 分列、\\ 分行:
\[
A=\begin{pmatrix}
1 & 2\\
3 & 4
\end{pmatrix},
\qquad
\det A=\begin{vmatrix}
1 & 2\\
3 & 4
\end{vmatrix}=-2.
\]
\[
|x|=\begin{cases}
-x & \text{若 }x<0,\\
x & \text{若 }x\geq 0.
\end{cases}
\]
| 环境 | 定界符 |
|---|---|
matrix |
无。 |
pmatrix、bmatrix、Bmatrix |
圆括号、方括号、花括号。 |
vmatrix、Vmatrix |
单竖线、双竖线。 |
cases |
左侧花括号,适合分段函数。 |
行内小矩阵可用 smallmatrix。矩阵中的大分式可能需要 \\[6pt] 增加某行下方的距离;不要为了“撑开”矩阵插入空行。
4.6 公式中的间距 #
间距首先由符号的角色决定。手工调整只用于局部:
| 命令 | 间距 |
|---|---|
\, |
小正间距。 |
\:、\; |
中、较大正间距。 |
\! |
小负间距。 |
\quad、\qquad |
一倍、两倍 em 量级的间距。 |
积分微元通常写 f(x)\,\mathrm{d}x。多重积分优先用 \iint、\iiint、\idotsint,不必手工连写积分号再反复调整负间距。
4.7 数学符号的字体控制 #
4.7.1 数学字母字体 #
| 命令 | 样式或用途 |
|---|---|
\mathrm{d} |
正体,例如微分符号。 |
\mathit{ABC} |
数学字母斜体。 |
\mathbf{A} |
加粗直立字母。 |
\mathsf{A}、\mathtt{A} |
无衬线、等宽字母。 |
\mathcal{F} |
花体,默认主要支持大写。 |
\mathbb{R} |
双线字母,需要 amssymb 或相应字体支持。 |
\mathfrak{g} |
Fraktur 字母,需要相应 AMS 字体支持。 |
这里的字体命令不等同于正文的 \textbf、\textit。数学字体通常表达语义,例如向量、矩阵、数集,全文应保持一致。
4.7.2 加粗的数学符号 #
\mathbf 不能普遍加粗希腊字母。使用 amsmath 的 \boldsymbol,或加载 bm 后使用 \bm:
\[
\mu,\quad \boldsymbol{\mu},\quad
M,\quad \boldsymbol{M}.
\]
效果还取决于字体是否有对应的粗体字形。不要把本节的传统字体宏包原样混入 unicode-math 配置。
4.7.3 数学符号的尺寸 #
四种尺寸为 \displaystyle、\textstyle、\scriptstyle、\scriptscriptstyle,分别对应行间、行内、上下标及更小的上下标。
\[
\frac{1}{\displaystyle\sum_{k=1}^n a_k}.
\]
上例把分母中的求和改成行间样式。覆盖自动尺寸前先检查效果:变大不一定更易读,也可能造成拥挤。
4.8 定理环境 #
4.8.1 LaTeX 原始的定理环境 #
LaTeX 没有默认的 theorem 环境,需要先定义。以下放在导言区:
\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{引理}
第一行让定理按节编号;第二行让引理与定理共用计数器。两种可选参数的位置和作用不同,不能同时给同一定义指定两种编号方案。
4.8.2 amsthm 宏包 #
amsthm 提供定理样式和无编号定义。下面是一套完整的替代设置,不要与上面的同名定义同时使用:
% 导言区,放在 amsmath 之后
\usepackage{amsthm}
\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{引理}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{定义}
\theoremstyle{remark}
\newtheorem*{remark}{注}
\renewcommand{\proofname}{证明}
plain 用于定理型内容,definition 用于定义,remark 用于注释;样式影响其后创建的环境。
4.8.3 证明环境和证毕符号 #
\section{一个简单结论}
\begin{theorem}[平方的非负性]\label{thm:square}
对任意实数 $x$,都有 $x^2\geq 0$。
\end{theorem}
\begin{proof}
当 $x\geq 0$ 时,$x^2=x\cdot x\geq 0$。
当 $x<0$ 时,$-x>0$,且 $x^2=(-x)^2\geq 0$。
\end{proof}
proof 自动添加证毕符号。如果证明以行间公式结束,可以将 \qedhere 放在最后一个公式里,避免符号单独另起一行。\qedsymbol 可以改变符号外观。
4.9 符号表 #
下面列出常用符号及其宏包依赖,命令都在数学模式中使用。
4.9.1 LaTeX 普通符号 #
| 类别 | 常用命令 |
|---|---|
| 逻辑 | \forall、\exists、\neg、\land、\lor。 |
| 集合 | \in、\notin、\subseteq、\cup、\cap、\emptyset。 |
| 运算 | \pm、\mp、\times、\cdot、\otimes。 |
| 关系 | \neq、\leq、\geq、\approx、\equiv。 |
| 箭头 | \to、\mapsto、\Rightarrow、\Leftrightarrow。 |
| 其他 | \partial、\nabla、\infty、\ell。 |
4.9.2 AMS 符号 #
加载 amssymb 后还可使用 \varnothing、\nexists、\leqslant、\geqslant、\therefore、\because、\square 和 \blacksquare 等。
不要为了一个符号加载大量重叠的符号宏包。需要查阅更完整的符号表时,可以使用发行版文档 texdoc symbols-a4,同时核对符号的宏包依赖。