计算机技术学习札记

LaTeX 公式简明教程


2022 年 9 月 4 日

作为 $\LaTeX$ 引以为傲的功能之一,$\LaTeX$ 的公式语法在许多 $\TeX$ 排版引擎以外的地方被广泛运用,其已经成为了事实上的数学公式数字化表示的标准。本文旨在用最少的语言介绍清楚 $\LaTeX$ 公式是什么,以及如何用它写出普通大学高等数学水平的各类公式。

LaTeX 和它的公式系统 #

$\LaTeX$ 读作「拉泰克」「雷泰克」或者「~泰赫」,不应读成「~泰克斯」。它是一套基于 $\TeX$ 的排版系统,用于排出高质量的各类文档和书籍。在处理数学公式上,$\LaTeX$ 有一套自己的标记系统,使得用户只需要使用键盘输入类似于

\left\{
  \begin{aligned}
    & \nabla\cdot\mathbf{E}=\frac{\rho}{\varepsilon_0} \\
    & \nabla\cdot\mathbf{B}=0 \\
    & \nabla\times\mathbf{E}=-\frac{\partial\mathbf{B}}{\partial t} \\
    & \nabla\times\mathbf{B}=\mu_0\mathbf{J}+\mu_0\varepsilon_0\frac{\partial\mathbf{E}}{\partial t}
  \end{aligned}
\right.

的代码,即可排出复杂而美观的公式:

$$ \left\{ \begin{aligned} & \nabla\cdot\mathbf{E}=\frac{\rho}{\varepsilon_0} \\ & \nabla\cdot\mathbf{B}=0 \\ & \nabla\times\mathbf{E}=-\frac{\partial\mathbf{B}}{\partial t} \\ & \nabla\times\mathbf{B}=\mu_0\mathbf{J}+\mu_0\varepsilon_0\frac{\partial\mathbf{E}}{\partial t} \end{aligned} \right. $$

请千万不要被上面的代码吓到——只需读完本文,你也可以理解并写出上面这样的公式。本文不会介绍和 $\LaTeX$ 有关的更多内容,而只介绍其公式语法的使用。这是因为,$\LaTeX$ 这套公式标记系统简便好用,使得许多其他地方也用这样的方式来输入公式,因此将 $\LaTeX$ 公式部分独立出来介绍,合情合理。

哪里会用到 LaTeX 公式 #

许多编辑器都接受以 $\LaTeX$ 公式格式输入公式,例如:

  • 诸如 Typora 等的许多 Markdown 编辑器;
  • 诸如 NotionFlowUs 等在线笔记平台;
  • 自 2019 版本起的 MS Word;
  • MediaWiki 等平台;
  • 本网站 的编辑后台;……

在不同地方输入公式的方法是不同的。对于多数 Markdown 编辑器,将 $\LaTeX$ 公式用 $ 包裹起来,就能正确解析公式。而在 Notion 中,按 / 并选择 Inline equation 或者 Block equation,即可进入公式输入模式。一些其他的平台则亦有不同的公式输入入口。但无论是哪个平台,只要它支持 $\LaTeX$ 公式格式,那么下面所介绍的内容都是适用的。下图是在 Notion 上进入公式输入的图片。

![在 Notion 中输入 LaTeX 公式](assets/Screenshot from 2022-09-05 11-58-34-20220905115854-oc2mz8f.png)​

简单线性公式的输入 #

这里的简单线性公式,指的是不换行的简单公式,公式中穿插有各种数学符号。例如:

$$ g(x)=x^2\sin(2x-3) $$

数字、字母和上下标 #

键盘上可以直接打出的数字、字母,全部按原样即可输入。例如,2x + 3 - y 即可排出 $2x + 3 - y$,(5 - 3a) / 2 则能排出 $(5 - 3a) / 2$。和许多编程语言一样,空格是可选的,1 + 21+2 没有什么不同。

上标用 ^ 输入,下标用 _ 输入。比如,x^2 可以排出 $x ^ 2$,而 (3 - 2x)_i 可排出 $(3 - 2x)_i$。但当上 / 下标多于一个字时,要用 {} 把它们包起来,例如:

  • 3^{22} 会排出 $3^{22}$,但 3^22 则排出 $3^22$。
  • x^{5y+6} 可以排出 $x^{5y+6}$。如果没有花括号,它会变成 $x^5y+6$。

导数符号即是 ',可以算一种特殊的上标,如 f'(x) 即可排出 $f’(x)$。二阶导就是 f''(x),即 $f’’(x)$。超过三阶的 $n$ 阶导数一般就写成 $f^{(n)}(x)$ 了。

分式与根式 #

在键盘上不能打出来的东西,需要使用一种叫做「控制序列」的字符串来输入。在 $\LaTeX$(准确来说是 $\TeX$)中,所有以反斜杠 \ 开头的字串都会被理解为「控制序列」。下面我们介绍我们遇到的第一个控制序列:分式。

分式使用 \frac 输入。它的用法是 \frac{分子}{分母}。例如:

  • \frac{1}{2} 即是 $\frac{1}{2}$。
  • \frac{f(x)}{g(x-2)} 即是 $\frac{f(x)}{g(x-2)}$。
  • 分式当然可以套分式,例如 \frac{2x+5}{3x-\frac{1}{1-x}} 可以排出 $\frac{2x+5}{3x-\frac{1}{1-x}}$。

而根式是我们介绍的第二个控制序列。它使用 \sqrt 输入,用法是 \sqrt{式子}。例如:

  • \sqrt{2} 即 $\sqrt{2}$。
  • \sqrt{x^2-3} 能排出 $\sqrt{x^2-3}$。
  • 对于高次根式,使用 \sqrt[3]{式子}。如 \sqrt[3]{x^4+2} 是 $\sqrt[3]{x^4+2}$。
  • 当然也可以套,如 $\sqrt{\sqrt{\sqrt{\sqrt{x}}}}$。
  • 也可以和分式套在一起,比如 $\sqrt{\frac{\sqrt{x}}{2x+\sqrt{3}}}$。

希腊字母、关系符和算符 #

显然,希腊字母是无法直接用键盘打出来的,因此也需要用控制序列。简单来说,用 \ 加上希腊字母的名称就能打出这个字母,如 \omega 打出小写的 $\omega$,而 \Omega 打出大写的 $\Omega$。$\alpha$、$\beta$ 和 $\gamma$ 分别用 \alpha\beta\gamma 打出。常见希腊字母的名称请自行上网搜索,这里不再赘述。

一个特例是部分希腊字母有多种不同的写法:

字母名写法 1写法 2
Epsilon\epsilon $\epsilon$\varepsilon $\varepsilon$
Theta\theta $\theta$\vartheta $\vartheta$
Pi
\pi $\pi$\varpi $\varpi$
Rho\rho $\rho$\varrho $\varrho$
Sigma\sigma $\sigma$\varsigma $\varsigma$
Phi\phi $\phi$\varphi $\varphi$

在各种关系符中,只有大于 $<$ 小于 $>$ 等几个简单的关系符可以直接用键盘打出。其他的需要依赖控制序列。常用的关系符有:

  • 大于等于 \geq 即 Greater than or EQual to $\geq$。此外,\geqslant 用于打出斜边的 $\geqslant$。
  • 小于等于 \leq 即 Less than or EQual to $\leq$。同样,\leqslant 是 $\leqslant$。
  • 不等于 \neq 即 Not EQual $\neq$。
  • 约等于 \approx 即 APPROXimate $\approx$。

类似的,算符中,也只有加减法等几个简单算符能直接打出。我们需要使用控制序列来打出其他算符。例如:

  • 乘法(叉乘)\times $\times$。
  • 除法 \div $\div$。
  • 点乘 \cdot $\cdot$。例如,a\cdot b $a\cdot b$。
  • 蕴含 \to 或者 \rightarrow $\rightarrow$。事实上,你可以试试 \leftarrow\leftrightarrow 以及将它们的第一个字母大写,看看能打出什么。

前面我们提到,控制序列以反斜杠 \ 开始,那控制序列到哪里结束呢?诸如分式 \frac 和根式 \sqrt 这样后面带 {} 的控制序列,它最后一对花括号闭合时,整个控制序列就结束了。我们可以在后面直接写内容,如 \frac{1}{2}x 即可排出 $\frac{1}{2}x$。但对于上面的各种希腊字母、算符、关系符,它们的控制序列后面并不带东西,因此需要一个空格来标记「本控制序列到此为止」,否则会造成公式解析出错,如:

  • a\times b 将排出 $a\times b$,但 a\timesb 会出错,因为解析器会认为 \timesb 是一个整体,而这是一个无效的控制序列。
  • \alpha_53\times\beta 则没有空格也能排出 $\alpha_5$ 和 $3\times\beta$,那是因为上下标和其他控制序列出现时,必然标志着前一个控制序列结束。

巨算符 #

巨算符指的是求和号、积分号、极限号等体积较大的算符。它们不仅不能直接打出,往往还「拖泥带水」。它们也需要使用控制序列来输入。

常用的巨算符有:

名字控制序列符号
求和\sum$\sum$
求积\prod$\prod$
积分、二重和三重积分\int \iint\iiint$\int$ $\iint$ $\iiint$
环路积分
\oint$\oint$
极限\lim$\lim$

巨算符往往会带有一些其他部分,如积分上下限和求和起终点。它们在 $\LaTeX$ 公式中以上下标的形式处理。例如,对 1 到 100 求和,可以用 \sum_{i=1}^{100}i 来打出:

$$ \sum_{i=1}^{100}i $$

而将 $f(x)$ 从 $a$ 定积分到 $b$,可以用 \int_a^bf(x)\mathrm{d}x 打出(\mathrm{d} 用来打出正体的 $\mathrm{d}$):

$$ \int_a^bf(x)\mathrm{d}x $$

其他巨算符的用法类似,读者可以自行尝试。

常用函数 #

诸如三角函数、对数函数这类常用函数,往往要求使用正体排版,而 $\LaTeX$ 公式中字母默认为斜体,这使得 sin(x) $sin(x)$ 这样的用法并不正确(但很多人在这样用)。幸运的是,$\LaTeX$ 中已经内置好了这些常用函数的控制序列,如:

  • \sin 用于打出 $\sin$,如 \sin(x+2) 即有 $\sin(x+2)$。
  • \log 可以打出 $\log$,借助下标我们可以打出 \log_2x 即 $\log_2x$。

其他还有诸如 \ln\arcsin 等许多函数。与 $sin(x+2)$ 这种用法相比,$\sin(x+2)$ 是正确的,更加适合正式场合。

数学重音 #

最后我们介绍数学重音,即「穿靴戴帽」的数字字母。常用的数学重音有:

  • \bar 用于给字母头上加一杠,如 \bar{x} $\bar{x}$。多个字母请用 \overline,如 \overline{AB} $\overline{AB}$。
  • \vec 用于给字母头上加一个右箭头,如 \vec{x} $\vec{x}$。多个字母请用 \overrightarrow,如 \overrightarrow{AB} $\overrightarrow{AB}$。事实上还有 \overleftarrow,不妨试试。
  • \hat 用于给字母戴个帽子,如 \hat{a} $\hat{a}$。多个字母……有这种情况吗?

更多的控制序列 #

受限于篇幅,本文不会介绍更多的控制序列,亦不会罗列一张张符号总表。事实上,我们应当充分利用我们的搜索引擎:当你不知道一个符号如何用 $\LaTeX$ 打出时,直接上网搜索「某符号 LaTeX」,一般都能很快找到答案:

![在 Bing 上查找「等价于」符号的控制序列](assets/Screenshot from 2022-09-05 01-25-05-20220905012512-o3kpgrh.png)​

如果你有收藏癖,想要一个包罗万象的 $\LaTeX$ 符号总表,那么你或许可以搜索《一份(不太)简短的 LaTeX 2e 介绍》,然后翻到它第四章第九节。那里也许有你想要的东西。

多行公式的输入 #

下面我们来介绍多行公式的输入。这里的多行公式是一个广义的概念,像

$$ \begin{aligned} \sum_{i=1}^\infty\frac{1}i &= 1+\frac{1}2+\frac{1}3+\frac{1}4+\cdots+\frac{1}n+\frac{1}{n+1}+\cdots \\ &= 1 + (\frac{1}2+\frac{1}3)+(\frac{1}4+\frac{1}5+\frac{1}6+\frac{1}7)+\cdots \\ &>1+(\frac{1}2+\frac{1}2)+(\frac{1}4+\frac{1}4+\frac{1}4+\frac{1}4)+\cdots \\ &= 1+1+1+\cdots \end{aligned} $$

这样由多个单行公式组成的复合公式属于多行公式,而如

$$ \boldsymbol{A}=\left[ \begin{matrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{matrix} \right] $$

这样的含矩阵公式也是多行公式。显然,上一节所介绍的公式都是单行线性的。要输入这样多行的复杂公式,我们就需要使用一些特殊的东西——「环境」。

多行公式环境 aligned #

环境是 $\LaTeX$ 中的概念,用来标记一些特殊的排版元素,例如表格、图片。在 $\LaTeX$ 公式中也会使用环境,而这些环境就是我们使用多行公式的关键。

我们介绍的第一个环境是 aligned 环境,它用来产生支持对齐功能的多行公式。要使用环境,我们需要使用 \begin 控制序列和 \end 控制序列来标记环境开始和结束。例如:

\begin{aligned}
  % 一些公式代码
\end{aligned}

就能产生一个 aligned 环境。如果你的编辑器不支持公式源码换行,那么写在一行也是可以的:

\begin{aligned}  一些公式代码  \end{aligned}

aligned 环境的基本用法是:将你要输入的公式罗列其中,用 \\ 控制序列来换行。例如:

\begin{aligned}
  f(x)=2x+3 \\
  g(x)=e^x-5
\end{aligned}

就能排出:

$$ \begin{aligned} f(x)=2x+3 \\ g(x)=e^x-5 \end{aligned} $$

也可以把整个公式源码写在一行上。但请注意,和其他控制序列一样,\\ 后面要留一个空格:

\begin{aligned}f(x)=2x+3\\ g(x)=e^x-5\end{aligned}

aligned 环境支持将多行公式在特定的位置对齐。使用 & 标记要对齐的位置。如

\begin{aligned}
  a+b+c+d&=e \\
  f&=g+h+i+j
\end{aligned}

就能让两个公式在 $=$ 处对齐:

$$ \begin{aligned} a+b+c+d&=e \\ f&=g+h+i+j \end{aligned} $$

现在你应该能试着打出上面那个调和级数求和的公式组合了。

环境是一个盒子 #

如果在一个 aligned 环境前后再打一些公式会怎么样呢?

e^x+2x-3=\begin{aligned} f(x)=x^2 \\ g(x)=e^x \end{aligned}-2
$$ e^x+2x-3=\begin{aligned} f(x)=x^2 \\ g(x)=e^x \end{aligned}-2 $$

前面提到了多行公式的环境 aligned,其实本质是产生了一个「盒子」,这个盒子很大,里面装了一些东西。整个盒子其实还是单行公式的一部分——不如说,在 $\LaTeX$ 中的多行公式,是通过一个盒子「模拟」出来的。这个盒子也能成为其他公式的一部分,也能像一个数字或者字母一样「塞」到其他公式之中。

在这一思想之上,我们便很容易想到诸如

$$ \left\{ \begin{aligned} & f(x)=x^2-3x+6 \\ & g(x)=\log_2f(x)+e^x \end{aligned} \right. $$

的公式组怎么输入了。如果不看左侧的花括号,它就是一个靠左对齐的 aligned 环境。而花括号呢?我们也许只要找一个比较大的花括号放在 aligned 环境之前。为了产生这个比较大的花括号,我们先介绍两个控制序列:\left\right

长高的括号与公式组 #

\left\right 用来生成能随着公式高度变化的符号。举个例子:

  • 括号是不会随着公式「长高」而变长的,如 (\frac{\sum_{i=1}^ni}{\prod_{j=1}^nj}) 排出的是

    $$ (\frac{\sum_{i=1}^ni}{\prod_{j=1}^nj}) $$

    注意看两个括号的大小,它们并没有完全「包」住中间的公式。

  • 使用 \left(\right) 分别来生成左、右括号,上面的代码改为 \left(\frac{\sum_{i=1}ni}{\prod_{j=1}nj}\right),则排出公式

    $$ \left(\frac{\sum_{i=1}^ni}{\prod_{j=1}^nj}\right) $$

    可以看到括号「长高」了。我们容易明白,\left\right 能够生成它们后面紧跟的那个符号的「增大」版。例如 \left[\right] 就能生成一对长大的中括号:

    $$ \left[\frac{1}{2}\right] $$

\left\right 必须成对出现,但不要求两边是同一种括号——也就是说,不能只有 \left 而没有 \right,但 \left[\right) 也是算一对的。幸运的是,$\LaTeX$ 提供了一种生成单边增高括号的方法:用 \left(\right.,即可生成一对只有左括号的增高圆括号;同理,用 \left.\right),则可以只要右半边。

那么,回到我们之前的公式组场景,答案已经很明朗了:我们只要在 aligned 环境之前加一个 \left{,之后加一个 \right.,就……

报错啦!花括号 {} 在整个 $\LaTeX$ 系统中都是非常特殊的存在——大量控制序列用它来输入参数,因此当我们要排出真正的花括号时,我们需要转义——用 \{\} 才能排出真正的花括号。因此,我们要用 \left\{\right. 包裹我们的 aligned 环境:

\left\{
  \begin{aligned}
    & f(x)=x^2-3x+6 \\
    & g(x)=\log_2f(x)+e^x
  \end{aligned}
\right.
$$ \left\{ \begin{aligned} & f(x)=x^2-3x+6 \\ & g(x)=\log_2f(x)+e^x \end{aligned} \right. $$

当然,写在一行也是可以的:

\left\{\begin{aligned}& f(x)=x^2-3x+6 \\ & g(x)=\log_2f(x)+e^x\end{aligned}\right.

矩阵环境 matrix #

我们再介绍另一种特殊的「多行」公式环境——矩阵 matrix 环境。它用来生成一个数表或者说阵列。例如:

\begin{matrix}
  1 & 2 & 3 & 4 \\
  5 & 6 & 7 & 8
\end{matrix}

就能排出:

$$ \begin{matrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \end{matrix} $$

配合之前提到的 \left[\right],很容易想到矩阵的写法,就是在 matrix 环境前后用括号包住。至于行列式,则可以用 \left|\right| 来包住:

\left[\begin{matrix}1&2&3&4\\ 5&6&7&8 \end{matrix}\right]
$$ \left[\begin{matrix}1&2&3&4\\ 5&6&7&8 \end{matrix}\right] $$

试试打几个矩阵吧!这里再提几个「省略号」的用法,它们分别是:

  • 横向省略号:\cdots 即 $\cdots$,用于水平方向的省略;
  • 纵向省略号:\vdots 即 $\vdots$,用于竖直方向的省略;
  • 对角省略号:\ddots 即 $\ddots$,一般用在矩阵中,用于斜向的省略。

到这里,本文的主要内容就已经介绍完毕了。作为一门工具,$\LaTeX$ 公式需要在使用中熟练,各种控制序列和排版的技巧也要在使用中积累,因此本文只能起到一个「敲门砖」的作用。现在,打开一个支持 $\LaTeX$ 的平台,试试将你所了解的数学公式变成指尖下的代码吧!

再多说一些东西 #

排版是一门学问,有着它自己的知识体系。而作为科技类文章中的常客,数学公式的排版也有它自己的规矩。借着这里介绍完 $\LaTeX$ 公式的基本语法,我们再介绍一些数学公式排版的注意事项。

字形 #

在数学公式中会同时出现「正体字」和「斜体字」。请看下面的公式:

$$ \left\{ \begin{aligned} & M=\iiint_\Omega\rho\mathrm{d}x\mathrm{d}y\mathrm{d}z \\ & \rho=1.0\ \mathrm{kg}/\mathrm{m}^3 \end{aligned} \right. $$

在上述公式中,$M$、$\rho$ 和 $x$、$y$ 等字母都是斜体,而 $\mathrm{d}$、数字和单位 $\mathrm{kg}/\mathrm{m}^3$ 则是正体。显然,我们需要按一个规则来给这些元素合适的字形。

一个简单的原则(尽量符合国家标准 GB/T 3101 系列)是:

  • 数字都是正体。没有特殊意义的字母,如变量 $x$、函数 $f(x)$ 等都是斜体。下面提到的是「特殊意义」。
  • 表示常用函数的字母是正体,比如三角函数 $\sin(x)$、对数函数 $\log_a(b)$,指数函数 $\exp(x)$。在 $\LaTeX$ 中,它们可以用 \sin \log \exp 打出来。如果那个函数比较少见,无法用这样的方式打出(如\arctanh,这个控制序列会报错),用 \mathrm{}手动产生,如\mathrm{arctanh}。如果不这么打,产生的公式如 $sin(x)$ 是不合规的。
  • 积分算子 $\mathrm{d}$ 是正体,用 \mathrm{d} 手动产生。
  • 自然对数的底数 $\mathrm{e}$ 是正体,用 \mathrm{e} 手动产生,如 $\mathrm{e}^x$ \mathrm{e}^x
  • 虚数单位 $\mathrm{i}$ 是正体,用 \mathrm{i} 手动产生。
  • 单位是正体,用 \mathrm{} 手动产生公式中的字母,如 $\mathrm{kg}/\mathrm{m}^3$ \mathrm{kg}/\mathrm{m}^3

数学公式中除了正体和斜体这两种常见字形,还有一些常用的其他字形,这里也一并介绍:

  • 粗正体,用 \mathbf{} 产生。如实数集 $\mathbf{R}$、自然数集 $\mathbf{N}$。
  • 粗斜体,用 \boldsymbol{} 产生。用于向量和矩阵,如向量 $\boldsymbol{a}$、矩阵 $\boldsymbol{X}$。
  • 花体,用 \mathcal{} 产生,如 $\mathcal{K}$。

参考文献与书籍推荐 #

  • 《科技论文写作教程》——强烈建议所有需要写作自然科学文章的同学,都仔细阅读此书。
  • 《一份(不太)简短的 LaTeX 2e 介绍》——一份 $\LaTeX\ 2_\varepsilon$ 入门教程。