codecamp

插入数学公式

首先恭喜你看到这里。如果前面的几个文档你都认真编译过了,那么你已经可以胜任许多文档的排版工作。下面我们进入 LaTeX 最为犀利的部分。

这部分的演示中,为了节省篇幅,将取消导言区中中文支持的部分。在实际使用中,你只需要将导言区中的相关部分加上,就可以同时使用中文,并编写数学公式了——这并不冲突。

为了使用 AMS-LaTeX 提供的数学功能,我们需要在导言区加载amsmath宏包:

\usepackage{amsmath}

数学模式

LaTeX 的数学模式有两种:行内模式 (inline) 和行间模式 (display)。前者在正文的行文中,插入数学公式;后者独立排列单独成行。

在行文中,使用$ ... <div class="entry" style="text-align: justify; line-height: 1.6; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, HiraginoSansGB-W3, SourceHanSansSC-Regular, SourceHanSansCN-Regular, 'Microsoft YaHei', 'WenQuanYi Micro Hei', Arial, sans-serif; font-size: 15px; background-color: rgb(222, 222, 222);"可以插入行内公式,使用[ ... ]可以插入行间公式,如果需要对行间公式进行编号,可以使用equation`环境:

行内公式也可以使用\(...\)来插入,略嫌麻烦。无编号的行间公式也可以使用$ ... $来插入,但是这样做会改变行文的默认行间距,不推荐。

上下标

示例代码(请保存后,使用 XeLaTeX 编译,查看效果):

\documentclass{article}
%
% 数学环境支持
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{amsmath}
\begin{document}
Einstein 's $E=mc^2$.

\[ E=mc^2\. \]

\begin{equation}
E=mc^2.
\end{equation}
\end{document}

值得一提的是,行内公式和行间公式对标点的要求是不同的。行内公式的标点,应该放在数学模式的限定符之外,而行间公式则应该放在数学模式限定符之内。

在数学模式中,需要表示上标,可以使用^来实现(下标则是_)。它默认只作用于之后的一个字符,如果想对连续的几个字符起作用,请将这些字符用花括号{}括起来,例如:

\[ z = r\cdot e^{2\pi i}. \]

根式与分式

根式用\sqrt{·}来表示,分式用\frac{·}{·}来表示(第一个参数为分子,第二个为分母)。

示例代码(请保存后,使用 XeLaTeX 编译,查看效果):

\documentclass{article}
%
% 数学环境支持
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{amsmath}
\begin{document}
$\sqrt{x}$, $\frac{1}{2}$.

\[ \sqrt{x}, \]

\[ \frac{1}{2}. \]
\end{document}

可以发现,在行间公式和行内公式中,分式的输出效果是有差异的。如果要强制行内模式的分式显示为行间模式的大小,可以使用\dfrac, 反之可以使用\tfrac

运算符

一些小的运算符,可以在数学模式下直接输入;另一些需要用控制序列生成,如

\[ \pm\; \times \; \div\; \cdot\; \cap\; \cup\;
\geq\; \leq\; \neq\; \approx \; \equiv \]

连加、连乘、极限、积分等大型运算符分别用\sum\prod\lim\int生成。他们的上下标在行内公式中被压缩,以适应行高。我们可以用\limits\nolimits来强制显式地指定是否压缩这些上下标。例如:

$ \sum_{i=1}^n i\quad \prod_{i=1}^n $
$ \sum\limits _{i=1}^n i\quad \prod\limits _{i=1}^n $
\[ \lim_{x\to0}x^2 \quad \int_a^b x^2 dx \]
\[ \lim\nolimits _{x\to0}x^2\quad \int\nolimits_a^b x^2 dx \]

多重积分可以使用\iint\iiint\iiiint\idotsint 等命令输入。

\[ \iint\quad \iiint\quad \iiiint\quad \idotsint \]

分隔符

各种括号用()[]\{\}\langle\rangle 等命令表示;注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加\。因为 LaTeX 中|\|的应用过于随意,amsmath 宏包推荐用\lvert\rvert\lVert\rVert取而代之。

为了调整这些分隔符的大小,amsmath 宏包推荐使用\big\Big\bigg\Bigg放在上述括号前面调整大小。

\[ \Bigg(\bigg(\Big(\big((x)\big)\Big)\bigg)\Bigg) \]
\[ \Bigg[\bigg[\Big[\big[[x]\big]\Big]\bigg]\Bigg] \]
\[ \Bigg \{\bigg \{\Big \{\big \{\{x\}\big \}\Big \}\bigg \}\Bigg\} \]
\[ \Bigg\langle\bigg\langle\Big\langle\big\langle\langle x
\rangle\big\rangle\Big\rangle\bigg\rangle\Bigg\rangle \]
\[ \Bigg\lvert\bigg\lvert\Big\lvert\big\lvert\lvert x
\rvert\big\rvert\Big\rvert\bigg\rvert\Bigg\rvert \]
\[ \Bigg\lVert\bigg\lVert\Big\lVert\big\lVert\lVert x
\rVert\big\rVert\Big\rVert\bigg\rVert\Bigg\rVert \]

省略号

省略号用\dots\cdots\vdots\ddots 等命令表示。\dots 和\cdots的纵向位置不同,前者一般用于有下标的序列。

\[ x_1,x_2,\dots ,x_n\quad 1,2,\cdots ,n\quad
\vdots\quad \ddots \]

矩阵

amsmath 的pmatrixbmatrixBmatrixvmatrixVmatrix 等环境可以在矩阵两边加上各种分隔符。

\[ \begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
\begin{bmatrix} a&b\\c&d \end{bmatrix} \quad
\begin{Bmatrix} a&b\\c&d \end{Bmatrix} \quad
\begin{vmatrix} a&b\\c&d \end{vmatrix} \quad
\begin{Vmatrix} a&b\\c&d \end{Vmatrix} \]

效果图:

使用smallmatrix环境,可以生成行内公式的小矩阵。

Marry has a little matrix $ ( \begin{smallmatrix} a&b\\c&d \end{smallmatrix} ) $.

效果图:

多行公式

有的公式特别长,我们需要手动为他们换行;有几个公式是一组,我们需要将他们放在一起;还有些类似分段函数,我们需要给它加上一个左边的花括号。

长公式

不对齐

无须对齐的长公式可以使用multline环境。

\begin{multline}
x = a+b+c+{} \\
d+e+f+g
\end{multline}

效果:

如果不需要编号,可以使用multiline*环境代替。

对齐

需要对齐的公式,可以使用aligned_次环境_来实现,它必须包含在数学环境之内。

\[\begin{aligned}
x ={}& a+b+c+{} \\
&d+e+f+g
\end{aligned}\]

效果图:

公式组

无需对齐的公式组可以使用gather环境,需要对齐的公式组可以使用aligned环境。他们都带有编号,如果不需要编号可以使用带星花的版本。

\begin{gather}
a = b+c+d \\
x = y+z
\end{gather}
\begin{align}
a &= b+c+d \\
x &= y+z
\end{align}

效果:

分段函数

分段函数可以用cases次环境来实现,它必须包含在数学环境之内。

\[ y=\ begin{cases}
-x,\quad x\leq 0 \\
x,\quad x>0
\end{cases} \]

效果图:

组织你的文章
插入图片和表格
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }