怎样用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的equationeqnarry 环境。但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可以手动移动“证毕”符。

推荐阅读更多精彩内容

  • 字母形式的LaTeX 命令忽略其后的所有空格。如果要人为引入空格,需要在命令后面加一对括号:\TeX{} 阻止其忽...
    ibunny阅读 2,499评论 0 2
  • 今天主要总结了latex的一些基本配置和使用latex进行科技论文写作的基本要素(书写文档,插入表格,插入图片,插...
    tao_zhaojun阅读 7,567评论 1 22
  • 本文目录: 题外话 熟悉LaTeXLaTeX的读音和写法书中介绍的LaTeX版本会不会过时再谈LaTeX发行版 一...
    纸山阅读 22,921评论 6 28
  • latex 写公式会遇到下面几种情况,分别如下处理:1,正常。就用普通的 \begin{equation}\beg...
    曹博博阅读 375评论 0 1
  • 做数学建模时,用一个小时的时间教会了队友LaTeX,这是当时的讲义。 关于TeX的介绍 TeX是全世界最专业也是最...
    MrGod阅读 6,408评论 4 79