4. 排版数学公式

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\simamssymb 还提供 \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}
两个分别编号的恒等式,以及两行共用一个编号的展开过程。
align 每行编号;equation 配合 aligned 共用一个编号。 下载 LaTeX 源码

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}
\]
二阶矩阵、行列式等于负二,以及绝对值的分段定义。
矩阵单元格已经处于数学模式;分段条件中的中文用 text。 下载 LaTeX 源码
环境 定界符
matrix 无。
pmatrixbmatrixBmatrix 圆括号、方括号、花括号。
vmatrixVmatrix 单竖线、双竖线。
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,同时核对符号的宏包依赖。

← 文档元素 · 下一章:排版样式设定 →

来源与许可