怎样用LaTeX优雅地打印数学的一切
关于AMS-math系统的介绍,有关于数学打印的一切。
LaTeX有强大的排版公式能力,你可以在很短的时间内打印出一份符合规范的数学论文。
以下均使用宏包amsmath
综述
LaTeX有两种特定的模式来排版数学公式,包括行内数学模式和行间数学模式。
行内数学模式将公式排版在一个段落中,使用方式为\(...\)
、$...$
和\begin{math} ... \end{math}
.
行间数学模式一般用于较长的数学方程或希望单独显示的公式,使用方式为\[...]
和`\begin{displaymath}...\end{displaymath}。
有些符号在这两种模式显示效果有很大不同。一般称行内数学模式显示的格式为文本格式,行间数学模式显示的格式为显示模式。
在TexStudio中,行内数学模式快捷键为Ctrl+Shift+M
行间模式快捷键为Alt+Shift+M
如果希望将方程编号,并在之后使用标签去交叉引用,就需要用到equation
环境。注意equation
已经是数学环境,所以不需要再里面加入$...$
或\[...]
。
数学模式的群组
大部分数学模式的命令只对其后的一个字符有效,因此,如果你希望一个命令对多个字符起作用,你必须把它们放在一个群组中,使用花括号:{}
$ 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}
\DeclarMathOperator{\st}{s.t.}
%试比较下面两种表示
$\st x>0$
$s.t. x>0$
取模 有两个命令:\bmod
用于二元运算"a mod b"; 而\pmod
则用于模的方程。
$a \bmod b$\\
$ x \equiv a \pmod {b}$
分式 上下形式的分式基本命令为\frac
。amsmath 提供了另外两种命令\dfrac
和\tfrac
, 前者无论行间环境还是行内环境都打印显示模式,后者则无论行间还是行内都打印文本模式。 一般对较小的分式可以直接输入/
。
TexStudio 中,\frac
的快捷键为Alt+Shift+F
,\dfrac
的快捷键为Ctrl + Shift + F
。跳到下一个可编辑区域的快捷键为Ctrl+→
。
$ \dfrac{1}{k} \; \frac{1}{k} \; \tfrac{1}{k}$
\[ \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
。
\[ (\prod_{i=1}^{n})x_{i} ) \quad \left(\prod_{i=1}^{n} x_{i}\right ) \]
三点列 \ldots
得到在基线上的点,\cdots
得到上下居中的点。另外在表格和矩阵中\vdots
得到竖直的点,\ddots
得到对角线的点。
一般来说,用在列举时用基线的点,用在相似项相加时用上下居中的点。
\[ x_{1},\ldots.x_{n} \quad x_{1}+\cdots + x_{n} \]
下举一例运用到所有知识
$ \forall \alpha, \beta> 0, $ 成立
\[ \dfrac{\alpha+\beta}{2} > \sqrt{\alpha \cdot \beta}\]
将这个结论推广, 可以得到 ~$\forall x_{1},\ldots ,x_{n}>0, $
\[ \dfrac{x_{1}+\cdots+x_{n} }{n} > \sqrt[n]{x_{1} \cdots x_{n}}\]
对于任意非零复向量~$\alpha, $ 成立
\[ \alpha \bar{\alpha}' >0 \]
三角不等式
\[\left |\overrightarrow{AC}\right | \leq \left |\overrightarrow{AB}\right |+\left |\overrightarrow{BC}\right | \]
一个不等式
\[ \prod_{i=1}^{n} x_{i}y_{i} \leq \left \{\prod_{i=1}^{n}x_{i}^{2}\right \}^{1/2} \left \{\prod_{i=1}^{n}y_{i}^{2}\right \}^{1/2}\]
数学空格
有时候由TeX选择的空格不令人满意,可以插入一些特殊的空格控制命令来调整。空格由小到大依次为\,, \:, \;, \quad, \qquad
在重积分的空格选取中,amsmath提供了\iint, \iiint, \iiiint, \idotint
来生成重积分号。
垂直取齐
矩阵
amsmath宏包提供了一系列用于排版的矩阵环境,都依托于LaTeX中的array
环境。
环境 | 矩阵 |
---|---|
pmatrix | () |
bmatrix | [] |
Bmatrix | {} |
vmatrix | || |
Vmatrix | || || |
同样也提供了用于生成行内数学模式中的小矩阵环境smallmatrix
矩阵环境中的下一列和换行命令与表格中一致。
\[ \det(A)=\begin{vmatrix}
a_{11} & a_{12} & \cdots & a_{1n}\\
a_{21} & a_{22} & \cdots & a_{2n}\\
\cdots & \cdots & \cdots & \cdots\\
a_{n1} & a_{n2} & \cdots & a_{nn}\\
\end{vmatrix} \]
分段函数
amsmath宏包提供了cases
环境用于方便排版分段函数。
\[ \delta(x)=\begin{cases}
1 &x=0,\\
0 & x\neq0.
\end{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
环境用于带对齐的排版多个公式,同样每个公式都有自己的编号。使用&
对齐,使用\\
换行。
使用额外单独的&
可以得到类似表格的一列列公式,例如考虑下列式子。
\begin{align}
x& = y_1-y_2+y_3-y_5+y_8-\dots
&\quad& \text{式子}\\
& = y’\circ y^* && \text{式子}\\
& = y(0) y’ && \text {式子}
\end{align}
alignat{n}
环境可以生成类似表格的对齐公式组,其中n
为列数。
\begin{alignat*}{2}
x& = y_1-y_2+y_3-y_5+y_8-\dots
&\quad& \text{式子}\\
& = y’\circ y^* && \text{式子}\\
& = y(0) y’ && \text {式子}
\end{alignat*}
实际宽度的公式块
gather, align, alignat
生成的是占满整个文档宽度的公式块,有时候我们需要将公式块包在一个括号之中。可以用到下面的命令。
gathered,aligned, alignedat
这些命令可以生成公式实际宽度的块,所以可以用在条件之中。例如
\begin{equation*}
\left.\begin{aligned}
B’&=-\partial\times E,\\
E’&=\partial\times B - 4\pi j,
\end{aligned}
\right\}
\qquad \text{Maxwell’s equations}
\end{equation*}
文本截断公式
\intertext
用于将一行简短的文本插入到公式组中,只能用在\\
中。
\begin{align}
a^{2}\\
\intertext{文字}
b^{2}
\end{align}
公式编号
在LaTeX中,如果你想将公式编码中带上节数,可以使用命令\numberwithin
\numberwithin{equation}{section}
因为其他公式环境都是由equation
生成,所以只需要定义equation
即可。
\eqref
提供了带括号的公式引用。
环境subequations
可以生成类似(4.9 a),(4.9 b)之类的编号。
\begin{equation}
e^{i\pi}=1
\end{equation}
\begin{multline}
x^{2}+y^{2}=\\
z^{2}
\end{multline}
\[ \begin{split}
\sum_{i=1}^{n} (x_{i}+y_{i})^{2} =& \sum_{i=1}^{n} x_{i}^{2} + \sum_{i=1}^{n} y_{i}^{2}\\
&+2\sum_{i=1}^{n} x_{i}y_{i}
\end{split} \]
\begin{gather}
a=b\\
c=d
\end{gather}
\begin{align}
x& = y_1-y_2+y_3-y_5+y_8-\dots
&\quad& \text{式子}\\
& = y’\circ y^* && \text{式子}\\
& = y(0) y’ && \text {式子}
\end{align}
\begin{alignat*}{2}
x& = y_1-y_2+y_3-y_5+y_8-\dots
& \text{式子}\\
& = y'\circ y^* & \text{式子}\\
& = y(0) y' & \text {式子}
\end{alignat*}
\begin{equation*}
\left.\begin{aligned}
B’&=-\partial\times E,\\
E’&=\partial\times B - 4\pi j,
\end{aligned}
\right\}
\qquad \text{Maxwell’s equations}
\end{equation*}
\begin{align}
a^{2}\\
\intertext{文字}
b^{2}
\end{align}
定理
排版“引理”、“定义”、“公理”及其他类似的结构。
宏包amsthm
提供了\newtheoremstyle{style}
命令,通过三个预定义的样式中选择一个来定义定理的外观。三个样式分别为
样式 | 标题 | 内容 |
---|---|---|
defination | 粗体 | 罗马体 |
plain | 粗体 | 斜体 |
remark | 斜体 | 罗马体 |
在导言区使用命令示例如下
\theoremstyle{definition} \newtheorem{law}{定律}
%\newtheorem{name}[counter]{text} 其中counter表示与某个定理环境共用计数器
\theoremstyle{plain} \newtheorem{jury}[law]{定理}
%\newtheorem*{name}[counter]{text} 其中*表示无编号
\theoremstyle{remark} \newtheorem*{remark}{注记}
在正文区可以使用命令\begin{name}[text]...\end{name}
来使用名字为name的定理环境,其中text参数为定理的名字。
%导言区添加
\theoremstyle{definition} \newtheorem{law}{定律}
\begin{law}[April][section]
四月(April)总是呆不住
\end{law}
amsthm
还提供一个proof
环境。命令为\begin{proof}...\end{proof}
可以在导言区重新定义proofname
使其支持中文,命令为
%导言区添加
\renewcommand{\proofname}{证明}
\begin{proof}
伪装成证明
\end{proof}
命令\qedhere
可以手动移动“证毕”符。