数学公式排版

当 Donald Knuth 开始开发原始 TeX 系统时,他最重要的动机之一是创建一个能简便构建数学公式的工具,同时打印出来时也具有专业的外观。他的成功很可能是 TeX(后来是 LaTeX)在科学界广受欢迎的原因之一。数学排版是 LaTeX 的最大优点之一。由于数学符号的种类繁多,这也是一个庞大的话题。

如果您的文档只需要几个简单的数学公式,LaTeX 本身提供的大部分工具就足够了。如果您正在写一篇包含众多复杂公式的科学文档,amsmath 宏包引入了几条比基本 LaTeX 提供的更强大、更灵活的新命令。而 mathtools 宏包修复了一些 amsmath 的小问题,并向 amsmath 添加了一些有用的设置、符号和环境。要使用这两个宏包之一,只需在文档的导言部分加入:

\usepackage{amsmath}

或者

\usepackage{mathtools}

mathtools 宏包会自动加载 amsmath 宏包,因此如果使用 mathtools,就不需要单独加载 amsmath

数学环境

LaTeX 需要知道何时是数学模式。这是因为 LaTeX 排版数学符号的方式与正常文本不同。因此,为此目的已声明了特殊的环境。根据公式呈现的方式,可以将其分为两类:

  • 内联(text)— 数学公式显示为行内公式,即在文本体内声明,例如,我可以在这句话中写:
    a + a = 2 a a + a = 2a

  • 显示(displayed)— 显示的公式会单独占据一行。

由于数学需要特殊的环境,自然有适当的环境名称可以按标准方式使用。然而,与大多数其他环境不同,声明公式时有一些简便的方式。以下是它们的总结:

类型 内联公式(文本内) 显示公式 显示并自动编号的公式
环境 math displaymath equation
LaTeX 简写 . . . ... . . . ...
TeX 简写 $...$ . . . ...
备注 equation*(星号版本)抑制编号,但需要 amsmath

建议:避免使用 $$...$$,因为这可能导致问题,特别是与 AMS-LaTeX 宏相关。发生问题时,错误息可能并不有用。

equation*displaymath 环境在功能上是等价的。

如果你在正常的文本模式中输入,你就处于文本模式,但在数学环境中输入时,你就进入了数学模式,这与文本模式有一些区别:

  • 大多数空格和换行没有任何意义,因为所有空格都要么从数学表达式中推导出来,要么必须通过特殊命令如 \quad 来指定。

  • 不允许空行。每个公式只能是一个段落。

  • 每个字母被视为变量名,并按此排版。如果你想在公式中输入普通文本(使用正常的直立字体和间距),你必须使用专门的命令。

在文本块中插入显示公式

为了使一些操作符(如 lim \lim \sum )在某些数学环境中正确显示(例如 $...$),可能需要在环境内写 \displaystyle 类别。这样做可能会导致行变得更高,但会确保某些数学操作符的指数和下标正确显示。例如,$\sum$ 会打印一个较小的 Σ,而 $\displaystyle \sum$ 会打印一个更大的 Σ。

你可以通过在导言部分声明 \everymath{\displaystyle} 来强制所有数学环境中都使用这种行为。

符号

数学有许多符号!以下是可以直接从键盘访问的一组符号:

    • = ! / egg [ ] < > | ' : *

除了这些符号之外,还需要使用不同的命令来显示所需的符号。比如希腊字母、集合和关系符号、箭头、二元运算符等。

例如:

\forall x \in X, \quad \exists y \leq \epsilon

会显示为:

x X , y ϵ \forall x \in X, \quad \exists y \leq \epsilon

幸运的是,有一个工具可以大大简化查找特定符号命令的过程。可以在下方的外部链接部分查找 "Detexify"。另一个选择是查看 "The Comprehensive LaTeX Symbol List"。

希腊字母

希腊字母在数学中经常使用,并且在数学模式下非常容易输入。你只需要在反斜杠后输入字母的名称:如果第一个字母是小写的,你将得到小写的希腊字母;如果第一个字母是大写的(且仅限第一个字母),你将得到大写字母。需要注意的是,一些大写的希腊字母看起来像拉丁字母,因此它们没有在 LaTeX 中提供(例如,大写的 Alpha 和 Beta 只是 "A" 和 "B")。小写字母 epsilon, theta, kappa, phi, pi, rho 和 sigma 提供了两种不同的版本。通过在字母名称前加上 "var" 可以创建变体版本:

\alpha, \Alpha, \beta, \Beta, \gamma, \Gamma, \pi, \Pi, \phi, \varphi, \mu, \Phi

例如:

α \alpha , A A , β \beta , B B , γ \gamma , Γ \Gamma , π \pi , Π \Pi , ϕ \phi , φ \varphi , μ \mu , Φ \Phi

操作符

操作符是作为单词书写的函数:例如三角函数(sin, cos, tan)、对数和指数(log, exp)、极限(lim),以及迹和行列式(tr, det)。LaTeX 定义了许多这样的命令:

\cos (2\theta) = \cos^2 \theta - \sin^2 \theta
$$ \cos (2\theta) = \cos^2 \theta - \sin^2 \theta $$

对于某些操作符,如极限,下标放在操作符下方:

\lim\limits_{x \to \infty} \exp(-x) = 0
$$\lim\limits_{x \to \infty} \exp(-x) = 0$$

对于模运算符,LaTeX 提供了两个命令:\bmod\pmod

a \bmod b
$$a \bmod b$$
x \equiv a \pmod{b}
$$x \equiv a \pmod{b}$$

如果需要使用没有预定义的操作符,例如 argmax,可以参见自定义操作符。

幂和指数

幂和指数等同于正常文本模式中的上标和下标。使用插入符号(^;也称为插入符号)来提升某个字符,使用下划线(_)来降低。若一个表达式包含多个字符并且需要升高或降低,应该使用大括号 {} 将其分组。

k_{n+1} = n^2 + k_n^2 - k_{n-1}
$$k_{n+1} = n^2 + k_n^2 - k_{n-1}$$

对于包含多个数字的幂,要用大括号包围幂:

x^{1.01}
$$x^{1.01}$$

下划线(_)可以与竖线(|)一起用于数学中表示评估:

f(n) = n^5 + 4n^2 + 2 |_{n=17}
$$f(n) = n^5 + 4n^2 + 2 |_{n=17}$$

分数和二项式

使用 \frac{numerator}{denominator} 命令来创建分数(对于需要记住的内容,分别是分子和分母!)。类似地,可以使用 \binom 命令写出二项式系数(即 "选择" 函数):

\frac{n!}{k!(n-k)!} = \binom{n}{k}
$$\frac{n!}{k!(n-k)!} = \binom{n}{k}$$

您还可以在分数中嵌套分数:

\frac{\frac{1}{x}+\frac{1}{y}}{y-z}
$$\frac{\frac{1}{x}+\frac{1}{y}}{y-z}$$

请注意,当出现在另一个分数内部或内联文本中时,分数明显比在显示数学模式中的要小。\tfrac\dfrac 命令强制使用相应的样式(\textstyle\displaystyle)。类似地,\tbinom\dbinom 命令排版二项式系数。

对于相对简单的分数,特别是在文本中,使用幂和指数可能更美观:

^3/_7
$$^3/_7$$

如果这看起来有点 "松散"(即,间距过大),可以通过插入一些负空间来调整:

\newcommand*\rfrac[2]{{}^{#1}\!/_{#2}}
\rfrac{3}{7}
$$\newcommand*\rfrac[2]{{}^{#1}\!/_{#2}} \rfrac{3}{7}$$

如果您在整个文档中使用这种方式,建议使用 xfrac 宏包。这个宏包提供了 \sfrac 命令来创建倾斜的分数。使用方法:

\usepackage{xfrac}
$$\usepackage{xfrac}$$

分数和二项式

如需创建分数,可以使用 \frac{numerator}{denominator} 命令(分子和分母分别是顶部和底部!)。类似地,二项式系数(也就是“选择”函数)可以使用 \binom 命令来表示:

\frac{n!}{k!(n-k)!} = \binom{n}{k}
$$\frac{n!}{k!(n-k)!} = \binom{n}{k}$$

您还可以在分数中嵌套分数:

\frac{\frac{1}{x}+\frac{1}{y}}{y-z}
$$\frac{\frac{1}{x}+\frac{1}{y}}{y-z}$$

请注意,当分数出现在另一个分数内,或在内联文本中时,它明显比在显示数学模式中的要小。 \tfrac\dfrac 命令强制使用相应的样式(\textstyle\displaystyle)。类似地, \tbinom\dbinom 命令排版二项式系数。

对于相对简单的分数,特别是在文本中,使用幂和指数可能更美观:

^3/_7
$$^3/_7$$

如果看起来有点“松散”(即,间距过大),可以通过插入一些负空间来调整:

\newcommand*\rfrac[2]{{}^{#1}\!/_{#2}}
\rfrac{3}{7}
$$\newcommand*\rfrac[2]{{}^{#1}\!/_{#2}} \rfrac{3}{7}$$

如果您在整个文档中使用这种方式,建议使用 xfrac 宏包。这个宏包提供了 \sfrac 命令来创建倾斜的分数。

连分数

连分数应使用 \cfrac 命令来书写:

\begin{equation}
  x = a_0 + \cfrac{1}{a_1 
          + \cfrac{1}{a_2 
          + \cfrac{1}{a_3 + \cfrac{1}{a_4} } } }
\end{equation}
$$\begin{equation} x = a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cfrac{1}{a_3 + \cfrac{1}{a_4} } } } \end{equation}$$

两个数字的乘法

为了使乘法的形式类似于分数,可以使用嵌套数组。例如,数字上下排列的乘法可以按如下方式排版:

\begin{equation}
\frac{
    \begin{array}[b]{r}
      \left( x_1 x_2 \right)\\
      \times \left( x'_1 x'_2 \right)
    \end{array}
  }{
    \left( y_1y_2y_3y_4 \right)
  }
\end{equation}
$$\begin{equation} \frac{ \begin{array}[b]{r} \left( x_1 x_2 \right)\\ \times \left( x'_1 x'_2 \right) \end{array} }{ \left( y_1y_2y_3y_4 \right) } \end{equation}$$

根号

\sqrt 命令用于创建包含表达式的平方根。它接受一个可选的方括号参数([]),用于改变根号的大小:

\sqrt{\frac{a}{b}}
\[\sqrt{\frac{a}{b}}\]

如果需要更高次的根号,可以使用以下语法:

\sqrt[n]{1+x+x^2+x^3+\dots+x^n}
$$\sqrt[n]{1+x+x^2+x^3+\dots+x^n}$$

书写多重根号

对于根号的特殊书写,可以调整根号“关闭”的方式,尤其是在电脑排版时不常使用,但若想调整输出的样式,可以在文档前言中加入如下代码:

\let\oldsqrt\sqrt
\def\sqrt{\mathpalette\DHLhksqrt}
\def\DHLhksqrt#1#2{%
\setbox0=\hbox{$#1\oldsqrt{#2\,}$}\dimen0=\ht0
\advance\dimen0-0.2\ht0
\setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
{\box0\lower0.4pt\box2}}
$$\let\oldsqrt\sqrt \def\sqrt{\mathpalette\DHLhksqrt} \def\DHLhksqrt#1#2{% \setbox0=\hbox{$#1\oldsqrt{#2\,}$}\dimen0=\ht0 \advance\dimen0-0.2\ht0 \setbox2=\hbox{\vrule height\ht0 depth -\dimen0}% {\box0\lower0.4pt\box2}}$$

求和与积分

\sum\int 命令分别插入求和符号和积分符号,限制通过插入上标(^)和下标(_)来指定。常见的求和表示法为:

\sum_{i=1}^{10} t_i
$$\sum_{i=1}^{10} t_i$$

或者:

\displaystyle\sum_{i=1}^{10} t_i
$$\displaystyle\sum_{i=1}^{10} t_i$$

对于积分,表示积分变量时要使用直立的小写 d,这可以通过 \mathrm{} 命令实现,并且与被积式之间有一个小间距,使用 \, 命令添加:

\int_{a}^{b} \mathrm{d}x
$$\int_{a}^{b} \mathrm{d}x$$

积分符号

积分符号可以使用 \int 命令来插入,如下所示:

\int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x
$$\int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x$$

LaTeX 提供了许多类似的“大”命令,用法类似:

  • \sum —— 求和符号

  • \prod —— 连乘符号

  • \coprod —— 联合积符号

  • \bigoplus —— 大和符号

  • \bigotimes —— 大乘积符号

  • \bigodot —— 大点积符号

  • \bigcup —— 大并集符号

  • \bigcap —— 大交集符号

  • \biguplus —— 大联集符号

  • \bigsqcup —— 大平方联集符号

  • \bigvee —— 大或符号

  • \bigwedge —— 大与符号

  • \oint —— 闭合积分符号

  • \iint —— 二重积分符号

  • \iiint —— 三重积分符号

  • \iiiint —— 四重积分符号

  • \idotsint —— 连续积分符号

更多的积分符号,可以尝试使用 esint 宏包。

使用 \substack 命令

\substack 命令可以用来将积分或求和的限制条件分成多行:

\sum_{\substack{
   0<i<m \\
   0<j<n
  }} 
 P(i,j)
$$\sum_{\substack{ 0<i<m \\ 0<j<n }} P(i,j)$$

设置积分的上下限

如果您希望积分符号的上下限出现在符号的上下方(就像求和符号一样),可以使用 \limits 命令:

\int\limits_a^b
$$\int\limits_a^b$$

但如果您希望所有积分都采用这种样式,建议在导言区加载 amsmath 宏包并指定 intlimits 选项:

\usepackage[intlimits]{amsmath}
$$\usepackage[intlimits]{amsmath}$$

分隔符和括号

在多行公式中如何使用大括号可以参见《高级数学》章节。

当处理非平凡方程时,分隔符(如括号)变得尤为重要。如果没有适当的分隔符,公式可能会变得模糊。此外,某些数学结构(如矩阵)通常依赖分隔符来包围它们。

LaTeX 提供了多种可用于分隔符的符号:

  • \left( a \right), \left[ b \right], \left\{ c \right\}, | d |, \| e \|

  • \langle f \rangle, \lfloor g \rfloor, \lceil h \rceil, \ulcorner i \urcorner, / j \backslash

自动调整分隔符大小

很多时候,数学特性会有不同的大小,分隔符应根据情况自动变化。这可以使用 \left, \right\middle 命令来实现。以下是一个例子:

\left(\frac{x^2}{y^3}\right)
$$\left(\frac{x^2}{y^3}\right)$$

使用 {} 来控制分隔符,例如:

\left\{\frac{x^2}{y^3}\right\}
$$\left\{\frac{x^2}{y^3}\right\}$$

如果只需要一个方向上的分隔符,可以使用不可见的分隔符,表示方式为使用句点(.):

\left.\frac{x^3}{3}\right|_0^1
$$\left.\frac{x^3}{3}\right|_0^1$$

手动调整分隔符大小

在某些情况下,使用 \left\right 命令自动生成的分隔符大小可能不符合要求,或者您可能希望精细控制分隔符的大小。在这种情况下,可以使用 \big, \Big, \bigg\Bigg 等命令来调整大小:

\big( \Big( \bigg( \Bigg(
$$\big( \Big( \bigg( \Bigg($$

这些命令主要在处理嵌套的定界符时非常有用。例如,在排版时:

\frac{\mathrm d}{\mathrm d x} \left( k g(x) \right)
$$\frac{\mathrm d}{\mathrm d x} \left( k g(x) \right)$$

我们注意到,\left\right 命令会产生与嵌套其中的定界符相同大小的定界符,这可能会使得公式难以阅读。为了解决这个问题,我们可以这样写:

\frac{\mathrm d}{\mathrm d x} \big( k g(x) \big)
$$\frac{\mathrm d}{\mathrm d x} \big( k g(x) \big)$$

手动调整大小也在公式过大、超出页面边界并需要通过 align 命令分成两行的情况下非常有用。虽然可以使用 \left.\right. 命令来平衡每行的定界符,但这可能导致定界符大小不正确。此外,手动调整大小可以避免过大的定界符,尤其是在 \underbrace 或类似命令出现在定界符之间时。

矩阵和数组

可以使用 matrix 环境创建基本矩阵[note 1]:与其他类似表格结构一样,矩阵的条目通过行来指定,列之间用 & 分隔,新行用双反斜杠(\\)分隔:

\[
 \begin{matrix}
  a & b & c \\
  d & e & f \\
  g & h & i
 \end{matrix}
\]
\[ \begin{matrix} a & b & c \\ d & e & f \\ g & h & i \end{matrix} \]

要指定表格中列的对齐方式,请使用带星号的版本[note 2]:

\begin{matrix}
  -1 & 3 \\
  2 & -4
 \end{matrix}
 =
 \begin{matrix*}[r]
  -1 & 3 \\
  2 & -4
 \end{matrix*}
\[ \begin{matrix} -1 & 3 \\ 2 & -4 \end{matrix} \] = \[ \begin{matrix*}[r] -1 & 3 \\ 2 & -4 \end{matrix*} \]

默认情况下,矩阵的对齐方式是 c,但它可以是任何在 array 环境中有效的列类型。

然而,矩阵通常会被某种定界符所包围,虽然可以使用 \left\right 命令,但也有许多其他预定义的环境会自动包含定界符:

环境名称 包围定界符 备注
pmatrix[note 1] () 默认情况下居中列
pmatrix*[note 2] () 允许在可选参数中指定列的对齐方式
bmatrix[note 1] [] 默认情况下居中列
bmatrix*[note 2] [] 允许在可选参数中指定列的对齐方式
Bmatrix[note 1] {} 默认情况下居中列
Bmatrix*[note 2] {} 允许在可选参数中指定列的对齐方式
vmatrix[note 1] `
vmatrix*[note 2] `
Vmatrix[note 1] ‖‖ 默认情况下居中列
Vmatrix*[note 2] ‖‖ 允许在可选参数中指定列的对齐方式

在写下任意大小的矩阵时,通常会使用水平、垂直和对角线的省略号(三个点,称为省略符号)来填充某些列和行。这些可以通过 \cdots\vdots\ddots 来指定:

A_{m,n} = 
 \begin{pmatrix}
  a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
  a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  a_{m,1} & a_{m,2} & \cdots & a_{m,n} 
 \end{pmatrix}
$$A_{m,n} = \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix}$$

在某些情况下,您可能希望对每一列的对齐方式进行更精细的控制,或者在列或行之间插入线条。这可以通过 array 环境来实现,它本质上是 tabular 环境的数学模式版本,要求提前指定列:

\begin{array}{c|c}
  1 & 2 \\ 
  \hline
  3 & 4
 \end{array}
$$\begin{array}{c|c} 1 & 2 \\ \hline 3 & 4 \end{array}$$

您可能会发现,AMS 矩阵环境类在与分数一起使用时,空间不足,导致输出类似于这样:

M = \begin{bmatrix}
{\frac {5}{6}} & {\frac {1}{6}} & 0 \\
{\frac {5}{6}} & 0 & {\frac {1}{6}} \\
0 & {\frac {5}{6}} & {\frac {1}{6}}
\end{bmatrix}
$$M = \begin{bmatrix} {\frac {5}{6}} & {\frac {1}{6}} & 0 \\ {\frac {5}{6}} & 0 & {\frac {1}{6}} \\ 0 & {\frac {5}{6}} & {\frac {1}{6}} \end{bmatrix}$$

为了解决这个问题,可以使用 \\[0.3em]\\ 命令添加额外的前导空间:

M = \begin{bmatrix}
       \frac{5}{6} & \frac{1}{6} & 0           \\[0.3em]
       \frac{5}{6} & 0           & \frac{1}{6} \\[0.3em]
       0           & \frac{5}{6} & \frac{1}{6}
     \end{bmatrix}
$$M = \begin{bmatrix} \frac{5}{6} & \frac{1}{6} & 0 \\[0.3em] \frac{5}{6} & 0 & \frac{1}{6} \\[0.3em] 0 & \frac{5}{6} & \frac{1}{6} \end{bmatrix}$$

如果您需要在矩阵中添加“边框”或“索引”,可以使用 TeX 的 \bordermatrix 宏:

M = \bordermatrix{~ & x & y \cr
                  A & 1 & 0 \cr
                  B & 0 & 1 \cr}
$$M = \bordermatrix{~ & x & y \cr A & 1 & 0 \cr B & 0 & 1 \cr}$$

运行文本中的矩阵

要在不增加行间距的情况下插入一个小矩阵,可以使用 smallmatrix 环境:

一个文本中的矩阵必须设置得较小:

$\bigl(\begin{smallmatrix}
a&b \\ c&d
\end{smallmatrix} \bigr)$
$$\bigl(\begin{smallmatrix} a&b \\ c&d \end{smallmatrix} \bigr)$$

这样可以避免增加行间距。

在方程中添加文本

数学环境与文本环境在表示文本时有所不同。以下是试图在数学环境中表示文本的例子:

50 apples \times 100 apples = lots of apples^2

有两个明显的问题:单词或数字之间没有空格,并且字母是斜体并且间距比正常文本大。这两个问题只是数学模式的副作用,因为它将其视为数学表达式:空格被忽略(LaTeX根据自己的规则进行排版),而每个字符被当作独立元素(因此不像正常文本那样紧凑地排列)。

有几种方法可以正确地添加文本。典型的方法是使用 \text{...} 命令包围文本[note 1](类似的命令是 \mbox{...},但它会导致下标问题,并且名称不如 \text{} 具描述性)。让我们看看当上述方程代码被调整后的效果:

50 \text{apples} \times 100 \text{apples} 
 = \text{lots of apples}^2
$$50 \text{apples} \times 100 \text{apples} = \text{lots of apples}^2$$

文本看起来更好。然而,数字和单词之间仍然没有空隙。遗憾的是,您需要显式地添加这些空格。有许多方法可以在数学元素之间添加空格,但为了简便,我们可以简单地在 \text 命令中插入空格字符:

50 \text{ apples} \times 100 \text{ apples}
 = \text{lots of apples}^2
$$50 \text{ apples} \times 100 \text{ apples} = \text{lots of apples}^2$$

格式化文本

使用 \text 命令很好,并且得到了基本的结果。然而,还有一个提供更多灵活性的替代方法。您可能还记得引入字体格式化命令,例如 \textrm\textit\textbf 等。这些命令会相应地格式化其参数,例如,\textbf{bold text} 会使文本加粗。这些命令在数学环境中用于包含文本时同样有效。这里的附加好处是,您可以更好地控制字体格式,而不是仅使用 \text 命令实现标准文本。

50 \textrm{ apples} \times 100
 \textbf{ apples} = \textit{lots of apples}^2
$$50 \textrm{ apples} \times 100 \textbf{ apples} = \textit{lots of apples}^2$$

格式化数学符号

现在我们已经可以格式化文本了,那如何格式化数学表达式呢?有一组非常类似于刚才使用的字体格式化命令的格式化命令,唯一的不同是它们专门用于数学模式中的文本(需要 amsfonts 包)。

LaTeX命令 示例 描述 常见用途
\mathnormal{…} (或省略命令) A B C D E F 默认的数学字体 大多数数学符号
\mathrm{…} A B C D E F 默认字体,非斜体 测量单位、单字函数
\mathit{…} A B C D E F 斜体字体 多字母函数或变量名。与 \mathnormal 相比,单词间距更自然,数字也被斜体化。
\mathbf{…} A B C D E F 粗体字体 向量
\mathsf{…} A B C D E F 无衬线字体 类别
\mathtt{…} A B C D E F 等宽字体 (固定宽度)
\mathfrak{…} (需要 amsfontsamssymb 包) A B C D E F 法克图字体 李代数、环论中的理想等
\mathcal{…} A B C D E F 书法字体(仅限大写) 用于层叠/图式和类别,表示加密学概念如定义字母集、消息空间、密文空间和密钥空间等。
\mathbb{…} A B C D E F 黑板粗体(仅限大写) 用于表示特殊集合(例如实数集)
\mathscr{…} (需要 mathrsfs 包) 脚本字体(仅限大写) 类别和层叠的替代字体

这些格式化命令可以围绕整个方程使用,而不仅仅是文本元素:它们只格式化字母、数字和大写希腊字母,其他数学命令不受影响。

希腊字母加粗

要加粗小写希腊字母或其他符号,可以使用 \boldsymbol 命令;当当前字体中存在该符号的加粗版本时,此命令有效。作为最后的手段,可以使用 \pmb 命令(穷人版加粗):它会打印多个略微偏移的字符版本。

\boldsymbol{\beta} = (\beta_1,\beta_2,\dotsc,\beta_n)
$$\boldsymbol{\beta} = (\beta_1,\beta_2,\dotsc,\beta_n)$$

这会显示为:

β=(β1,β2,,βn){\boldsymbol {\beta }}=(\beta _{1},\beta _{2},\dotsc ,\beta _{n})

改变数学模式中的字体大小

有关如何改变数学模式中的字体大小,请参阅“改变字体大小”章节。

重音符号

当你用完符号和字体时,接下来的步骤是使用重音符号:

a' 或 a^{\prime}
aa'
a'' 
aa''
\hat{a}
a^\hat{a}
\bar{a}
aˉ\bar{a}
\grave{a}
aˋ\grave{a}
\acute{a}
aˊ\acute{a}
\dot{a}
a˙\dot{a}
\ddot{a}
a¨\ddot{a}
\not{a}
\not{a}
\mathring{a}
a˚\mathring{a}
\overrightarrow{AB}
AB\overrightarrow{AB}
\overleftarrow{AB}
AB\overleftarrow{AB}
a'''
aa'''
a''''
aa''''
\overline{aaa}
aaa\overline{aaa}
\check{a}
aˇ\check{a}
\breve{a}
a˘\breve{a}
\vec{a}
a\vec{a}
\dddot{a} 
\ddddot{a}
\widehat{AAA}
AAA^\widehat{AAA}
\widetilde{AAA}
AAA~\widetilde{AAA}
\stackrel\frown{AAA}
AAA\stackrel{\frown}{AAA}
\tilde{a}
a~\tilde{a}
\underline{a}
a\underline{a}

颜色

xcolor 包(在“颜色”部分描述)允许我们为方程添加颜色。例如:

k = {\color{red}x} \mathbin{\color{blue}-} 2
$$k = {\color{red}x} \mathbin{\color{blue}-} 2$$

这将显示为:

k=x2k = {\color {red}x}{\mathbin {\color {blue}-}}2

唯一的问题是,这会破坏默认的 LaTeX 格式,特别是 - 操作符。为了解决这个问题,我们将其放在 \mathbin 环境中,因为 - 是一个二元操作符。这个过程在这里描述。

加号和减号

LaTeX 处理加号(+)和减号(−)有两种方式。最常见的方式是作为二元操作符。当符号两边有数学元素时,LaTeX 假定它是一个二元操作符,因此会在符号两侧分配一些空间。另一种方式是符号指定。当你声明某个数学量是正数或负数时,常见的情况就是,如果一个量前面没有 符号,它默认是正数。这时,你希望符号紧贴着适当的元素显示,以显示它们之间的关联。如果你放置一个加号或减号,但没有任何符号在前面,并且希望它像二元操作符一样处理,可以通过使用 {} 来在操作符前添加一个隐形字符。这在写多行公式时很有用,例如,如果一行以减号或加号开始,可以通过添加隐形字符来修复奇怪的对齐。

加减符号写作:

\pm

这将显示为:

±\pm

同样,也有一个减加符号:

\mp

这将显示为:

\mp

控制水平间距

显然,LaTeX 在排版数学公式方面非常出色——这是 LaTeX 扩展的核心 TeX 系统的主要目标之一。然而,它并不总是能完全按照你的方式准确地解释公式。它在遇到不明确的表达式时必须做出一些假设。结果通常是稍微不准确的水平间距。在这些情况下,输出仍然令人满意,但任何追求完美的人肯定会希望微调公式,以确保间距正确。这些调整通常是非常微妙的。

还有其他情况,LaTeX 已经正确地完成了它的工作,但你只是希望添加一些空格,可能是为了加一个注释。例如,在以下方程中,最好确保数学与文本之间有足够的空间。

\[ f(n) =
  \begin{cases}
    n/2       & \quad \text{if } n \text{ is even}\\
    -(n+1)/2  & \quad \text{if } n \text{ is odd}
  \end{cases}
\]
$$\[ f(n) = \begin{cases} n/2 & \quad \text{if } n \text{ is even}\\ -(n+1)/2 & \quad \text{if } n \text{ is odd} \end{cases} \]$$

这段代码在 Miktex 2.9 中会产生错误,无法显示右侧的结果。应使用 \mathrm 代替 \text

(注意,这个特定的例子可以通过 amsmath 包中的 cases 构造进行更优雅的表达,详见“高级数学”章节。)

LaTeX 定义了两个命令,可以在文档的任何地方使用(不仅限于数学模式)来插入一些水平空格。它们是 \quad\qquad

\quad 是一个与当前字体大小相等的空格。所以,如果你使用的是 11pt 字体,那么 \quad 提供的空间也是 11pt(当然是水平的)。\qquad 给出的是两倍于此的空间。如上例代码所示,\quad 被用来在数学和文本之间添加一些间隔。

好的,回到文档开始时提到的微调。一个好的例子是显示关于 yy 关于 xx 的不定积分的简单方程式:

ydx\int y \, \mathrm{d} x

如果你尝试这样写,你可能会写:

ydx\int y \mathrm{d}x

然而,这并不会给出正确的结果。LaTeX 没有遵循代码中留下的空格来表示 yydx\mathrm{d}x 是独立的实体。相反,它将它们合并在一起。使用 \quad 在这种情况下显然是多余的——我们需要的是在这种类型的实例中使用一些小的空间,而这正是 LaTeX 提供的:

命令 描述 大小
, 小空格 3/18 的 quad
: 中等空格 4/18 的 quad
; 大空格 5/18 的 quad
! 负空格 -3/18 的 quad

注意,如果需要,你可以在一个序列中使用多个命令来达到更大的空间。

因此,解决当前问题的代码是:

ydx\int y \, \mathrm{d}x ydx\int y \: \mathrm{d}x y  dx\int y \; \mathrm{d}x

负空间可能看起来像是个奇怪的东西,但如果它没有用处,它就不会存在!看以下例子:

(nr)=n!r!(nr)!\left( \begin{array}{c} n \\ r \end{array} \right) = \frac{n!}{r!(n-r)!}

这个用来表示二项式系数的矩阵表达式过于填充了,括号和实际内容之间的空间太大了。通过在左括号后和右括号前添加一些负空间,这个问题可以轻松解决:

( ⁣nr ⁣)=n!r!(nr)!\left(\! \begin{array}{c} n \\ r \end{array} \!\right) = \frac{n!}{r!(n-r)!}

无论如何,尽量避免手动添加空格:这会使源代码更复杂,并且违背了“所见即所得”的基本原则。最好的做法是定义一些命令,使用你想要的所有空格,然后当你使用这些命令时,不需要再添加其他空格。以后,如果你改变了水平空间的长度,只需要修改你之前定义的命令即可。我们举个例子:你希望积分中的 dx\mathrm{d}x 以罗马字体显示,并且与其余部分有一点小空格。如果你想输入一个积分,如 xdx\int x \, \mathrm{d}x,你可以在文档的前言部分定义一个命令:

\newcommand{\dd}{\mathop{}\,\mathrm{d}}

我们选择 \dd 是因为它提醒我们它替代的“d”,并且打字速度快。这样,你的积分代码就变成了 x\ddx\int x \dd x。现在,每当你写一个积分时,你只需要使用 \dd 而不是“d”,所有的积分都会有相同的样式。如果你改变主意,只需要在前言中更改定义,所有的积分都会相应地改变。

手动指定公式样式

要手动显示公式片段并使用文本样式,只需将片段包围在大括号中,并在片段前加上 \textstyle。大括号是必需的,因为 \textstyle 宏会改变渲染器的状态,使得所有后续的数学公式以文本样式显示。大括号限制了这种状态的变化仅限于被包围的片段。例如,要在求和符号中使用文本样式,你可以输入:

Cji=kAkiBjkC^i_j = {\textstyle \sum_k} A^i_k B^k_j

使用命令时会是这样的:

\newcommand{\tsum}[1]{{\textstyle \sum_{#1}}}

请注意额外的大括号。仅用一对大括号包围表达式是不够的,这会导致 \tsum k 之后的所有数学公式都以文本样式显示。

要使用显示样式显示公式的一部分,做法相同,但使用 \displaystyle 替代 \textstyle

高级数学:AMS 数学包

AMS(美国数学学会)数学包是一个强大的包,它为数学 LaTeX 语言提供了一个更高层次的抽象;如果你使用它,它将使你的工作更轻松。AMS 数学包引入的一些命令将使其他普通的 LaTeX 命令过时:为了保持最终输出的一致性,最好尽可能使用 AMS 数学包的命令。如果你这样做,你将获得优雅的输出,而无需担心对齐和其他细节,同时保持源代码的可读性。如果你想使用它,你需要在文档的前言部分添加以下内容:

\usepackage{amsmath}

在公式中引入省略号

amsmath 还定义了 \dots 命令,它是对现有 \ldots 的一种扩展。你可以在文本模式和数学模式中使用 \dots,LaTeX 会将其替换为三个点 "…",但它会根据上下文决定是将其放置在底部(如 \ldots)还是居中(如 \cdots)。

省略号

LaTeX 提供了多个命令来在公式中插入省略号(即省略符号)。如果你需要输入包含省略元素的大矩阵,这些命令特别有用。首先,以下是 LaTeX 提供的与省略号相关的主要命令:

命令 输出 说明
\dots 通用省略号(ellipsis),可用于文本中(也包括公式之外)。它根据上下文自动管理前后的空格,是一个更高级的命令。
\ldots 输出与 \dots 类似,但没有自动空格管理;它是一个较低级的命令。
\cdots 这些省略号相对于字母的高度是居中的。还有二元乘法运算符 \cdot,如下所述。
\vdots 垂直省略号
\ddots 对角线省略号
\iddots 逆对角线省略号(需要 mathdots 包)
\hdotsfor{n} 用于矩阵,它创建一行点,跨越 n 列。

建议使用语义上更清晰的命令,而不是 \ldots 和 \cdots。这样可以使文档更具灵活性,方便应对不同的出版要求。例如,某些出版社可能会要求遵循某些格式规定。默认的处理方式符合美国数学学会的规范。

命令 输出 说明
A_1, A_2, \dotsc, 用于“带逗号的省略号”
A_1 + \dotsb + A_N 用于“带二元运算符/关系的省略号”
A_1 \dotsm A_N 用于“乘法省略号”
\int_a^b \dotsi 用于“带积分的省略号”
A_1 \dotso A_N 用于“其他省略号”(不是上述的任何一种)

使用 align 环境写方程

如何使用 amsmath 包中的 align 环境写方程,请参阅《高级数学》章节。

数学符号列表

下列是 \TeX\ 包中预定义的所有数学符号。更多符号可以通过额外的包获取。

关系符号

符号 脚本 符号 脚本 符号 脚本 符号 脚本 符号 脚本
< {\displaystyle <,} < > {\displaystyle >,} > = {\displaystyle =,} =
{\displaystyle \nparallel ,} \nparallel {\displaystyle \leq ,} \leq {\displaystyle \geq ,} \geq
{\displaystyle \asymp ,} \asymp {\displaystyle \bowtie ,} \bowtie {\displaystyle \ll ,} \ll
{\displaystyle \equiv ,} \equiv {\displaystyle \vdash ,} \vdash {\displaystyle \dashv ,} \dashv
{\displaystyle \supset ,} \supset {\displaystyle \approx ,} \approx {\displaystyle \in ,} \in
{\displaystyle \subseteq ,} \subseteq {\displaystyle \supseteq ,} \supseteq {\displaystyle \cong ,} \cong
{\displaystyle \frown ,} \frown {\displaystyle \nsubseteq ,} \nsubseteq {\displaystyle \nsupseteq ,} \nsupseteq
{\displaystyle \models ,} \models {\displaystyle \notin ,} \notin {\displaystyle \sqsubset ,} \sqsubset
{\displaystyle \sim ,} \sim {\displaystyle \perp ,} \perp {\displaystyle \mid ,} \mid
{\displaystyle \sqsupseteq ,} \sqsupseteq {\displaystyle \propto ,} \propto {\displaystyle \prec ,} \prec
{\displaystyle \preceq ,} \preceq {\displaystyle \succeq ,} \succeq {\displaystyle \neq ,} \neq
{\displaystyle \measuredangle ,} \measuredangle {\displaystyle \therefore ,} \therefore {\displaystyle \because ,} \because

二元运算符

符号 脚本 符号 脚本 符号 脚本 符号 脚本
± {\displaystyle \pm ,} \pm {\displaystyle \cap ,} \cap {\displaystyle \diamond ,}
{\displaystyle \oplus ,} \oplus {\displaystyle \mp ,} \mp {\displaystyle \cup ,}
{\displaystyle \bigtriangleup ,} \bigtriangleup {\displaystyle \ominus ,} \ominus × {\displaystyle \times ,}
{\displaystyle \uplus ,} \uplus {\displaystyle \bigtriangledown ,} \bigtriangledown {\displaystyle \otimes ,}
÷ {\displaystyle \div ,} \div {\displaystyle \sqcap ,} \sqcap {\displaystyle \triangleleft ,}
{\displaystyle \oslash ,} \oslash {\displaystyle \ast ,} \ast {\displaystyle \sqcup ,}
{\displaystyle \triangleright ,} \triangleright {\displaystyle \odot ,} \odot {\displaystyle \star ,}
{\displaystyle \vee ,} \vee {\displaystyle \bigcirc ,} \bigcirc {\displaystyle \circ ,}
{\displaystyle \dagger ,} \dagger {\displaystyle \wedge ,} \wedge {\displaystyle \bullet ,}
{\displaystyle \setminus ,} \setminus {\displaystyle \ddagger ,} \ddagger {\displaystyle \cdot ,}
{\displaystyle \wr ,} \wr ⨿ {\displaystyle \amalg ,} \amalg

集合与/或逻辑符号

符号 脚本 符号 脚本
{\displaystyle \exists ,} \exists
{\displaystyle \nexists ,} \nexists
{\displaystyle \forall ,} \forall
¬ {\displaystyle \neg ,} \neg
{\displaystyle \cap } \cap
{\displaystyle \subset ,} \subset
{\displaystyle \supset ,} \supset
{\displaystyle \in } \in
{\displaystyle \notin ,} \notin
{\displaystyle \ni ,} \ni
{\displaystyle \land ,} \land
{\displaystyle \lor ,} \lor
{\displaystyle \angle ,} \angle
{\displaystyle \rightleftharpoons ,} \rightleftharpoons

分隔符

符号 脚本 符号 脚本 符号 脚本 符号 脚本 符号 脚本
{\displaystyle</td> <td>,} 或 \mid(间距不同) {\displaystyle |,} | / {\displaystyle /,}
{\displaystyle \backslash ,} \backslash {</td> <td>{\displaystyle {,} {</td> <td>} {\displaystyle },} }
{\displaystyle \langle ,} \langle {\displaystyle \rangle ,} \rangle {\displaystyle \uparrow ,} \uparrow
{\displaystyle \Uparrow ,} \Uparrow {\displaystyle \lceil ,} \lceil {\displaystyle \rceil ,} \rceil
{\displaystyle \downarrow ,} \downarrow {\displaystyle \Downarrow ,} \Downarrow {\displaystyle \lfloor ,} \lfloor
{\displaystyle \rfloor ,} \rfloor

希腊字母

符号 脚本 符号 脚本
A {\displaystyle \mathrm {A} ,} 和 α {\displaystyle \alpha ,} A 和 \alpha
N {\displaystyle \mathrm {N} ,} 和 ν {\displaystyle \nu ,} N 和 \nu
B {\displaystyle \mathrm {B} ,} 和 β {\displaystyle \beta ,} B 和 \beta
Ξ {\displaystyle \Xi ,} 和 ξ {\displaystyle \xi ,} \Xi 和 \xi
Γ {\displaystyle \Gamma ,} 和 γ {\displaystyle \gamma ,} \Gamma 和 \gamma
O {\displaystyle \mathrm {O} ,} 和 o {\displaystyle \mathrm {o} ,} O 和 o
Δ {\displaystyle \Delta ,} 和 δ {\displaystyle \delta ,} \Delta 和 \delta
Π {\displaystyle \Pi ,} 和 π {\displaystyle \pi ,} 和 ϖ \Pi, \pi 和 \varpi
E {\displaystyle \mathrm {E} ,} 和 ϵ {\displaystyle \epsilon ,} 和 ε E, \epsilon 和 \varepsilon
P {\displaystyle \mathrm {P} ,} 和 ρ {\displaystyle \rho ,} 和 ϱ P, \rho 和 \varrho
Z {\displaystyle \mathrm {Z} ,} 和 ζ {\displaystyle \zeta ,} Z 和 \zeta
Σ {\displaystyle \Sigma ,} 和 σ {\displaystyle \sigma ,} 和 ς \Sigma, \sigma 和 \varsigma
H {\displaystyle \mathrm {H} ,} 和 η {\displaystyle \eta ,} H 和 \eta
T {\displaystyle \mathrm {T} ,} 和 τ {\displaystyle \tau ,} T 和 \tau
Θ {\displaystyle \Theta ,} 和 θ {\displaystyle \theta ,} 和 ϑ \Theta, \theta 和 \vartheta
Y {\displaystyle {\mbox{Y}},} 和 Υ {\displaystyle \Upsilon ,} 和 υ Y, \Upsilon 和 \upsilon
I {\displaystyle \mathrm {I} ,} 和 ι {\displaystyle \iota ,} I 和 \iota
Φ {\displaystyle \Phi ,} 和 ϕ {\displaystyle \phi ,} 和 φ \Phi, \phi 和 \varphi
K {\displaystyle \mathrm {K} ,} 和 κ {\displaystyle \kappa ,} 和 ϰ K, \kappa 和 \varkappa
X {\displaystyle \mathrm {X} ,} 和 χ {\displaystyle \chi ,} X 和 \chi
Λ {\displaystyle \Lambda ,} 和 λ {\displaystyle \lambda ,} \Lambda 和 \lambda
Ψ {\displaystyle \Psi ,} 和 ψ {\displaystyle \psi ,} \Psi 和 \psi
M {\displaystyle \mathrm {M} ,} 和 μ {\displaystyle \mu ,} M 和 \mu
Ω {\displaystyle \Omega ,} 和 ω {\displaystyle \omega ,} \Omega 和 \omega

其他符号

符号 脚本 符号 脚本 符号 脚本 符号 脚本 符号 脚本
{\displaystyle \partial ,} \partial ı {\displaystyle \imath ,} \imath {\displaystyle \Re ,} \Re
{\displaystyle \nabla ,} \nabla {\displaystyle \aleph ,} \aleph ð {\displaystyle \eth ,} \eth
ȷ {\displaystyle \jmath ,} \jmath {\displaystyle \Im ,} \Im {\displaystyle \Box ,} \Box
{\displaystyle \beth ,} \beth {\displaystyle \hbar ,} \hbar {\displaystyle \ell ,} \ell
{\displaystyle \wp ,} \wp {\displaystyle \infty ,} \infty {\displaystyle \gimel ,} \gimel

三角函数

符号 脚本 符号 脚本 符号 脚本 符号 脚本
sin {\displaystyle \sin ,} \sin arcsin {\displaystyle \arcsin ,} \arcsin sinh {\displaystyle \sinh ,}
sec {\displaystyle \sec ,} \sec cos {\displaystyle \cos ,} \cos arccos {\displaystyle \arccos ,}
cosh {\displaystyle \cosh ,} \cosh csc {\displaystyle \csc ,} \csc tan {\displaystyle \tan ,}
arctan {\displaystyle \arctan ,} \arctan tanh {\displaystyle \tanh ,} \tanh cot {\displaystyle \cot ,}
arccot {\displaystyle \operatorname {arccot} ,} \arccot

coth | {\displaystyle \coth ,} | \coth

如果 LaTeX 没有包括你想要使用的数学运算符,例如 \cis(余弦加上 ii 乘以正弦),可以在前言部分添加:

\DeclareMathOperator\cis{cis}

然后你可以像使用 \cos 或任何其他数学运算符一样使用 \cis。

摘要

正如您开始看到的那样,数学排版有时可能很棘手。然而,由于 LaTeX 提供了如此多的控制,您只需相对较少的努力(当然,在经过一些练习之后!)就能获得专业质量的数学排版效果。由于可能性似乎是无限的,因此可以进一步详细阐述数学的细枝末节。不过,通过本教程,您应该能够充分地掌握它。


Last modified: Monday, 21 April 2025, 12:34 PM