Evian Zhang's
naive blog

LaTeX入门(十一)——公式

终于,终于我们要进入LaTeX最著名的部分了——公式编辑。不得不说,LaTeX对数学公式的处理还是比其他软件高超得多,而我们日常看到的绝大多数排版出来的公式,也都是LaTeX的功劳。LaTeX的数学公式排版功能如此强大,也是由于其关于数学公式方面有一整套完善的框架来完成。下面我们将一点点介绍LaTeX的数学模式。

首先,LaTeX本身自带数学公式的排版指令,但并不是十分丰富和完善。美国数学学会(American Mathematical Society, AMS)为LaTeX提供了一个宏包 amsmath . 这个宏包是我们在进行数学方面写作的时候必须使用的宏包。因此,我们首先需要在导言区写上

 \usepackage{amsmath}

行内公式与行间公式

总得来说,在一篇论文中,公式的表现形式有两种:行内公式与行间公式。行内公式是指与其前后上下文出现在同一行内的公式,而行间公式则是单独为一行的公式。行内公式一般并不是关键性公式,只是个别一个小步骤或者辅助性公式,而行间公式则一般是大型公式或事关键性公式。

说了这么多,行内公式和行间公式有什么区别呢?我们来看一下一个例子:

在这个例子中,关于 $\displaystyle x_i$ 的公式是行内公式,而关于 $\displaystyle y$ 的公式是行间公式。而我的源码则是:

If we let $x_i=\sum_{j=1}^ma_{ij}$, then we can get
\[
y=\sum_{i=1}^nx_i.
\]

这里面具体的指令我们之后再说。但我们在这里发现, $...$ 中产生的是行内公式, \[...\] 中产生的是行间公式。对于同样的指令 \sum ,在行内公式里, $\displaystyle j=1$ $\displaystyle m$ 都在它的右边,而在行间公式中,则跑到了它的上面和下面。这也是数学论文写作的规范,也就是,在行内的公式应该压缩其上下,而行间的则不用。这就是行内公式与行间公式的主要区别。

正如上面所说, $...$ 中产生的是行内公式, \[...\] 中产生的是行间公式。而行间公式还有许许多多的环境可以使用,这个之后会提及。那么,怎么在行内产生行间公式的效果呢?用 \displaystyle 命令。也就是, $\displaystyle...$ 其后的行内公式都会有行间公式的效果。比如说,如果我的源码变成了

 If we let $\displaystyle x_i=\sum_{j=1}^ma_{ij}$, then we can get
\[
y=\sum_{i=1}^nx_i.
\]

那么最终排版出来的效果是:

此外,还有针对单个运算符的改变方式,这个会在之后讲到上标与下标的时候提及。

数学模式

根据我们上面的例子,大家应该对LaTeX的数学模式有了一个大致的印象了。也就是说,在正常情况下,是文本模式,基本上就是啥都可以输入,但是不会排版出数学公式来。我如果在正常的文本模式下输入 \sum_{j=1}^n 这样的数学公式的指令,那么是会报错滴。进入数学模式,只有通过 $...$ , \[...\] 或者其他数学模式环境才能进入数学模式。在数学模式中,输入的都会被认作是数学公式。比如说,我如果在数学模式中输入 naive , 排版出来的结果会是 $\displaystyle naive$ . 不仅字体不一样,而且其他文本信息也不一样。因为LaTeX自动会认为这是一个变量的名字。所以,除非特殊情况,否则在绝大多数情况下我们在数学模式中输入的应该只有数学公式。

基础的数学公式

下面,为了大家能尽快使用数学模式,就先给大家介绍一些基础的数学公式的指令。

此外,还有很多其他的符号,大家在网上都可以方便地找到。

数学环境

接下来,就介绍一些不同的数学环境。

最基础的行间公式环境就是 \[...\] . 这里面的公式默认居中,并且不能换行,没有编号。

如果要添加编号,可以使用 equation 环境,即 \begin{equation}...\end{equation} , 不过该环境依然不能换行

能够换行的环境,最基础的是 gather 环境,即 \begin{gather}...\end{gather} , 换行方式为 \\ 断行。 该环境每行公式均居中,默认编号。其对应的不编号版本为 gather* 环境,即 \begin{gather*}...\end{gather*} . 如果要在某一行不编号,则在该行的 \\ 前加一个 \notag .

其次,可以用 align 环境实现换行且手动对齐。比如说有如下公式:

$\displaystyle \begin{align}f(x)&=\frac{x}{x^2+2x+1}\\&=\frac{1}{x+\frac{1}{x}+2}\end{align}$

它的源码就是

\begin{align}
f(x)&=\frac{x}{x^2+2x+1}\\
&=\frac{1}{x+\frac{1}{x}+2}
\end{align}

也就是说,用 & 来表示对齐。
align 环境是默认编号的,其对应的不编号版本为 align* 环境。

数学模式内的字体

数学模式下,LaTeX使用了不一样的字体。数学模式的字体族可以通过 \setmathfont{} (需要使用 unicode-math 宏包)来设置。

在数学模式下,是默认使用数学字体族的意大利斜体的。如果要使用数学字体族的直立体,可以使用 \mathrm{} 指令,使用数学字体族的粗体,可以使用 \mathbf{} 指令。如果要回到正文字体,可以使用 \text{} 指令。其中, \text{} 指令还可以让我们在数学模式下输入中文,比如说:

$\displaystyle D(x)=\begin{cases}0&x\text{是有理数}\\1&x\text{是无理数}\end{cases}$

的源码就是

D(x)=\begin{cases}
0&x\text{是有理数}
\\1&x\text{是无理数}
\end{cases}