跳转到内容

LaTeX/高级数学

来自维基教科书,开放的书籍,为开放的世界

LaTeX

入门
  1. 介绍
  2. 安装
  3. 安装额外包
  4. 基础
  5. 如何获得帮助

常见元素

  1. 文档结构
  2. 文本格式化
  3. 段落格式化
  4. 颜色
  5. 字体
  6. 列表结构
  7. 特殊字符
  8. 国际化
  9. 旋转
  10. 表格
  11. 标题创建
  12. 页面布局
  13. 自定义页面页眉和页脚‎
  14. 导入图形
  15. 浮动、图形和标题
  16. 脚注和边注
  17. 超链接
  18. 标签和交叉引用
  19. 首字母

机制

  1. 错误和警告
  2. 长度
  3. 计数器
  4. 规则和支撑

技术文本

  1. 数学
  2. 高级数学
  3. 定理
  4. 化学图形
  5. 算法
  6. 源代码清单
  7. 语言学

特殊页面

  1. 索引
  2. 术语表
  3. 参考文献管理
  4. 更多参考文献

特殊文档

  1. 科学报告(学士报告、硕士论文、博士论文)
  2. 信件
  3. 演示文稿
  4. 教师专区
  5. 简历
  6. 学术期刊(MLA、APA 等)

创建图形

  1. 介绍过程图形
  2. MetaPost
  3. Picture
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 创建 3D 图形

编程

  1. Plain TeX
  2. 创建包
  3. 创建包文档
  4. 主题

杂项

  1. 模块化文档
  2. 协作编写 LaTeX 文档
  3. 导出到其他格式

帮助和建议

  1. 常见问题解答
  2. 技巧和窍门

附录

  1. 作者
  2. 链接
  3. 包参考
  4. LaTeX 文档示例
  5. 索引
  6. 命令词汇表

编辑此框编辑目录

本页面概述了一些使用 LaTeX 进行数学标记的更高级的用法。特别是,它大量使用了由 美国数学学会 提供的 AMS-LaTeX 包。

方程编号

[编辑 | 编辑源代码]

equation 环境会自动为您的方程编号

\begin{equation} 
 f(x)=(x+a)(x+b)
\end{equation}

您还可以使用 \label\ref(或 \eqref 来自 amsmath 包)命令分别对方程进行标记和引用。对于方程编号 1,\ref 的结果为 ,而 \eqref 的结果为

\begin{equation} \label{eq:someequation}
6^2 - 5 = 36-5 = 31
\end{equation}

this references equation \ref{eq:someequation}.


\begin{equation} \label{eq:erl}
a = bq + r
\end{equation}

where \eqref{eq:erl} is true if $a$ and $b$ are integers with $b \neq c$.



标签和交叉引用 章节中提供了更多信息。

要使枚举从您的部分或子部分标题开始,您必须使用 amsmath 包或使用 AMS 类文档。然后输入

\numberwithin{equation}{section}

到前言以在部分级别进行枚举,或

\numberwithin{equation}{subsection}

使枚举在子部分级别进行。

\documentclass[12pt]{article}
\usepackage{amsmath}
 \numberwithin{equation}{subsection}
 \begin{document}
 \section{First Section}

 \subsection{A subsection}
 \begin{equation}
  L' = {L}{\sqrt{1-\frac{v^2}{c^2}}}
 \end{equation}
\end{document}

如果您遵循的样式要求在序数后面加点(至少在波兰排版中是必需的),那么在序言中使用\numberwithin{equation}{subsection}命令,会导致上面的示例中的方程式编号呈现为如下形式:(1.1.1)。

要删除重复的点,请在\numberwithin{equation}{section}之后立即添加以下命令

\renewcommand{\theequation}{\thesection\arabic{equation}}

对于使用\numberwithin{equation}{subsection}的编号方案,请使用

\renewcommand{\theequation}{\thesubsection\arabic{equation}}

在文档的序言中。

注意:虽然看起来\renewcommand可以独立工作,但它不会在每个新节开始时重置方程式编号。它必须与每个新节开始后的手动方程式编号重置一起使用,或者与更简洁的\numberwithin一起使用。

下属方程式编号

[edit | edit source]

要在一个编号的方程式环境中为下属方程式编号,请将包含它们的文档部分放置在一个subequations环境中

\begin{subequations}
\label{eq:Maxwell}
Maxwell's equations:
\begin{align}
        B'&=-\nabla \times E,         \label{eq:MaxB} \\
        E'&=\nabla \times B - 4\pi j, \label{eq:MaxE}
\end{align}
\end{subequations}

引用下属方程式可以使用两种方法之一:在\{subequations}命令之后添加标签,即\label{eq:Maxwell},这将引用主方程式(上面的 1.1),或者在每行结尾添加标签,在\\命令之前,这将引用子方程式(上面的 1.1a 或 1.1b)。如所示,如果需要两种类型的引用,可以添加两个标签。/Override_subsystem=/index

垂直对齐显示的数学公式

[edit | edit source]

在显示环境 (displaymathequation) 中经常遇到的一个问题是,无法跨多行。虽然可以单独定义行,但这些行不会对齐。

上下

[edit | edit source]

\overset\underset 命令[1] 在表达式上方和下方排版符号。如果没有 AMS-TeX,\overset 的相同结果可以用 \stackrel 获得。这对于创建新的二元关系特别有用

\[
 A \overset{!}{=} B; A \stackrel{!}{=} B
\]

或者为了展示洛必达法则 的用法

\[
 \lim_{x\to 0}{\frac{e^x-1}{2x}}
 \overset{\left[\frac{0}{0}\right]}{\underset{\mathrm{H}}{=}}
 \lim_{x\to 0}{\frac{e^x}{2}}={\frac{1}{2}}
\]

定义一个新的运算符来设置带 H 和提供的分数的等号很方便

\newcommand{\Heq}[1]{\overset{\left[#1\right]}{\underset{\mathrm{H}}{=}}}

这将上面的示例简化为

\[
 \lim_{x\to 0}{\frac{e^x-1}{2x}}
 \Heq{\frac{0}{0}}
 \lim_{x\to 0}{\frac{e^x}{2}}={\frac{1}{2}}
\]

如果目的是对方程式的特定部分进行注释,\overbrace\underbrace 命令可能更有用。但是,它们有不同的语法(并且可以使用 \vphantom 命令对齐)

\[
 z = \overbrace{
   \underbrace{x}_\text{real} + i
   \underbrace{y}_\text{imaginary}
  }^\text{complex number}
\]

有时注释比被注释的公式更长,这会导致间距问题。可以使用 \mathclap 命令[2] 来消除这些间距问题

\[
 y = a + f(\underbrace{b x}_{
                    \ge 0 \text{ by assumption}}) 
   = a + f(\underbrace{b x}_{
          \mathclap{\ge 0 \text{ by assumption}}})
\]

或者,要使用方括号而不是花括号,请使用 \underbracket\overbracket 命令[2]

\[
 z = \overbracket[3pt]{
     \underbracket{x}_{\text{real}} +
     \underbracket[0.5pt][7pt]{iy}_{\text{imaginary}}
     }^{\text{complex number}} 
\]

可选参数分别设置规则厚度和括号高度

\underbracket[rule thickness][bracket height]{argument}_{text below}

The \xleftarrow\xrightarrow 命令[1] 生成延伸到文本长度的箭头。 再次,语法不同:可选参数(使用 [])指定下标,强制参数(使用 {})指定上标(可以通过插入空格将其留空)。

\[
 A \xleftarrow{\text{this way}} B 
  \xrightarrow[\text{or that way}]{ } C
\]

对于更可扩展的箭头,您必须使用 mathtools

\begin{gather}
 a \xleftrightarrow[under]{over} b\\
%
 A \xLeftarrow[under]{over} B\\
%
 B \xRightarrow[under]{over} C\\
%
 C \xLeftrightarrow[under]{over} D\\
%
 D \xhookleftarrow[under]{over} E\\
%
 E \xhookrightarrow[under]{over} F\\
%
 F \xmapsto[under]{over} G\\
\end{gather}

以及鱼叉

\begin{gather}
 H \xrightharpoondown[under]{over} I\\
%
 I \xrightharpoonup[under]{over} J\\
%
 J \xleftharpoondown[under]{over} K\\
%
 K \xleftharpoonup[under]{over} L\\
%
 L \xrightleftharpoons[under]{over} M\\
%
 M \xleftrightharpoons[under]{over} N
\end{gather}

alignalign*

[edit | edit source]

The alignalign* 环境,通过 amsmath 包可用,用于排列多行方程式。 与矩阵和表格一样,\\ 指定换行符,& 用于指示应对齐行的点。

The align* 环境的使用方式类似于 displaymathequation* 环境

\begin{align*}
 f(x) &= (x+a)(x+b) \\
      &= x^2 + (a+b)x + ab
\end{align*}

请注意,align 环境不能嵌套在 equation(或类似)环境中。 相反,align 是此类环境的替代品;align 中的内容会自动置于数学模式中。

align* 抑制编号。 要强制对特定行进行编号,请在换行符之前使用 \tag{...} 命令。

align 类似,但会自动为每行编号,就像 equation 环境一样。 可以通过在换行符之前放置 \label{...} 来引用各个行。 \nonumber\notag 命令可用于抑制给定行的数字

\begin{align}
 f(x) &= x^4 + 7x^3 + 2x^2 \nonumber \\
      &\qquad {} + 10x + 12
\end{align}

请注意,我们在第二行中添加了一些缩进。 此外,我们需要在 + 符号之前插入双花括号 ({}),否则 latex 不会在 + 符号之后创建正确的间距。 这样做的原因是,如果没有花括号,latex 会将 + 符号解释为一元运算符,而不是它真正的二元运算符。

可以使用单个行上附加的 & 来实现更复杂的对齐,指定多个“方程式列”,每个方程式列都对齐。 以下示例说明了 align* 的对齐规则

\begin{align*}
 f(x)  &= a x^2+b x +c   &   g(x)  &= d x^3 \\
 f'(x) &= 2 a x +b       &   g'(x) &= 3 d x^2
\end{align*}

跨越多行的括号

[edit | edit source]

如果您希望括号跨越多行,请执行以下操作

\begin{align}
 f(x) &= \pi \left\{ x^4 + 7x^3 + 2x^2 \right.\nonumber\\
 &\qquad \left. {} + 10x + 12 \right\}
\end{align}

在这个构造中,尽管使用了 \left\{\right\},但左右括号的大小并不自动相等。这是因为每行都被排版为一个完全独立的方程——请注意使用 \right.\left.,因此一行中没有不匹配的 \left\right 命令(如果公式只有一行,这些命令就不需要)。你可以使用 \big\Big\bigg\Bigg 命令手动控制括号的大小。

或者,可以使用 \vphantom 命令复制较高的方程的高度到另一个方程。

\begin{align}
 A &=     \left(\int_t XXX       \right.\nonumber\\
   &\qquad \left.\vphantom{\int_t} YYY \dots \right)
\end{align}

使用对齐括号来表示分段函数

[edit | edit source]

你也可以使用 \left\{\right. 来排版 分段函数

\[f(x) = \left\{
  \begin{array}{lr}
    x^2 & : x < 0\\
    x^3 & : x \ge 0
  \end{array}
\right.
\]

cases 环境

[edit | edit source]

cases 环境[1] 允许编写分段函数。

\[
 u(x) = 
  \begin{cases} 
   \exp{x} & \text{if } x \geq 0 \\
   1       & \text{if } x < 0
  \end{cases}
\]

LaTeX 将负责定义和对齐列。

cases 环境中,使用文本样式数学,例如

可以使用显示样式,通过使用 dcases 环境[2],它来自 mathtools 包。

\[
 a =
   \begin{dcases}
     \int x\, \mathrm{d} x\\
     b^2
   \end{dcases}
\]

通常第二列主要由普通文本组成。为了将其设置为文档的普通罗马字体,可以使用 dcases* 环境:[2]

\[
 f(x) = \begin{dcases*}
        x  & when $x$ is even\\
        -x & when $x$ is odd
        \end{dcases*}
\]

其他环境

[edit | edit source]

虽然 alignalign* 是最实用的,但也有一些其他环境可能也很有用。

环境名称 描述 备注
eqnarrayeqnarray* 类似于 alignalign* 不推荐,因为间距不一致
multlinemultline*[1] 第一行左对齐,最后一行右对齐 方程编号与第一行垂直对齐,而不是像其他环境那样居中
gathergather*[1] 连续方程,没有对齐
flalignflalign*[1] 类似于 align,但将第一个方程列左对齐,并将最后一个列右对齐
alignatalignat*[1] 接受一个参数,指定列数。允许控制方程之间的水平间距 此环境接受一个参数,即“方程列”的数量:计算任何一行中 & 的最大数量,加 1 并除以 2。 [1]

还有一些环境本身不构成数学环境,可以作为构建更复杂结构的构建块

数学环境名称 描述
gathered[1] 允许将方程收集在一起,彼此放在一起。
split[1] 类似于 align,但用于另一个显示数学环境中,并且只支持一个方程列(即单个 & 符号)。
aligned[1] 类似于 align,用于另一个数学环境中。
alignedat[1] 类似于 alignat,并且也接受一个额外的参数,指定要设置的方程列数。它可以堆叠在 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{alignat}{2}
 \sigma_1 &= x + y  &\quad \sigma_2 &= \frac{x}{y} \\	
 \sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2' 
    &= \frac{\partial \frac{x}{y}}{\partial x}
\end{alignat}

\begin{gather*}
a_0=\frac{1}{\pi}\int\limits_{-\pi}^{\pi}f(x)\,\mathrm{d}x\\[6pt]
\begin{split}
a_n=\frac{1}{\pi}\int\limits_{-\pi}^{\pi}f(x)\cos nx\,\mathrm{d}x=\\
=\frac{1}{\pi}\int\limits_{-\pi}^{\pi}x^2\cos nx\,\mathrm{d}x
\end{split}\\[6pt]
\begin{split}
b_n=\frac{1}{\pi}\int\limits_{-\pi}^{\pi}f(x)\sin nx\,\mathrm{d}x=\\
=\frac{1}{\pi}\int\limits_{-\pi}^{\pi}x^2\sin nx\,\mathrm{d}x
\end{split}\\[6pt]
\end{gather*}

缩进方程

[edit | edit source]

要缩进方程,可以在文档类中设置 fleqn,然后为 \mathindent 变量指定一个特定值

\documentclass[a4paper,fleqn]{report}
\usepackage{amsmath}
\setlength{\mathindent}{1cm}
\begin{document}
\noindent Euler's formula is given below:
\begin{equation*}
 e^{ix} = \cos{x} + i \sin{x}.
\end{equation*}
\noindent This is a very important formula.
\end{document}

数学环境中的分页符

[edit | edit source]

要建议 LaTeX 在 amsmath 环境中插入分页符,可以在换行符之前使用 \displaybreak 命令。就像 \pagebreak 一样,\displaybreak 可以接受一个可选参数,介于 0 到 4 之间,表示分页符的期望程度。0 表示“允许在此处换页”,4 表示强制换页。没有参数与 4 相同。

或者,可以使用 \allowdisplaybreaks 在数学环境中启用自动分页符。它也可以有一个可选参数,表示方程式中分页符的优先级。类似地,1 表示“允许分页符,但避免它们”,4 表示“无论何时你想就换页”。可以使用 \\* 禁止在给定行之后换页。

如果 LaTeX 在不使用任何其他命令的情况下,使用 \intertext{} 添加了额外的文本,它将在长方程中插入分页符。

具体用法可能如下所示

\begin{align*}
 &\vdots\\ 
 &=12+7 \int_0^2
  \left(
    -\frac{1}{4}\left(e^{-4t_1}+e^{4t_1-8}\right)
  \right)\,dt_1\displaybreak[3]\\
 &= 12-\frac{7}{4}\int_0^2 \left( e^{-4t_1}+e^{4t_1-8} \right)\,dt_1\\
 &\vdots % 
\end{align*}

显示数学(各种形式)之前的分页符由 \predisplaypenalty 控制。它的默认值 10000 表示永远不要在显示之前立即换页。Knuth(TeXbook 第 19 章)解释了这一点,这是一项印刷传统,即不要在页面开头放置显示方程式。它可以通过以下方法放松

\predisplaypenalty=0

有时,一个方程看起来最好一起放在一起,用更高的惩罚领先于文本,例如,一个关于单行方程的单行段落,尤其是在部分的末尾。

带框的方程

[编辑 | 编辑源代码]

对于单个方程或对齐构建块,标签在框外,使用 \boxed{}

\begin{equation}
 \boxed{x^2+y^2 = z^2}
\end{equation}

如果你想把整行或几个方程框起来,使用 minipage 放在 \fbox{}

\fbox{
 \addtolength{\linewidth}{-2\fboxsep}%
 \addtolength{\linewidth}{-2\fboxrule}%
 \begin{minipage}{\linewidth}
  \begin{equation}
   x^2+y^2=z^2
  \end{equation}
 \end{minipage}
}

还有 mathtools 的 \Aboxed{},它可以跨对齐标记框起来

\begin{align*}
\Aboxed{ f(x) & = \int h(x)\, dx} \\
              & = g(x)
\end{align*}

自定义运算符

[编辑 | 编辑源代码]

虽然 LaTeX 中提供了许多常见的 运算符,但有时你需要编写自己的运算符,例如,要排版 argmax 运算符。 \operatorname\operatorname* 命令[1] 显示自定义运算符;带有 * 的版本在下方设置带下划线的选项,就像 \lim 运算符一样

\[
 \operatorname{arg\,max}_a f(a) 
 = \operatorname*{arg\,max}_b f(b)
\]

但是,如果运算符经常使用,最好定义一个可以在整个文档中使用的新的运算符。 \DeclareMathOperator\DeclareMathOperator* 命令[1] 在文档的页眉中指定

\DeclareMathOperator*{\argmax}{arg\,max}

这定义了一个新的命令,可以在正文中引用

\[
 \argmax_c f(c)
\]

高级格式

[编辑 | 编辑源代码]

对于下标和上标的放置位置有默认值。例如,对于lim运算符的极限通常放在符号下方

\begin{equation}
  \lim_{a\to \infty} \tfrac{1}{a}
\end{equation}

要覆盖此行为,使用 \nolimits 运算符

\begin{equation}
  \lim\nolimits_{a\to \infty} \tfrac{1}{a}
\end{equation}

一个lim在运行文本中(在 $...$ 中)的极限将被放在侧面,这样就不需要额外的前导空格。要覆盖此行为,使用 \limits 命令。

类似地,你可以将下标放在通常在侧面的符号下方

\begin{equation}
  \int_a^b x^2  \mathrm{d} x
\end{equation}

上下极限

\begin{equation}
  \int\limits_a^b x^2  \mathrm{d} x
\end{equation}

要将求和类型符号的默认放置位置更改为每个情况下的侧面,请将 nosumlimits 选项添加到 amsmath 包中。要更改积分符号的放置位置,请将 intlimits 添加到选项中。 nonamelimits 可以用来改变像这样的命名运算符的默认值det, min, lim等。

要生成单边极限,请使用 \underset,如下所示

\begin{equation}
  \lim_{a \underset{>}{\to} 0} \frac{1}{a}
\end{equation}

下标和上标

[编辑 | 编辑源代码]

你可以使用 \nolimits 将符号放在下标或上标中(在求和样式符号中)

\begin{equation}
  \sum\nolimits' C_n
\end{equation}

将它们与这些符号的典型用法混合是不可能的

\begin{equation}
  \sum_{n=1}\nolimits' C_n
\end{equation}

要同时在符号上添加素数和极限,可以使用 \sideset 命令

\begin{equation}
  \sideset{}{'}\sum_{n=1}C_n
\end{equation}

它非常灵活:例如,要将字母放在符号的每个角,可以使用此命令

\begin{equation}
  \sideset{_a^b}{_c^d}\sum
\end{equation}

如果你想将它们放在任意符号的角落,你应该使用 \fourIdx 命令,该命令来自 fouridx 包。

但是简单的分组也可以解决问题

\begin{equation}
  {\sum\limits_{n=1} }'C_n
\end{equation}

因为数学运算符可以用或不用极限。如果你想改变它的状态,只需将其分组。如果你想的话,你可以把它变成另一个数学运算符,然后你就可以有极限,然后再次有极限。

多行下标

[edit | edit source]

要生成多行下标,请使用 \substack 命令

\begin{equation}
  \prod_{\substack{
            1\le i \le n\\
            1\le j \le m}}
     M_{i,j}
\end{equation}

对齐数学显示中的文本

[edit | edit source]

要在数学环境中添加小的插入语,请使用 \intertext 命令

\begin{minipage}{3in}
\begin{align*}
\intertext{If}
   A &= \sigma_1+\sigma_2\\
   B &= \rho_1+\rho_2\\
\intertext{then}
C(x) &= e^{Ax^2+\pi}+B
\end{align*} 
\end{minipage}

请注意,任何使用此命令的操作都不会改变对齐方式。

此外,在上面的示例中,来自 mathtools 包的 \shortintertext{} 命令可以代替 \intertext 命令来减少行之间添加的垂直空白量。

更改字体大小

[edit | edit source]

可能会有时你希望能够控制字体大小。例如,使用文本模式数学,默认情况下,一个简单的分数将看起来像这样:,而你可能更希望它以更大的显示方式显示,就像在显示模式下一样,但仍然保持内联,像这样:.

一个简单的方法是利用数学元素的预定义大小

大小命令 描述
\displaystyle 显示模式下方程的大小
\textstyle 文本模式下方程的大小
\scriptstyle 第一个子/上标的大小
\scriptscriptstyle 后续子/上标的大小

一个经典的例子是排版连分数(尽管最好使用 \cfrac 命令[1],如 Mathematics 章中所述,而不是下面提供的方法)。以下代码提供了一个示例。

\begin{equation}
  x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}
\end{equation}

正如你所看到的,随着分数的继续,它们变得越来越小(尽管它们不会比这个例子中更小,在这个例子中它们已经达到了 \scriptstyle 限制)。如果你想保持一致的大小,可以声明每个分数都使用显示样式;例如

\begin{equation}
  x = a_0 + \frac{1}{\displaystyle a_1 
          + \frac{1}{\displaystyle a_2 
          + \frac{1}{\displaystyle a_3 + a_4}}}
\end{equation}

另一种方法是使用 \DeclareMathSizes 命令来选择你喜欢的尺寸。你只能定义 \displaystyle\textstyle 等等的尺寸。一个潜在的缺点是,这个命令设置了全局数学尺寸,因为它只能在文档的序言中使用。

但它很容易使用:\DeclareMathSizes{ds}{ts}{ss}{sss},其中 ds显示尺寸ts文本尺寸,等等。你输入的值被认为是磅 (pt) 大小。

请注意,只有当第一个参数中的值与当前文档文本大小匹配时,更改才会生效。因此,在更改主字体的情况下,在序言中看到一组声明是很常见的。例如,

\DeclareMathSizes{10}{18}{12}{8}   % For size 10 text
\DeclareMathSizes{11}{19}{13}{9}   % For size 11 text
\DeclareMathSizes{12}{20}{14}{10}  % For size 12 text

强制在文档中所有数学公式中使用 \displaystyle

[edit | edit source]

\everymath{\displaystyle}

放在

\begin{document}

之前,将强制所有数学公式使用

\displaystyle

.

调整显示数学公式周围的垂直空白

[edit | edit source]

有四个参数控制显示数学公式周围的垂直空白

\abovedisplayskip=12pt
\belowdisplayskip=12pt
\abovedisplayshortskip=0pt
\belowdisplayshortskip=7pt

如果前一行水平地结束在公式之前,则使用短跳过。这些参数必须在

\begin{document}

.


Clipboard

要执行

  • 考虑包含来自 mathtools 的内容。


备注

[edit | edit source]
  1. a b c d e f g h i j k l m n 需要 amsmath
  2. a b c d 需要 mathtools


上一篇:数学 索引 下一篇:定理
华夏公益教科书