用 LaTeX 优雅地书写数学
简要介绍用Latex写数学论文的各种必备知识。
读者阅读该文章时,最好将代码块中的代码实际运行一下,看看是什么效果.
关于Latex的基本知识,参看一小时学会用Latex
更多的参考资料,可查阅 More math in latex
LaTeX有强大的排版公式能力,你可以在很短的时间内打印出一份符合规范的数学论文。
以下均使用宏包**amsmath**
最好养成看宏包文档的习惯
综述
LaTeX有两种特定的模式来排版数学公式,包括行内数学模式和行间数学模式。
行内数学模式将公式排版在一个段落中,使用方式为\(...\)
、$...$
和\begin{math} ... \end{math}
.
行间数学模式一般用于较长的数学方程或希望单独显示的公式,使用方式为\[...\]
和\begin{displaymath}...\end{displaymath}
有些符号在这两种模式显示效果有很大不同。一般称行内数学模式显示的格式为文本格式,行间数学模式显示的格式为显示模式。
在TexStudio中,行内数学模式快捷键为Ctrl+Shift+M
行间模式快捷键为Alt+Shift+M
如果希望将方程编号,并在之后使用标签去交叉引用,就需要用到equation
环境。注意equation
已经是数学环境,所以不需要再里面加入$...$
或\[...\]
。
数学模式的群组
大部分数学模式的命令只对其后的一个字符有效,因此,如果你希望一个命令对多个字符起作用,你必须把它们放在一个群组中,使用花括号:{}
1 | $ e^{i\pi} =1 $ |
数学公式的基本元素
下面介绍一些数学排版中最重要的一些命令。这些命令必须包括在数学模式中,即$...$
或\[...\]
。
希腊字母 小写输入为\alpha, \beta, \gamma, ...
大写输入为\Gamma, \Delta
指数和下标 可以分别通过^
和_
两个符号指定,注意如果指数和下标超过了一个字符,需要用到群组。即把文本用花括号括起来。惯例是先输下标后输指数。
在TexStudio中,下标的快捷键为Ctrl+Shift+D
,指数的快捷键为Ctrl+Shift+U
平方根 输入用\sqrt{}
, n次方根用\sqrt[n]{}
来得到。仅仅需要根号,可以用\surd
得到。
在TexStudio中,平方根的快捷键为CtrlShift+Q
水平线 用命令\overline
和\underline
实现。注意单个字符上加一短横的命令为\bar
撇 用'
可以输入一个撇号。
向量 单个字符上的小箭头用\vec
, 由A到B的向量用命令\overrightarrow
和\overleftarrow
指定。
点 命令\cdot
函数 通常用直立字体,LaTeX预制了很多函数命令。例如\log, \cos
等。如果需要自己定义函数,可以使用amsmath中的命令\DeclareMathOperator{\xxx}{XXX}
1 | \DeclareMathOperator{\st}{s.t.} |
取模 有两个命令:\bmod
用于二元运算”a mod b”; 而\pmod
则用于模的方程。
1 | $a \bmod b$\\ |
分式 上下形式的分式基本命令为\frac
。amsmath 提供了另外两种命令\dfrac
和\tfrac
, 前者无论行间环境还是行内环境都打印显示模式,后者则无论行间还是行内都打印文本模式。 一般对较小的分式可以直接输入/
。
TexStudio 中,\frac
的快捷键为Alt+Shift+F
,\dfrac
的快捷键为Ctrl + Shift + F
。跳到下一个可编辑区域的快捷键为Ctrl+→
。
1 | $ \dfrac{1}{k} \; \frac{1}{k} \; \tfrac{1}{k}$ |
积分,求和,乘积 他们分别用\int, \sum, \prod
表示,其中上限和下限用^
和_
表示
重积分使用
\iint, \iiint, \idotsint
定界符 小括号和中括号可以直接打出,大括号需要用\{\}
转义。 一般情况下需要调整定界符的大小,在左定界符前加\left
, 并在右定界符前加\right
。LaTeX会自动调整定界符的大小。有时候自动调整效果不满意,可以使用\big, \Big, \bigg, \Bigg
来调整定界符大小。
TexStudio中,\left
的快捷键为Ctrl+Shift+L
, \right
的快捷键为Ctrl+Shift+R
。
1 | \[ (\prod_{i=1}^{n})x_{i} ) \quad \left(\prod_{i=1}^{n} x_{i}\right ) \] |
三点列 \ldots
得到在基线上的点,\cdots
得到上下居中的点。另外在表格和矩阵中\vdots
得到竖直的点,\ddots
得到对角线的点。
一般来说,用在列举时用基线的点,用在相似项相加时用上下居中的点。
1 | \[ x_{1},\ldots.x_{n} \quad x_{1}+\cdots + x_{n} \] |
下举一例运用到所有知识
1 | $ \forall \alpha, \beta> 0, $ 成立 |
数学空格
有时候由TeX选择的空格不令人满意,可以插入一些特殊的空格控制命令来调整。空格由小到大依次为\,, \:, \;, \quad, \qquad
在重积分的空格选取中,amsmath提供了\iint, \iiint, \iiiint, \idotint
来生成重积分号。
垂直取齐
矩阵
amsmath宏包提供了一系列用于排版的矩阵环境,都依托于LaTeX中的array
环境。
环境 | 矩阵 |
---|---|
pmatrix | () |
bmatrix | [] |
Bmatrix | {} |
vmatrix | |
Vmatrix |
同样也提供了用于生成行内数学模式中的小矩阵环境smallmatrix
矩阵环境中的下一列和换行命令与表格中一致。
1 | \[ \det(A)=\begin{vmatrix} |
分段函数
amsmath宏包提供了cases
环境用于方便排版分段函数。
1 | \[ \delta(x)=\begin{cases} |
长公式
amsmath宏包提供了很多用于长公式排版的命令,一般基于LaTeX的equation
和eqnarry
环境。但amsmath文档建议不再使用LaTeX的长公式环境。
在公式环境中,命令\tag{num}
可以生成公式的编号。命令\notag
可以取消公式的编号。
单行公式
equation
环境用于生成带编号的单行公式,equation*
环境则生成不带编号的单行公式。
无对齐的多行公式
multline
环境可以将一个长公式分成几行,并赋予一个编号。一般第一行左对齐,最后一行右对齐。可以用命令\shoveleft
和\shoveright
来强制左对齐或右对齐。
可以用宏包选项\reqno
和\leqno
来决定编号放在最后一行之后还是第一行之前。
对齐的多行公式
split
环境可以将一个长公式分成几行,并且使用&
可以指定每一行对齐什么符号,使用\\
换行。注意split
环境没有编号,并且只能被用在其他行间模式的环境中。比如equation, gather, align
无对齐的公式组
gather
环境用于一次排版多个公式,其中每个公式都有自己的编号,使用\\
换行。对应的gather*
则排版多个不带编号的公式。gather
环境中可以嵌套split
环境。
对齐的公式组
align
环境用于带对齐的排版多个公式,同样每个公式都有自己的编号。使用&
对齐,使用\\
换行。
使用额外单独的&
可以得到类似表格的一列列公式,例如考虑下列式子。
1 | \begin{align} |
alignat{n}
环境可以生成类似表格的对齐公式组,其中n
为列数。
1 | \begin{alignat*}{2} |
实际宽度的公式块
gather, align, alignat
生成的是占满整个文档宽度的公式块,有时候我们需要将公式块包在一个括号之中。可以用到下面的命令。
gathered,aligned, alignedat
这些命令可以生成公式实际宽度的块,所以可以用在条件之中。例如
1 | \begin{equation*} |
aligned
可以有参数 [t]
, 表示按照第一行对齐。
文本截断公式
\intertext
用于将一行简短的文本插入到公式组中,只能用在\\
中。
1 | \begin{align} |
公式编号
在LaTeX中,如果你想将公式编码中带上节数,可以使用命令\numberwithin
1 | \numberwithin{equation}{section} |
因为其他公式环境都是由equation
生成,所以只需要定义equation
即可。
\eqref
提供了带括号的公式引用。
环境subequations
可以生成类似(4.9 a),(4.9 b)之类的编号。
1 | \begin{equation} |
定理
排版“引理”、“定义”、“公理”及其他类似的结构。
简单示例
1 | % 引言区 |
高级
宏包amsthm
提供了\newtheoremstyle{style}
命令,通过三个预定义的样式中选择一个来定义定理的外观。三个样式分别为
样式 | 标题 | 内容 |
---|---|---|
defination | 粗体 | 罗马体 |
plain | 粗体 | 斜体 |
remark | 斜体 | 罗马体 |
在导言区使用命令示例如下
1 | \theoremstyle{definition} \newtheorem{law}{定律} |
在正文区可以使用命令\begin{name}[text]...\end{name}
来使用名字为name的定理环境,其中text参数为定理的名字。
1 | %导言区添加 |
amsthm
还提供一个proof
环境。命令为\begin{proof}...\end{proof}
可以在导言区重新定义proofname
使其支持中文,命令为
1 | %导言区添加 |
命令\qedhere
可以手动移动“证毕”符。
Chat: [email protected]