LaTeX学习笔记:数学公式编辑

LaTeX学习笔记:数学公式编辑

数学公式的编辑一直以来都是我们在撰写科学类文章过程中所面临的最大麻烦之一,相信大家之前应该都尝试过各种在电子文档中输入数学公式的方法,但这些方法多数都不尽如人意,这恐怕也是驱使很多人最终下定决心来学习 \(\LaTeX\) 语言的主要原因。毕竟,对数学公式进行编辑和排版本身就是 \(\TeX\) 最重要的设计初衷之一,目前似乎也找不到比它更强大的数学公式编辑方法了。所以在接下来的内容中,我们就详细且深入地来介绍一下如何使用 \(\LaTeX\) 语言编辑数学公式。

计算机中的数学公式

在计算机中,数学公式与普通文本最大的不同就在于,数学公式中的字符往往并不像普通文本那样,只是单纯地呈现出横向或纵向的排版方式,它们有一套属于自己的特殊结构和规则。例如,在上面勾股定理的推导公式中:

\[c = \sqrt{a^{2} + b^{2}} \]

我们可以看到,\(a\)\(b\) 都由各自的平方号,外面还套着一个开根号,这些数学符号的排列既复杂又井然有序,在电子文档中实现这样的排列结构就是我们使用 \(\LaTeX\) 编辑数学公式要完成的主要工作。

\(\LaTeX\) 语言中,数学公式按照排版方式的不同,大致可分为行内公式行间公式两种。譬如 \(f(x,y)= x^2 + y^2\) ,这就是一个行内公式,它们通常与普通文本同处于一个逻辑行内。而行间公式则就是我们在上面关于描述沟勾股定理的示例所看到的那种排版方式,它们通常独立于普通文本,自成一行。

在了解了数学公式在文档中的独特排版方式之后,接下来就可以正式开始学习数学公式的编辑了。让我们先从最基本的加减法开始。使用 \(\LaTeX\) 命令编写加减运算的公式很简单,就是在相应的数学表达式加上引入 \(\LaTeX\) 命令的方式,譬如在 Markdown 文档中,如果我们想编写 \(x=a+b-c\) 这样的公式,就只需要输入$x=a+b-c$即可(当然也可以使用行间公式的形式)。在这里,大家心里可能会有一个疑问:加减运算中使用的符号都是可以直接从键盘输入的,描述这类运算时似乎没有必要使用 \(\LaTeX\) 命令吧?要想回答这个疑问,我们不妨先来看看使用 \(\LaTeX\) 命令前后的区别(见图 1)。

图1:使用LaTeX命令前后的区别

我们在图 1 中可以看到,相同的表达式在使用了 \(\LaTeX\) 命令之后,表达式中的每个字符都被设置了特定的字体。譬如,字母采用了倾斜的意大利字体,而数字和加号则采用的是直立的等宽字体,并且每个字符之间也都设置了相应的间距。正是这些排版样式将一个干巴巴的表达式变成了具有学术质感的数学公式。所以,即使没有用到任何特殊符号,我们也会选择尽量使用 \(\LaTeX\) 语言来描述数学问题。

数学公式的排版结构

正如之前所说,计算机中的数学公式都是拥有特定排版结构的。现在,让我们仔细回想一下自己迄今为止所见过的各种数学公式,看看该如何用 \(\LaTeX\) 语言来描述这些公式的排版结构。

上下标结构

在众多数学公式中,上标和下标无疑是两种最常见的公式结构了。其中,上标通常位于其目标符号的右上方,而下标则通常位于其目标符号的右下方,但在某些情况下,它们也会出现在目标符号的正上方和正下方,例如 \(10^2\)\(a_i\)\(a^2_i\)\(\sum\limits_{i=0}^n\) 等。

\(\LaTeX\) 语言中,上标用特殊字符“^”表示,下标用特殊字符“_”表示,上标和下标可以同时作用于同一个目标符号,并且它们的顺序是可以互换的,我们可以先写上标再写下标,也可以反过来写,两者互不影响。另外,如果上标或下标的内容的多于一个字符,就用括号将其括起来。下面,让我们来做一些具体的演示(见表 1)。

公式编码 渲染效果
$10^2$ \(10^2\)
$2^{1024}$ \(2^{1024}\)
$a_i$ \(a_i\)
$a_{i+1}$ \(a_{i+1}\)
$a_i^2$ \(a_i^2\)
$a^2_i$ \(a^2_i\)
$A_{i,j}=2^{i+j}$ \(A_{i,j}=2^{i+j}\)

表 1:上标与下标的示例

除此之外,上标与下标之间还是可以相互嵌套的,如表 2 所示。

公式编码 渲染效果
$2^{n_i}$ \(2^{n_i}\)
$2_{n^i}$ \(2_{n^i}\)
$2^{n^i}$ \(2^{n^i}\)
$2_{n_i}$ \(2_{n_i}\)
$2^{2^{2^{2}}}$ \(2^{2^{2^{2}}}\)

表 2:上标与下标的嵌套

在求和、积分等这类算子符号上,\(\LaTeX\) 基于排版因素的考虑,为避免文字过于拥挤或难看的行间距,对于行内公式和行间公式的上下标位置有不同的处理,譬如以求和式为例,其行内公式的上下标位于求和符号的右上角和右下角,而行间公式则位于求和符号的正上方和正下方。当然,我们也可以使用特定的 \(\LaTeX\) 命令来指定上下标的位置。例如,如果想让求和式的行内公式采用与行间公式相同的上下标位置,可以对它使用\limits命令。下面,让我们来具体演示一下求和式的上下标结构(图 2):

图2:求和式的上下标

不止如此,我们还可以引用amsmath宏包[1]中提供的 \(\LaTeX\) 命令,对上下标的位置进行更精确的指定。例如使用\sideset命令,可以在一个符号的四个角上各指定一个上下标。除此之外,我们还可以通过\overset\underset命令来指定一般符号的上下标位于其正上方或正下方,下面是这些命令的部分使用演示(见表 3):

公式编码 渲染效果
$\sideset{^a_b}{}{A}$ \(\sideset{^a_b}{}{A}\)
$\sideset{}{^c_d}{A}$ \(\sideset{}{^c_d}{A}\)
$\sideset{^a_b}{^c_d} A$ \(\sideset{^a_b}{^c_d}{A}\)
$\overset{*}{A}$ \(\overset{*}{A}\)
$\underset{*}{A}$ \(\underset{*}{A}\)
$\overset{*}{\underset{*}{A}}$ \(\overset{*}{\underset{*}{A}}\)

表 3:更多上下标结构的示例

对于amsmath宏包中其他与上下标相关的 \(\LaTeX\) 命令,读者可以自行参考相关的 \(\LaTeX\) 文档,这里就不再一一累述了。

线条与括号

我们在进行数学公式的推演和分析时,经常会需要在公式的上下方画上一些线或者花括号,以便标注一些信息,这也形成了一种独特的标注结构。在这一节中,我们就来介绍一下这种结构的公式编辑。先来看最简单的线条标注,在 \(\LaTeX\) 语言中,线条标注是通过\overline\underline这两个命令来完成的。请注意,这两个命令不止可以作用在一般结构的数学公式上,它们可以与任意结构的公式进行嵌套组合。下面,我们来演示一下它们的用法(见表 4):

公式编码 渲染效果
$\overline{ab}=\overline{a} \overline{b}$ \(\overline{ab}=\overline{a} \overline{b}\)
$\underline{c}=\underline{a^2+b^3}$ \(\underline{c}=\underline{a^2+b^3}\)
$\underline{\overline{a^2}+\overline{b}^3}$ \(\underline{\overline{a^2}+\overline{b}^3}\)
$a^{\overline{2}} + b^{\underline{3}}$ \(a^{\overline{2}} + b^{\underline{3}}\)

表 4:线条标注的示例

除此之外。我们还可以使用amsmath宏包中提供的六种带箭头的线条,它们分别是\overrightarrow\overleftarrow\overleftrightarrow\underrightarrow\underleftarrow\underleftrightarrow。下面,我们就来演示一下这些命令的用法(见表 5):

公式编码 渲染效果
$\overrightarrow{a+b}$ \(\overrightarrow{a+b}\)
$\overleftarrow{a+b}$ \(\overleftarrow{a+b}\)
$\overleftrightarrow{a+b}$ \(\overleftrightarrow{a+b}\)
$\underrightarrow{a+b}$ \(\underrightarrow{a+b}\)
$\underleftarrow{a+b}$ \(\underleftarrow{a+b}\)
$\underleftrightarrow{a+b}$ \(\underleftrightarrow{a+b}\)

表 5:带箭头的线条标注的示例

学习完线条标注的方法之后,接下来我们来看看如何用花括号来进行标注。在 \(\LaTeX\) 中,公式上下方的花括号标注是用\overbrace\underbrace这两个命令来完成的,它们与之前线条标注之间最大的区别,就是花括号可以通过上标和下标来对公式进行文字标注,这在我们描述数学公式的分析过程中是非常有用的。下面,让我们来演示一下这两个命令的用法(见表 6):

公式编码 渲染效果
$a+c-\overbrace{b \times d}$ \(a+c-\overbrace{b \times d}\)
$a+c-\underbrace{b \times d}$ \(a+c-\underbrace{b \times d}\)
$a+c-\overbrace{b \times d}^{\text{乘法优先}}$ \(a+c-\overbrace{b \times d }^{\text{乘法优先}}\)
$a+c-\underbrace{b \times d}_{\text{乘法优先}}$ \(a+c-\underbrace{b \times d}_{\text{乘法优先}}\)

表 6:花括号标注的示例

分式与根式

由于分式根式都属于数学公式中极为常见的结构,并且它们在结构上也都相对简单,所以,我们打算将它们放在同一节中来介绍。先从分式开始,在 \(\LaTeX\) 中,分式是通过\frac命令来实现的,其第一个参数为分子,第二个参数为分母。下面,我们来演示一下分式命令的具体使用(见表 7):

公式编码 渲染效果
$\frac{1}{2}$ \(\frac{1}{2}\)
$\frac{1}{a}$ \(\frac{1}{a}\)
$\frac{1}{a+b}$ \(\frac{1}{a+b}\)
$\frac{a+b}{2}$ \(\frac{a+b}{2}\)

表 7:分式结构的示例

请注意,我们在表格中使用的都是分式的行内公式形态,如果拿它们对比一下分式的行间公式形态(见图 3),就会发现其行内公式形态的分子和分母都使用了较小的字号,以配合普通文本的行高和行间距,以影响排版的整体质感。

图3:分式的两种排版

当然,有时在行间公式中,我们也会想要让公式某一部分的字体小一点,采用行内公式形态,某一部分的字体大一点,采用行间公式形态。这时候,我们就可以使用amsmath宏包中提供的\dfrac(行间形态)和\tfrac(行内形态)来具体指定。譬如通过对比图 4 中的公式,我们可以看到使用这些命令之后的效果:

图4:分式的两种排版命令

除此之外,我们还会看到一些类似的、分上下两层的公式结构,譬如二项式系数,它使用的是\binom命令,用法与分式命令完全一致,这里就不一一累述了。下面,我们来看看根式的结构,在 \(\LaTeX\) 中,根式是通过\sqrt命令来完成,该命令命令除了用于表示被开方数的指定参数外,还可以通过一个可选参数来表示开方的次数。我们来演示一下根式命令的具体使用(见表 8):

公式编码 渲染效果
$\sqrt{4}$ \(\sqrt{4}\)
$\sqrt[3]{8}$ \(\sqrt[3]{8}\)
$\sqrt[n]{a+b}$ \(\sqrt[n]{a+b}\)
$\sqrt[n]{\frac{1}{a+b}}$ \(\sqrt[n]{\frac{1}{a+b}}\)

表 8:根式结构的示例

同样地。我们也可以使用amsmath宏包中提供的命令,对根式的排版样式做一些指定。例如在一般状况下,根式的高度是随着其内容变化的,但当我们需要将几个根式并列出现在同一个公式中时,就会希望这些根式的高度是一致的,这时候就会需要用到\vphantom命令。我们可以来比对一下该命令使用之后的效果(见图 5):

图5:vphantom命令的效果

再例如,我们还可以通过\uproot\leftroot这两个命令来调整开方次数所显示的位置,这两个命令命令的参数允许我们输入基于标准位置的偏移单位(正数代表上移或左移,负数代表下移或右移),以调整位置(见图 6):

图6:调整开方次数的显示位置

矩阵结构

现在,让我们来介绍最后一种公式结构:矩阵。在 \(\LaTeX\) 排版系统中,矩阵不同于一般的公式结构,它是一个独立的排版环境。因此在编辑矩阵时,我们需要先用环境定义命令\begin\end来定义一个名为matrix的独立环境。例如,下面是两个 \(2 \times 2\) 的矩阵在执行加法运算:

$$
    \begin{matrix}
        a & b \\
        c & d \\
    \end{matrix}
    +
    \begin{matrix}
        a & b \\
        c & d \\
    \end{matrix}
$$

在上述矩阵的定义过程中,不同的列之间用符号“&”分隔,不同的行之间则用“\\”分割,其渲染效果如下:

\[ \begin{matrix} a & b \\ c & d \\ \end{matrix} + \begin{matrix} a & b \\ c & d \\ \end{matrix} \]

当然,这样的矩阵在排版效果上明显是太过简陋了,尤其在当我们像上面一样,将多个矩阵并列写在同一个公式中时,它们似乎应该要有个边框会更好。所以,如今我们更推荐使用amsmath宏包中提供的其他五种矩阵环境,下面是这些矩阵与matrix之间的对比(见表 9):

matrix pmatrix bmatrix Bmatrix vmatrix Vmatrix
\(\begin{matrix} a & b \\ c & d \\ \end{matrix}\) \(\begin{pmatrix} a & b \\ c & d \\ \end{pmatrix}\) \(\begin{bmatrix} a & b \\ c & d \\ \end{bmatrix}\) \(\begin{Bmatrix} a & b \\ c & d \\ \end{Bmatrix}\) \(\begin{vmatrix} a & b \\ c & d \\ \end{vmatrix}\) \(\begin{Vmatrix} a & b \\ c & d \\ \end{Vmatrix}\)

表 9:矩阵结构的对比

这些命令的方法大同小异,只要将\begin\end中的matrix参数改成相应的矩阵样式名称即可。比如,如果我们想为之前参与加法运算的矩阵加上一个中括号,就可以像下面这样做:

$$
    \begin{bmatrix}
        a & b \\
        c & d \\
    \end{bmatrix}
    +
    \begin{bmatrix}
        a & b \\
        c & d \\
    \end{bmatrix}
$$

其渲染效果如下:

\[ \begin{bmatrix} a & b \\ c & d \\ \end{bmatrix} + \begin{bmatrix} a & b \\ c & d \\ \end{bmatrix} \]

当然,如果某些矩阵过大,且无需将其中的元素全部输入,也可以在矩阵中使用\cdots\ddots\vdots这三个命令来输入一些省略号,以表示这些被省略的元素。例如:

$$
    \begin{bmatrix}
        1 & a_1 & a_1^2 & \cdots & a_1^n \\
        1 & a_2 & a_2^2 & \cdots & a_2^n \\
        \vdots & \vdots & \vdots & \ddots & \vdots \\
        1 & a_m & a_m^2 & \cdots & a_m^n \\
    \end{bmatrix}
$$

在这里,\cdots代表的是横向省略号、\ddots则代表了斜向省略号、而\vdots则代表纵向省略号,其渲染效果如下:

\[ \begin{bmatrix} 1 & a_1 & a_1^2 & \cdots & a_1^n \\ 1 & a_2 & a_2^2 & \cdots & a_2^n \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & a_m & a_m^2 & \cdots & a_m^n \\ \end{bmatrix} \]

在矩阵中0元素比较多的情况下,我们还可以使用嵌套矩阵的方法来编写一个分块矩阵,例如:

$$
    \begin{bmatrix}
        \begin{matrix} 1 & 1 \\ 0 & 1  \end{matrix} & \mathbf{0} \\
        \mathbf{0} & \begin{matrix} 1 & 1 \\ 0 & 1 \end{matrix} \\
    \end{bmatrix}
$$

如你所见,我们实际上是让内嵌矩阵成为了外层矩阵的元素,其渲染效果如下:

\[ \begin{bmatrix} \begin{matrix} 1 & 1 \\ 0 & 1 \end{matrix} & \mathbf{0} \\ \mathbf{0} & \begin{matrix} 1 & 1 \\ 0 & 1 \end{matrix} \\ \end{bmatrix} \]

以上这些矩阵采用的都是行间公式的形态,但我们有时候也会在普通文本中编写一些简单的行内矩阵,这就需要用很小的字体来显示矩阵,这时候就可以采用amsmath宏包中提供的smallmatrix行内矩阵样式。当然,由于这种矩阵样式并没有设置括号,所以我们要手工为其添加一对括号,例如:

我们也可以用$\left[ \begin{smallmatrix} a & -b \\ b & a \end{smallmatrix} \right]$这样的矩阵来表示一个复数。

其渲染效果如下:

我们也可以用\(\left[ \begin{smallmatrix} a & -b \\ b & a \end{smallmatrix} \right]\)这样的矩阵来表示一个复数。

数学公式中的符号

在掌握了以上几种公式结构之后,我们就基本上能够构建起一个数学公式的主要骨干了。但是,数学公式具体要计算的内容则还是需要其使用的具体数学符号来决定。在 \(\LaTeX\) 中,我们可以将数学公式中的符号按照作用分成三大类,它们分别用于命令字母与字体、运算与关系、分隔与连接这三种数学语义。在这一节中,我们就来介绍一下这三大类数学符号中比较常用的部分符号。如果读者想要知道全部的数学符号,还需要自行去查阅相关的 \(\TeX\) 文档。

字母与字体

让我们先从字母开始,数学公式中使用的字母主要为拉丁字母和希腊字母。其中,拉丁字母就是英文所用的字母,这26个字母(包括其大小写形态)都可以直接从键盘输入,不需要特定的命令来表示。但希腊字母的情况就要复杂一些了,除了部分字母与拉丁字母一致,可以直接用键盘输入外,其他就必须要用特定 \(\LaTeX\) 宏包(譬如amssymb)提供的命令来表示了,其常用字母如表 10 所示:

字母命令 显示效果 字母命令 显示效果 字符命令 显示效果 字符命令 显示效果
\alpha \(\alpha\) A \(A\) \beta \(\beta\) B \(B\)
\gamma \(\gamma\) \Gamma \(\Gamma\) \delta \(\delta\) \Delta \(\Delta\)
\epsilon \(\epsilon\) E \(E\) \zeta \(\zeta\) Z \(Z\)
\eta \(\eta\) H \(H\) \theta \(\theta\) \Theta \(\Theta\)
\iota \(\iota\) I \(I\) \kappa \(\kappa\) K \(K\)
\lambda \(\lambda\) \Lambda \(\Lambda\) \mu \(\mu\) M \(M\)
\nu \(\nu\) N \(N\) \xi \(\xi\) \Xi \(\Xi\)
o \(o\) O \(O\) \pi \(\pi\) \Pi \(\Pi\)
\rho \(\rho\) P \(P\) \sigma \(\sigma\) \Sigma \(\Sigma\)
\tau \(\tau\) T \(T\) \upsilon \(\upsilon\) \Upsilon \(\Upsilon\)
\phi \(\phi\) \Phi \(\Phi\) \chi \(\chi\) X \(X\)
\psi \(\psi\) \Psi \(\Psi\) \omega \(\omega\) \Omega \(\Omega\)

表 10:用于显示希腊字母的 \(\LaTeX\) 命令

这其中,部分希腊字母还有变量专用形态,它们的 \(\LaTeX\) 命令通常以\var-开头,具体如表 11 所示:

小写形态 大写形态 变量形态 显示效果
\epsilon E \varepsilon \(\epsilon \mid E \mid \varepsilon\)
\theta \Theta \vartheta \(\theta \mid \Theta \mid \vartheta\)
\rho P \varrho \(\rho \mid P \mid \varrho\)
\sigma \Sigma \varsigma \(\sigma \mid \Sigma \mid \varsigma\)
\phi \Phi \varphi \(\phi \mid \Phi \mid \varphi\)

表 11:希腊字母的变量专用形态

下面,我们再来看看这些字母使用的字体。在通常情况下,数学公式中的变量采用的是斜体的意大利体,常数采用的是直体的罗马体。当然,在特定情况下,我们也可以用以下 \(\LaTeX\) 命令来指定相关字母的字体(见表 12):

字体命令 字体名称 显示效果
\mathrm 罗马体 \(\mathrm{Sample}\)
\mathcal 花体 \(\mathcal{Sample}\)
\mathit 意大利体 \(\mathit{Sample}\)
\mathbb 黑板粗体 \(\mathbb{Sample}\)
\mathbf 粗体 \(\mathbf{Sample}\)
\mathsf 等线体 \(\mathsf{Sample}\)
\mathscr 手写体 \(\mathscr{Sample}\)
\mathtt 打字机体 \(\mathtt{Sample}\)
\mathfrak 旧德式字体 \(\mathfrak{Sample}\)

表 12:用于指定数学公式中字母字体的 \(\LaTeX\) 命令

指定字体的方式很简单,我们只需要在数学公式中以{\字体{Sample}}的形式使用上述字体命令,就可以将“Sample”这几个字符设置为指定字体了。除此之外,在必要情况下,我们还可以使用\color命令来指定这些字体的颜色,该命令的第一个参数为颜色的名称,第二个参数是被指定颜色的字符,譬如$\color{black}{Sample}$,就是将“Sample”这几个字符设置为black这个颜色(当然,这些颜色主要是面向 Web 浏览器的,对印刷品没有多大的意义)。在这里,可供我们选择的颜色如表 13 所示:

颜色名称 显示效果 颜色名称 显示效果
black \(\color{black}{Sample}\) grey \(\color{grey}{Sample}\)
silver \(\color{silver}{Sample}\) white \(\color{white}{Sample}\)
maroon \(\color{maroon}{Sample}\) red \(\color{red}{Sample}\)
yellow \(\color{yellow}{Sample}\) lime \(\color{lime}{Sample}\)
olive \(\color{olive}{Sample}\) green \(\color{green}{Sample}\)
teal \(\color{teal}{Sample}\) aqua \(\color{aqua}{Sample}\)
blue \(\color{blue}{Sample}\) navy \(\color{navy}{Sample}\)
purple \(\color{purple}{Sample}\) fuchsia \(\color{fuchsia}{Sample}\)

表 13:用于指定数学公式中字母颜色的 \(\LaTeX\) 命令

运算与关系

运算符

在了解了数学公式中所用的字母之后,接下来就可以关注公式中的运算符了。在这些运算符中,除了加减法以及上一节中介绍的乘方、开方、分式、矩阵这些具有特定结构的运算符之外,其它各种运算的符号基本也都有特定的\(\LaTeX\)命令。下面,我们继续来介绍一些常见的数学符号及其用法。

  • 对数运算:在数学中,对数运算是指数运算(即乘方运算)的逆运算,为最常见的数学运算之一,下面我们来演示一下如何用 \(\LaTeX\) 命令来描述该运算,首先是该运算的运算符:

    运算符命令 显示效果 运算符命令 显示效果 运算符命令 显示效果
    \log \(\log\) \lg \(\lg\) \ln \(\ln\)

    接下来,我们就可以试着来编写一些常见的对数运算公式:

    公式名称 公式编码 显示效果
    自然对数 $\ln a$ \(\ln a\)
    常用对数 $\lg a$ \(\lg a\)
    和差公式 $\log_{a}{MN} = \log_{a}{M} + \log_{a}{N}$ \(\log_{a}{MN} = \log_{a}{M} + \log_{a}{N}\)
    互换公式 $M^{\log_{a} N}=N^{\log_{a} M}$ \(M^{\log_{a} N}=N^{\log_{a} M}\)
    换底公式 $\log_{a} N=\frac{\log_{b}N}{\log_{b} a}$ \(\log_{a} N=\frac{\log_{b}N}{\log_{b} a}\)
  • 三角运算:三角形是平面几何的基础,它有着一套独特的数学表示方法。现在,我们要来看看如何用 \(\LaTeX\) 命令来表述这套表示方法。同样的,首先是一些符号的命令:

    运算符命令 显示效果 运算符命令 显示效果 运算符命令 显示效果
    30^\circ \(30^\circ\) \bot \(\bot\) \angle A \(\angle A\)
    \sin \(\sin\) \cos \(\cos\) \tan \(\tan\)
    \csc \(\csc\) \sec \(\sec\) \cot \(\cot\)

    接下来,我们用A、B、C来表示三角形的三条边,用 \(\alpha\)\(\beta\)\(\gamma\) 来表示三角形的三个角,并以R为三角形外接圆的半径来示范一下三角形问题的描述:

    公式名称 公式编码 显示效果
    三角之和 $\alpha+\beta+\gamma=180^\circ$ \(\alpha+\beta+\gamma=180^\circ\)
    正弦定理 $\frac{A}{\sin\alpha}=\frac{B}{\sin\beta}=\frac{C}{\sin\gamma}=2R$ \(\frac{A}{\sin\alpha}=\frac{B}{\sin\beta}=\frac{C}{\sin\gamma}=2R\)
    余弦定理 $C^2=A^2+B^2-2AB\cos\alpha$ \(C^2=A^2+B^2-2AB\cos\alpha\)
  • 比较运算:比较运算也是数学的一个重要分支,它在计算机程序设计领域中都有着重要的作用。我们在描述算法等问题时也都会需要表述比较运算。该运算除了><=这些可直接从键盘输入的运算符之外,也有一些运算符是需要用 \(\LaTeX\) 命令来表示的:

    运算符命令 显示效果 运算符命令 显示效果 运算符命令 显示效果
    \not< \(\not<\) \not> \(\not>\) \not= \(\not=\)
    \le \(\le\) \ge \(\ge\) \approx \(\approx\)
    \equiv \(\equiv\) \sim \(\sim\) \propto \(\propto\)

    下面照例来做几个演示:

    运算编码 显示效果
    if $a \not< b$, then $a \ge b$. if \(a \not< b\), then \(a \ge b\).
    if $a \not> b$, then $a \le b$. if \(a \not> b\), then \(a \le b\).
    if $a \approx b$, then $a \not= b$. if \(a \approx b\), then \(a \not= b\).
  • 集合运算:集合运算是离散数学的基础,在计算机科学领域有着非常重要的作用,我们在写计算机论文时少不了要描述这类运算,下面是一些集合运算符的 \(\LaTeX\) 命令:

    运算符命令 显示效果 运算符命令 显示效果 运算符命令 显示效果
    \emptyset \(\emptyset\) \in \(\in\) \notin \(\notin\)
    \subset \(\subset\) \supset \(\supset\) \subseteq \(\subseteq\)
    \supseteq \(\supseteq\) \cap \(\cap\) \cup \(\cup\)
    \bigvee \(\bigvee\) \bigwedge \(\bigwedge\) \biguplus \(\biguplus\)
    \forall \(\forall\) \exists \(\exists\) \not\subset \(\not\subset\)

    在这里,我们可以用上述命令来编写几条集合运算的基本法则,以作演示:

    公式名称 公式编码 显示效果
    同一律 $A \cup \emptyset =A$ \(A \cup \emptyset =A\)
    交换律 $A \cap B=B \cap A$ \(A \cap B=B \cap A\)
    结合律 $(A \cup B) \cup C=A \cup (B \cup C)$ \((A \cup B) \cup C=A \cup (B \cup C)\)
    分配律 $(A \cap B) \cup C=(A \cup C ) \cap (B \cup C)$ \((A \cap B) \cup C=(A \cup C ) \cap (B \cup C)\)
  • 微积分运算:微积分是高等数学的入门学科,内容主要包括极限、微分学、积分学及其应用。下面是我们在描述微积分运算时会用到的一些 \(\LaTeX\) 命令:

    运算符命令 显示效果 运算符命令 显示效果 运算符命令 显示效果
    \int \(\int\) \iint \(\iint\) \iiint \(\iiint\)
    \iiiint \(\iiiint\) \oint \(\oint\) \prime \(\prime\)
    \lim \(\lim\) \infty \(\infty\) \nabla \(\nabla\)

    我们不妨在这里复习一下当年在大学一年级时写过的那些公式,只不过当时应该是手写为主,现在我们要用的是 \(\LaTeX\) 命令:

    公式名称 公式编码 显示效果
    不定积分 $\int f(x)\, \mathrm{d} x$ \(\int f(x)\, \mathrm{d} x\)
    定积分 $\int^b_a f(x)\, \mathrm{d} x$ \(\int^b_a f(x)\, \mathrm{d} x\)
    微分方程 $\frac{\mathrm{d}x(t)}{\mathrm{d}t} = f\bigl(x(t)\bigr)$ \(\frac{\mathrm{d}x(t)}{\mathrm{d}t} = f\bigl(x(t)\bigr)\)
    极限运算 $\lim_{n \to \infty} \frac{1}{n(n-1)}$ \(\lim_{n \to \infty} \frac{1}{n(n-1)}\)

    当然,除上述运算外,我们在描述数学问题过程中还可能会用到如下这些运算符:

    运算符命令 显示效果 运算符命令 显示效果 运算符命令 显示效果
    \pm \(\pm\) \times \(\times\) \div \(\div\)
    \mid \(\mid\) \nmid \(\nmid\) \cdot \(\cdot\)
    \circ \(\circ\) \ast \(\ast\) \bigodot \(\bigodot\)
    \bigotimes \(\bigotimes\) \bigoplus \(\bigoplus\) \sum \(\sum\)
    \prod \(\prod\) \coprod \(\coprod\) \backslash \(\backslash\)
    \because \(\because\) \therefore \(\therefore\)

    这些 \(\LaTeX\) 命令的使用与上述运算大同小异,这里就不一一示范了,读者可自行查阅相关文档。

定界符

在数学公式中,除了参与运算的字母变量、数字以及表明运算类型的运算符之外,以括号为代表的定界符也是一类非常重要的符号。众所周知,数学公式的编辑是离不开各种各样的括号的,我们需要用它们来凸显公式中的重点、对公式进行分组、甚至改变公式的运算顺序。在 \(\LaTeX\) 中,括号是由开符号和闭符号组成的,所以我们要分两个命令来表列 \(\LaTeX\) 所提供的括号种类,具体如表 14 所示:

括号类型 开符号 闭符号 示例编码 显示效果
圆括号 ( ) $a+(b-c)$ \(a+(b-c)\)
方括号 [ ] $a+[b-c]$ \(a+[b-c]\)
花括号 \lbrace \rbrace $a+\lbrace b-c \rbrace$ \(a+\lbrace b-c \rbrace\)
尖括号 \langle \rangle $a+\langle b-c \rangle$ \(a+\langle b-c \rangle\)
向上取整 \lceil \rceil $a+\lceil b-c \rceil$ \(a+\lceil b-c \rceil\)
向下取整 \lfloor \rfloor $a+\lfloor b-c \rfloor$ \(a+\lfloor b-c \rfloor\)

表 14\(\LaTeX\) 中常用的括号类型及其编码

由于数学结构的关系,我们有时候会希望括号的大小是可以随着公式结构变化的。为实现这个效果,我们需要在括号的开符号之前加上\left命令,闭符号之前加上\right命令。例如,对于下面这个公式:

\[ \alpha_x \alpha_y \left[ \frac{1}{3} \left( x^2+y^{\left( 2x-y \right)} \right)^2 + xy \right] \]

我们需要在Markdown文档中输入如下编码:

$$
    \alpha_x \alpha_y \left[ \frac{1}{3} \left( x^2+y^{\left( 2x-y \right)} \right)^2 + xy \right]
$$

请注意,\left\right这两个命令必须要位于同一逻辑行中,否则就无法配对,但它们所配对的定界符不一定是括号,甚至一个句点也可以的。当然,定界符也并非只有括号这种配对的符号,如表 15 所示公式中的竖线和斜线也都属于定界符:

定界符 公式编码 显示效果
/ $f(x)/(x-1)$ \(f(x)/(x-1)\)
\backslash $f(x) \backslash x-1$ \(f(x) \backslash x-1\)
\mid $f(x) \mid x-1$ \(f(x) \mid x-1\)
\Vert $f(x) \Vert x-1$ \(f(x) \Vert x-1\)

表 15\(\LaTeX\) 中常用的定界符及其编码

对这种不成对的单一定界符,我们也可以使用\middle命令令其根据公式的结构调整自身大小。例如,对于下面这个公式:

\[ \Pr\!\left( X>\tfrac{1}{3} \,\middle|\, Y=0 \right) = \dfrac{\int_0^1 p(t)\,\mathrm{d}t}{N^2+1} \]

我们只需要在Markdown文档中输入如下编码:

$$
   \Pr\!\left( X>\tfrac{1}{3} \,\middle|\, Y=0 \right)
= \dfrac{\int_0^1 p(t)\,\mathrm{d}t}{N^2+1}
$$

编写多行公式

如果我们在撰写科学性文章时讨论的数学问题都是用行内公式,或者单行的行间公式就能表述的,那么即使用 Office Word 中的相关工具来编辑这些公式也不是一件多么让人不可接受的事情。但现实是残酷的,哪怕我们要演示一个开方运算的过程,其演算列表也少不了要连续写个五六行,更何况我们还会遇到长度足以需要换行的长公式,以及根据参数条件分组的条件公式。只有在编写这些公式时,人们才能真正体会到 \(\LaTeX\) 语言的强大。下面,就让我们来具体讨论一下多行公式的编辑。

和矩阵一样,多行公式在 \(\LaTeX\) 中也被视为一个独立的排版环境。所以,我们首先需要用环境定义命令\begin\end定义一个用于编辑多行公式的环境。同样的,在定义这些环境时也需要指定该环境的名称,我们最常用的多行公式环境有两种:

  • 第一种是gather,在这种公式环境中,所有公式都会采用居中对齐的方式排列,这也是最普通的多行公式排版方式。例如,如果想撰写下面这样的一个三元线性方程组:

    \[ \begin{gather} \alpha_{11}x+\alpha_{12}y+\alpha_{13}z=A \\ \alpha_{21}x+\alpha_{22}y+\alpha_{23}z=B \\ \alpha_{31}x+\alpha_{32}y+\alpha_{33}z=C \\ \end{gather} \]

    我们就可以在 Markdown 文档中输入如下编码:

    $$
      \begin{gather}
          \alpha_{11}x+\alpha_{12}y+\alpha_{13}z=A \\
          \alpha_{21}x+\alpha_{22}y+\alpha_{23}z=B \\
          \alpha_{31}x+\alpha_{32}y+\alpha_{33}z=C \\
      \end{gather}
    $$
    
  • 第二种是align,它会让公式环境中的所有公式按用&符指定的符号对齐。例如,如果想撰写下面这样的一个演算列表:

    \[ \begin{align} \sqrt{37} & = \sqrt{\frac{73^2-1}{12^2}} \\ &= \sqrt{\frac{73^2}{12^2}\cdot\frac{73^2-1}{73^2}} \\ &= \sqrt{\frac{73^2}{12^2}}\sqrt{\frac{73^2-1}{73^2}} \\ &= \frac{73}{12}\sqrt{1 - \frac{1}{73^2}} \\ &\approx \frac{73}{12}\left(1 - \frac{1}{2\cdot73^2}\right) \end{align} \]

    我们就需要使用align样式,令其按等号对齐,具体编码如下:

    $$
      \begin{align}
          \sqrt{37} & = \sqrt{\frac{73^2-1}{12^2}} \\
          &= \sqrt{\frac{73^2}{12^2}\cdot\frac{73^2-1}{73^2}} \\
          &= \sqrt{\frac{73^2}{12^2}}\sqrt{\frac{73^2-1}{73^2}} \\
          &= \frac{73}{12}\sqrt{1 - \frac{1}{73^2}} \\
          &\approx \frac{73}{12}\left(1 - \frac{1}{2\cdot73^2}\right)
      \end{align}
    $$
    

当然,我们还可以使用flalignalignat这两种公式环境,使用方式大同小异,读者可以自行查阅相关文档。下面,我们来看看如何撰写按条件分组的公式。事实上,这种公式的写法就是在一个单行的公式中嵌套一个样式为cases的多行公式环境。例如,如果想撰写这样一个按奇偶数分组的公式:

\[ f(n) = \begin{cases} n/2, & \text{若$n$为偶数} \\ 3n+1, & \text{若$n$为奇数} \\ \end{cases} \]

我们就只需要在 Markdown 文档中输入如下编码即可:

$$
  f(n) =
      \begin{cases}
          n/2,  & \text{若$n$为偶数} \\
          3n+1, & \text{若$n$为奇数} \\
      \end{cases}
$$

同样的,cases只是分组公式环境最常见的一种,如果我们能引入mathtools宏包的话,还能使用gatheredalignedalignedatmultlined等环境,它们的使用方式也大同小异,读者可以自行查阅相关文档,这里就不一一累述了。

在研究完如何罗列多个公式之后,让我们最后再来回头关心一下应该如何将单一公式分行显示。其实分行显示一个公式的方法也非常简单,就是先定义出要使用的多行公式环境(例如gatheralign等),然后在编辑公式过程中使用\\来分行即可。例如,如果想撰写下面这样的一个公式:

\[ \begin{align} a&+b+c+d+e \\ &+f+g+h+i \\ &+j+k+l+m \\ &+n+o+p+q \\ &+r+s+t+u \\ &+v+w+x+y+z \end{align} \]

我们只需要在 Markdown 文档中输入如下编码即可:

$$
  \begin{align}
        a&+b+c+d+e \\
         &+f+g+h+i \\
         &+j+k+l+m \\
         &+n+o+p+q \\
         &+r+s+t+u \\
         &+v+w+x+y+z
  \end{align}
$$

笔记小结

通过这篇学习笔记,我们介绍了使用 \(\LaTeX\) 编辑数学公式的基本方法。首先是数学公式在计算机文档中的两种排版形式(即行内公式和行间公式),以及它们在 Markdown 文档中的具体编写形式。接着,我们介绍了上下标、分式与根式、矩阵等各种不同的数学公式结构及其编辑方法,以及其中常用的符号,这些符号主要分为字母与字体、运算符、定界符三大类。最后,我们还学习了如何编写多行公式,包括罗列多个公式、按条件分组的公式以及分行显示单一公式的方法。

当然,这篇笔记更多地是基于 Markdown 文档在介绍数学公式的编辑方法。由于 Markdown 文档阅读器所内置的 MathJax 或 KaTeX 等渲染引擎能让我们无需手动指定要使用的宏包,即可直接使用 \(\LaTeX\) 命令编辑数学公式,所以其中介绍的内容并不全面。如果读者想要撰写更为专业的学术文档,就需要直接使用 \(\LaTeX\) 系统来对文档进行排版了,这会涉及到更为具体的宏包加载以及相关命令的使用。关于这部分的内容,我们将会留到[[LaTeX学习笔记:学术文档排版]]这篇笔记中进行专题介绍。


  1. 注释:amsmath宏包是LaTeX中最常用的组件之一,由美国数学协会(AMS)设计开发,它全面扩展了LaTeX的数学表述能力,目前已经成为了LaTeX中的必备组件。 ↩︎

posted on 2025-11-07 12:42  凌杰  阅读(524)  评论(0)    收藏  举报

导航