跳轉到內容

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


上一篇:數學 索引 下一篇:定理
華夏公益教科書