LaTeX/高階數學
本頁面概述了一些使用 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]在顯示環境 (displaymath 和 equation) 中經常遇到的一個問題是,無法跨多行。雖然可以單獨定義行,但這些行不會對齊。
上下
[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}
|
align 和 align*
[edit | edit source]The align 和 align* 環境,透過 amsmath 包可用,用於排列多行方程式。 與矩陣和表格一樣,\\ 指定換行符,& 用於指示應對齊行的點。
The align* 環境的使用方式類似於 displaymath 或 equation* 環境
\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]雖然 align 和 align* 是最實用的,但也有一些其他環境可能也很有用。
| 環境名稱 | 描述 | 備註 |
|---|---|---|
| eqnarray 和 eqnarray* | 類似於 align 和 align* | 不推薦,因為間距不一致 |
| multline 和 multline*[1] | 第一行左對齊,最後一行右對齊 | 方程編號與第一行垂直對齊,而不是像其他環境那樣居中 |
| gather 和 gather*[1] | 連續方程,沒有對齊 | |
| flalign 和 flalign*[1] | 類似於 align,但將第一個方程列左對齊,並將最後一個列右對齊 | |
| alignat 和 alignat*[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}
|
.
備註
[edit | edit source]


