amsmath宏包用户指导手册

amsmath宏包用户指导手册

本文章翻译自《User’s Guide for the amsmath Package》,原文链接:http://mirrors.acm.jhu.edu/ctan/macros/latex/required/amslatex/math/amsldoc.pdf 。本文的版本是:Version 2.0 美国数学协会(AMS)修订。

1. 概述

在LaTeX中,amsmath宏包提供了各种各样的功能,目的是为改善信息结构,并且改善打印输出包含数学公式的文档,使之更加的美观。不熟悉LaTeX的读者应该去参考文献7,如果你对LaTeX的版本做了更新,amsmath通常会一起进行升级。升级信息将被在:http://www.ams.org/publications/authors/tex/amsmath 或者: ftp://ftp.ams.org/pub/tex/ 得到。
本文档描述了amsmath宏包的特征,并且讨论了他们的使用方法。同时amsmath也覆盖了一些辅助工具包,如:amsbsyamstextamscdamsxtraamsopn。他们都与公式的内容有关系。对于额外的数学符号或者数学字体的信息,请参见:http://www.ams.org/publications/authors/tex/amsmath 。
如果你是一个长时间的LaTeX用户,那么你应该有许多的你想写的数学运算,也许对于一些熟悉的问题你能够在amsmath宏包中找到解决方案:

  • 用一个方便的方法去定义一个新的类似于\sin\lim的’operator name’命令,包括适当的间隔并且同时能够自动的选择合适的字体样式和字体的大小。

  • 对于eqnarray环境有很多的替代方案,这些替代方案能够将公式组织的更好并且更加容易去书写。

  • 公式的编号自动向上向下的调整,避免被覆盖,不像eqnarray环境。

  • 在公式环境中,围绕等号标记的间距应该是一样的,不像eqnarray环境那样大的间距。

  • 一种方法的辩题,这种辩题能够自动的提供编号。

  • 提供子排序的公式编号,例如1.3a和1.3b,这样的形式。

amsmath 最主要的包,提供了许多呈现公式和其他数学结构的特征。
amstext 提供了\text命令去排版类似于分段函数中条件的片段。
amsopn 提供给了\DeclareMathOperator命令去定义一个新的’operator name’。
amsbsy 因为向后的兼容性,这个包仍然能够被使用,但是官方建议使用最新的bm包去代替这个旧的包。
amscd 提供了CD环境。
amsxtra 暂时不明白它的功能

amsmath宏包集合了amstextamsbsyamsopn。对于amscdamsxtra仅仅可以去调用使用。

2. amsmath宏包的可选参数

amsmath宏包包含了下面的一些可选参数:

  • centertags(default) 对于进行split操作的公式,公式的编号会垂直的放在所有公式的高度的中间,输入下面的代码:
\documentclass[utf8]{ctexart}

\usepackage{amsmath}%可选参数默认default

\begin{document}

\begin{equation}

\begin{split}

a^2 + b^2 &= c^2 \\

AB^2 +AC^2 &= BC^2

\end{split}

\end{equation}

\end{document}

代码的执行结果为:

  • tbtags “Top-or-bottom-tags”:对于一个进行split操作的公式,如果公式的编号是在右边的话,在公式的最后一行放置公式的编号,反之,如果公式的编号是在公式的左边,则放置在第一行。输入下面的代码:
\documentclass[utf8]{ctexart}

\usepackage[tbtags]{amsmath} %可选参数tbtags

\begin{document}

\begin{equation}

\begin{split}

a^2 + b^2 &= c^2 \\

AB^2 +AC^2 &= BC^2

\end{split}

\end{equation}

\end{document}

上述代码的执行结果如下:

amsmath宏包用户指导手册_第1张图片

  • sumlimits(default) 在类似与求和、求积的公式中,将公式的上下限放在符号的正上方和正下方,默认的情况下是放在正上下方。nosumlimits 在类似求和等公式中,采用这个参数将公式的上下限放置在符号的侧面。看下面的代码:
\documentclass[utf8]{ctexart}

\usepackage[tbtags]{amsmath}

\begin{document}

\begin{align}

\sum\limits_1^{10} {{n^2}} \\

\sum\nolimits_2^{100} {{n^2}}

\end{align}

\end{document}

上面代码的执行结果为:
amsmath宏包用户指导手册_第2张图片
从上图可以看出,对于求和公式这种样式的公式,其上下限的位置有两种,一种是在符号的正上下方,另一种是在符号的右侧。

  • intlimitsnointlimts 积分符号同样也和上面一样,将积分的上下限写在符号的正上方还是写在符号的右侧方,同样需要作者去衡量。

  • namelimitsnonamelimits 对于一些有上下限的公式具有上面的这种考量,也就是将上下限究竟放在符号的正上下方还是放在符号的右侧方。
    上面可选参数的使用,通过使用下面的格式usepackage[可选参数1,可选参数2,可选参数3···]{amsmath},其中可以同时选择多个参数,但是多个参数要放在一个[]中,不能采用usepackage[可选参数1][可选参数2]···[可选参数n]{amsmath}这样的形式。举例如下:

\documentclass[utf8,leqno]{ctexart}

\usepackage[sumlimits,tbtags]{amsmath}

\begin{document}

\begin{align}

\sum_1^{10} {{n^2}} \\

\sum_2^{100} {{n^2}}

\end{align}

\end{document}

amsmath宏包也可以识别下面的可选项,这些可选项命令可以放在\documentclass中,例如\documentclass[utf8,leqno]{ctexart},在amsmath宏包中可以识别上面的leqno选项,并且在amsmath宏包的使用过程中不用重复的设置leqno可选项。

  • leqno 将公式的编号放在左边

  • reqno 将公式的编号放在右边

  • fleqn 将公式放置在左侧边框的缩进处,而不是放在文本的正中间,下面的代码说明这个可选项的含义:

\documentclass[utf8,leqno,fleqn]{ctexart}

\usepackage[sumlimits,tbtags]{amsmath}

\begin{document}

\begin{align}

\sum_1^{10} {{n^2}} \\

\sum_2^{100} {{n^2}}

\end{align}

\end{document}

得到的结果如下:

对比不加fleqn可选项的公式的放置,代码如下:

\documentclass[utf8,leqno]{ctexart}

\usepackage[sumlimits,tbtags]{amsmath}

\begin{document}

\begin{align}

\sum_1^{10} {{n^2}} \\

\sum_2^{100} {{n^2}}

\end{align}

\end{document}

得到的结果如下:
amsmath宏包用户指导手册_第3张图片

3. 公式的呈现

3.1 概述

amsmath宏包提供了许多可选的公式呈现结构,下面提供了一些在LaTeX中基本的结构:

equation equation* align align*
gather gather* flalign flalign*
multline multline* alignat alignat*
split eqnarray

注意:尽管标准的eqnarray环境仍然是可用的,但是最好使用align环境或者equation+split环境代替),在另一篇翻译的文章中我讨论了这个问题,详见:http://blog.csdn.net/jpzhu16/article/details/50706486 。
除了split环境,剩下的每一个环境都有带*和不带*两种格式,其中不带*的环境会自动使用LaTeX的公式计数器进行编号。你也可以强制的使用\notag或者\nonumber将公式的编号去掉(也就是使当前的公式没有编号),你也可以通过使用\tag{标签}自己去定义公式的标签,标签可以是任意的文本,诸如:*、ii、或者数字。也可以使用\tag*命令,这个命令会去掉标签左右的括号,见下面的代码:

\documentclass[utf8,leqno]{ctexart}

\usepackage[sumlimits,tbtags]{amsmath}

\begin{document}

\begin{align}

\sum_1^{10} {{n^2}} \tag{求和} \\

\sum_2^{100} {{n^2}} \tag*{求和}

\end{align}

\end{document}

上面代码的执行结果如下:
amsmath宏包用户指导手册_第4张图片
同样,\tag\tag*命令也被用在没有编号的公式中。split环境是被使用在其它环境的内部,也就是嵌套的使用在其它环境里面,并不能单独的使用。但是它不能被使用在multline环境中。看下面的代码:

\documentclass[utf8,fleqn]{ctexart}

\usepackage[sumlimits]{amsmath}

\begin{document}

\begin{align}

\begin{split}

\sum_1^{10} {{n^2}} \\

\sum_2^{100} {{n^2}}

\end{split}

\end{align}

\end{document}

上述代码的执行结果为:
amsmath宏包用户指导手册_第5张图片
注:使用split环境之后,公式的编号默认会放在所有公式的正中间,通过tbtags参数可以进行设置,将其放在top或者bottom
在一些结构中做对齐操作(比如splitalign和其环境的变体),在关系符号之前有一个&符号,如果要是在关系符号之后加&的话,必须是{}&这种结构,不像eqnarray环境,可以随意的实现在关系符号之前和之后加&。

3.2 单一的公式

equation环境是一个带有自动编号的单一的公式环境。equation\*环境不带自动的编号。在原文中有一组公式的对比,再次省略了这组公式,因为本身的使用没有任何的难度,请参见原文 Table 3.1 。

3.3 split环境不能使用的公式–multline环境

multline环境是equation环境的变种,这个环境被使用在公式不能被放在一行内(或者说公式很长不适宜放在单一的行上,或者说放在单一的行上公式的排版十分的不舒服,此时可以使用multline环境代替equation环境)。multline环境的第一行将被放在最左边的边界处,最后一行将被放在最右边的边界处,就像equation环境那样,multline环境只有一个公式号,因此这个环境不能使用\tag标记行,当有reqno时公式的编号被放在最后一行,当有leqno时,公式的编号被放在第一行,split环境在multline中是不能使用的。像下面的代码那样:

\documentclass[utf8]{ctexart}

\usepackage[leqno]{amsmath}

\begin{document}

\begin{multline}

\framebox[.65\columnwidth]{A}\\

\framebox[.5\columnwidth]{B}\\

\shoveright{\framebox[.55\columnwidth]{C}}\\

\framebox[.65\columnwidth]{D}

\end{multline}

\end{document}

上面代码得到的结果如下图:

3.4 用对其的方式分离公式

multline环境那样,split环境也可以用于一个公式太长不得不分开成为多行的情况。但是不像multline环境,split环境使用&符号去标记对齐的位置,不像其他的amsmath环境结构,split环境不提供公式编号,这是因为它原本是用在其它环境的内部嵌套使用,这些外部的环境通常是equationaligngather环境,这些环境会提供公式的编号。

\documentclass[utf8]{ctexart}
\usepackage[leqno]{amsmath}
\begin{document}
\begin{equation}

\begin{split}

a^2 + b^2 &= c^2\\

aaaaaaaaa^2 + bbbbbbbb^2 &= cccccc^2

\end{split}

\end{equation}

\end{document}

这段代码得到的结果如下:

或者采用下面的代码:

\documentclass[utf8]{ctexart}
\usepackage{leqno}{amsmath}
\begin{document}
\begin{equation}
\begin{split}
a^2 + b^2 ={}&c^2\\
aaaaaaaaa^2 + bbbbbbbb^2 ={}&cccccc^2
\end{split}
\end{equation}
\end{document}

这段代码的执行结果仍然和上面的结果是一样的。

3.5 公式编号与公式的引用

在LaTeX中,如果你想有一个公式编号,这个公式编号包含接信息,蔽日你有一个公式编号是:(1.1),(1.2),(2.1)···分别代表的是section 1和section 2的公式,amsmath宏包提供了一个\numberwithin命令,如果这个公式的编号尝试用节(section),使用numberwithin{equation}{section},如果公式尝试用字节(subsection),那么采用\numberwithin{equation}{subsection}命令来实现。只要在导言区加上上述的命令,整个这一节提供的公式环境的计数器都会按照这个定义去工作,这点是笔者一定要注意的

3.6 引用公式

引用上面的公式采用的是\eqref命令,这个命令会自动提供(),如:if \ref(前面定义的标签) produces 某个公式编号 but \eqref produces (某个公式编号).

3.7 子公式环境产生兄弟公式编号

amsmath宏包提供了一个子公式环境subequations,千万不要写成subequation,最后少了一个s,后者完全不能通过编译。该环境使得容易给一个组内的公式进行适当的编号,例如:

\begin{subequations} \label{eq:sub}  %\eqref时产生组公式的大编号(如3.1),不包括具体的a或者b
\begin{equation} \label{eq:sub1} %\eqref时产生具体的编号(如3.1a)
这个公式被编号为:eq.a
\end{equation}
···
\begin{equation}\label{eq:sub2} %\eqref时产生具体的编号(如3.1b)
这个公式被编号为:eq.b
\end{equation}
\end{subequations}
3.8 分隔符
3.8.1 分隔符的大小

\left\right命令用于在数学公式中增加分隔符,比如:\left{\right}代表在整个环境中添加{}符号,同样这种语法也适用与()、[]等分隔符,当分隔符不是成对出现时,也要使用\left\right命令,只不过在不对称的一方采用.去代替。如下图:

3.8.2 \text命令

\text命令通常用于在一些场合插入一段文本。

联系我

如果大家对我所研究的问题感兴趣,或者需要与我联系,请在下方扫描我的微信二维码添加好友:
amsmath宏包用户指导手册_第6张图片

你可能感兴趣的:(数学,宏,latex,美国)