\chapter{数学}

\begin{quotation}
今有上禾三秉，中禾二秉，下禾一秉，实三十九斗；上禾二秉，中禾三秉，下禾一秉，实三十四斗；上禾一秉，中禾二秉，下禾三秉，实二十六斗。问上、中、下禾实一秉各几何？
\begin{gather*}
\begin{split}
    3x+2y+z &= 39 \\
    2x+3y+z &= 34 \\
    x+2y+3z &= 26 \\
\end{split}
\end{gather*}
\begin{flushright}
--- 《九章算术》
\end{flushright}
\end{quotation}

%\begin{quotation}
%邺下谚曰：博士买驴，书券三纸，未有驴字。
%\begin{flushright}
%--- 颜之推《颜氏家训·勉学》
%\end{flushright}
%\end{quotation}

为了使用~\AmS-\LaTeX~提供的数学功能，我们首先需要在文档的序言部分加载~\verb|amsmath|~宏包，其详细用法可参阅《amsmath User's Guide》\citep{AMS_2002}。更全面的数学内容排版可参阅~George Grätzer\footnote{匈牙利裔，加拿大~Manitoba~大学数学系教授。}的《More Math into \LaTeX, 4th Edition》\citep{Gratzer_2007}。
%\begin{code}
%\usepackage[options]{amsmath}
%\end{code}

\section{数学模式}
\LaTeX~中的数学模式有两种形式：inline~和~display。前者是指在正文插入行间数学公式，后者独立排列，可以有或没有编号。

行间公式用一对~\verb|$...$|~来输入，独立公式用~\verb|equation|~或~\verb|equation*|~环境来输入，有~\verb|*|~的版本不生成公式编号。

前文提到~\verb|\fbox|~命令可以给文本内容加个方框，数学模式下也有类似的命令~\verb|\boxed|。

\begin{demo}
爱因斯坦的$E=mc^2$方程
\begin{equation} 
    E=mc^2 
\end{equation}
\[ E=mc^2 \]
\[ \boxed{E=mc^2} \]
\end{demo}

\section{基本原素}
\subsection{字母}

英文字母在数学模式下可以直接输入，希腊字母则需要用\Fref{tab:greek}~中的命令输入，注意大写希腊字母的命令首字母也是大写。

\begin{table}[htbp]
\caption{希腊字母}
\label{tab:greek}
\centering
\begin{tabular}{llllllll}
    \toprule
    $\alpha$      & \verb|\alpha|      & $\theta$    & \verb|\theta|    & 
        $o$         & \verb|o|        & $\tau$     & \verb|\tau| \\
    $\beta$       & \verb|\beta|       & $\vartheta$ & \verb|\vartheta| & 
        $\pi$       & \verb|\pi|      & $\upsilon$ & \verb|\upsilon| \\
    $\gamma$      & \verb|\gamma|      & $\iota$     & \verb|\iota|     & 
        $\varpi$    & \verb|\varpi|   & $\phi$     & \verb|\phi| \\
    $\delta$      & \verb|\delta|      & $\kappa$    & \verb|\kappa|    & 
        $\rho$      & \verb|\rho|     & $\varphi$  & \verb|\varphi| \\
    $\epsilon$    & \verb|\epsilon|    & $\lambda$   & \verb|\lambda|   & 
        $\varrho$   & \verb|\varrho|  & $\chi$     & \verb|\chi| \\
    $\varepsilon$ & \verb|\varepsilon| & $\mu$       & \verb|\mu|       & 
        $\sigma$    & \verb|\sigma|   & $\psi$     & \verb|\psi| \\
    $\zeta$       & \verb|\zeta|       & $\nu$       & \verb|\nu|       & 
        $\varsigma$ & \verb|\varsigma|   & $\omega$   & \verb|\omega| \\
    $\eta$        & \verb|\eta|        & $\xi$       & \verb|\xi|       & 
        &                 &            & \\
    $\Gamma$      & \verb|\Gamma|      & $\Lambda$   & \verb|\Lambda|   & 
        $\Sigma$    & \verb|\Sigma|   & $\Psi$     & \verb|\Psi| \\
    $\Delta$      & \verb|\Delta|      & $\Xi$       & \verb|\Xi|       & 
        $\Upsilon$  & \verb|\Upsilon| & $\Omega$   & \verb|\Omega| \\
    $\Theta$      & \verb|\Theta|      & $\Pi$       & \verb|\Pi|       & 
        $\Phi$      & \verb|\Phi|     &            & \\
    \bottomrule
\end{tabular}
\end{table}

\subsection{指数、下标、根号}
指数或上标用~\verb|^|~表示，下标用~\verb|_|~表示，根号用~\verb|\sqrt|~表示。上下标如果多于一个字母或符号，需要用一对~\verb|{}|~括起来。
\begin{demo}
\[x_{ij}^2\quad \sqrt[2]{x}\]
\end{demo}

\subsection{分数}
分数用~\verb|\frac|~命令表示，它会自动调整字号，比如在行间公式中小一点，在独立公式则大一点。\verb|\dfrac|~命令把分数的字号显式设置为独立公式中的大小，\verb|\tfrac|~命令则把字号设为行间公式中的大小。
\begin{demo}
$\frac{1}{2} \dfrac{1}{2}$
\[\frac{1}{2} \tfrac{1}{2}\]
\end{demo}

\subsection{运算符}
有些小的运算符（operator）例如~\verb|+ - * /|~等可以直接输入，另一些则需要特殊命令。完整的数学符号参见~Scott Pakin~的《The Comprehensive \LaTeX~ Symbol List》\citep{Pakin_2008}。
\begin{code}
\[\pm \times \div \cdot \cap \cup \geq \leq \neq \approx \equiv\]
\end{code}

\begin{out}
\[\pm\quad \times\quad \div\quad \cdot\quad \cap\quad \cup\quad \geq\quad \leq\quad \neq\quad \approx\quad \equiv\]
\end{out}

和、积、极限、积分等大运算符用~\verb|\sum \prod \lim \int|~等表示。它们的上下标在行间公式中被压缩，以适应行高。。

\begin{code}
$\sum_{i=1}^n i \prod_{i=1}^n \lim_{x\to0}x^2 \int_a^b x^2 dx\$
\[\sum_{i=1}^n i \prod_{i=1}^n \lim_{x\to0}x^2 \int_a^b x^2 dx\]
\end{code}

\begin{out}
$\sum_{i=1}^n i\quad \prod_{i=1}^n\ \lim_{x\to0}x^2\ \int_a^b x^2\mathrm{d}x$
\[\sum_{i=1}^n i\quad \prod_{i=1}^n\ \lim_{x\to0}x^2\ \int_a^b x^2\mathrm{d}x\]
\end{out}

多重积分如果用多个~\verb|\int|~来输入的话，积分号间距过宽。正确的方法是用~\verb|\iint \iiint \iiiint \idotsint|~等命令输入。从下例中可以看出两种方法的差异。

\begin{out}
\[\iint\quad \iiint\quad \iiiint\quad \idotsint\]
\[\int\int\quad \int\int\int\quad \int\int\int\int\quad \int\dots\int\]
\end{out}

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

我们可以在上述分隔符前面加~\verb|\big \Big \bigg \Bigg|~等命令来调整大小。\LaTeX~原有的方法是在分隔符前面加~\verb|\left \right|~来自动调整大小，但是效果不佳，所以~amsmath~不推荐用这种方法。

\begin{out}
\[\Bigg(\bigg(\Big(\big((x+y)\big)\Big)\bigg)\Bigg)\quad 
\Bigg[\bigg[\Big[\big[[x+y]\big]\Big]\bigg]\Bigg]\quad 
\Bigg\{\bigg\{\Big\{\big\{\{x+y\}\big\}\Big\}\bigg\}\Bigg\}\]
\[\Bigg\langle\bigg\langle\Big\langle\big\langle\langle x+y \rangle\big\rangle\Big\rangle\bigg\rangle\Bigg\rangle\quad
\Bigg\lvert\bigg\lvert\Big\lvert\big\lvert\lvert x+y \rvert\big\rvert\Big\rvert\bigg\rvert\Bigg\rvert\quad
\Bigg\lVert\bigg\lVert\Big\lVert\big\lVert\lVert x+y \rVert\big\rVert\Big\rVert\bigg\rVert\Bigg\rVert\]
\end{out}

\subsection{箭头}
\Fref{tab:arrow}~列出了部分箭头的输入方法。另外还有两个命令生成的箭头可以根据上下标自动调整长度。

\begin{table}[htbp]
\caption{箭头}
\label{tab:arrow}
\centering
\begin{tabular}{llll}
    \toprule
    $\leftarrow$       & \verb|\leftarrow|      & $\longleftarrow$       & \verb|\longleftarrow| \\
    $\rightarrow$      & \verb|\rightarrow|     & $\longrightarrow$      & \verb|\longrightarrow| \\
    $\leftrightarrow$  & \verb|\leftrightarrow| & $\longleftrightarrow$  & \verb|\longleftrightarrow| \\
    $\Leftarrow$       & \verb|\Leftarrow|      & $\Longleftarrow$       & \verb|\Longleftarrow| \\
    $\Rightarrow$      & \verb|\Rightarrow|     & $\Longrightarrow$      & \verb|\Longrightarrow| \\
    $\Leftrightarrow$  & \verb|\Leftrightarrow| & $\Longleftrightarrow$  & \verb|\Longleftrightarrow| \\
    \bottomrule
\end{tabular}
\end{table}

\begin{demo}
\[\xleftarrow{x+y+z}\quad
\xrightarrow[x<y]{a*b*c}\]
\end{demo}

\subsection{标注}
\Fref{tab:accent}~列出一些短的注音符号（accent），\Fref{tab:notation}~则列出一些长的标注符号。

\begin{table}[htbp]
\caption{数学注音符号}
\label{tab:accent}
\centering
\begin{tabular}{llllllll}
    \toprule
    $\acute{x}$ & \verb|\acute{x}| & $\tilde{x}$   & \verb|\tilde{x}|   & $\mathring{x}$   & \verb|\mathring{x}|  \\
    $\grave{x}$ & \verb|\grave{x}| & $\breve{x}$ & \verb|\breve{x}| & $\dot{x}$   & \verb|\dot{x}|    \\
    $\bar{x}$  & \verb|\bar{x}|  & $\check{x}$ & \verb|\check{x}| & $\ddot{x}$  & \verb|\ddot{x}|  \\
    $\vec{x}$ & \verb|\vec{x}| & $\hat{x}$   & \verb|\hat{x}|   & $\dddot{x}$ & \verb|\dddot{x}| \\
    \bottomrule
\end{tabular}
\end{table}

\begin{table}[htbp]
\caption{长标注符号}
\label{tab:notation}
\centering
\begin{tabular}{llll}
    \toprule
    $\overline{xxx}$        & \verb|\overline{xxx}|        & $\overleftrightarrow{xxx}$  & \verb|\overleftrightarrow{xxx}| \\
    $\underline{xxx}$       & \verb|\underline{xxx}|       & $\underleftrightarrow{xxx}$ & \verb|\underleftrightarrow{xxx}| \\
    $\overleftarrow{xxx}$   & \verb|\overleftarrow{xxx}|   & $\overbrace{xxx}$           & \verb|\overbrace{xxx}| \\
    $\underleftarrow{xxx}$  & \verb|\underleftarrow{xxx}|  & $\underbrace{xxx}$          & \verb|\underbrace{xxx}| \\
    $\overrightarrow{xxx}$  & \verb|\overrightarrow{xxx}|  & $\widetilde{xxx}$           & \verb|\widetilde{xxx}| \\
    $\underrightarrow{xxx}$ & \verb|\underrightarrow{xxx}| & $\widehat{xxx}$             & \verb|\widehat{xxx}| \\
    \bottomrule
\end{tabular}
\end{table}

\subsection{省略号}
省略号用~\verb|\dots \cdots \vdots \ddots|~等命令表示，注意~\verb|\cdots|~和~\verb|\dots|~的差别。
\begin{out}
\[\dots\quad \cdots\quad \vdots\quad \ddots\]
\end{out}

\subsection{空白间距}
在数学模式中，我们可以用\Fref{tab:quad}中的命令生成不同的间距，注意负间距命令~\verb|\!|~可以用来减小间距。

\begin{table}[htbp]
\caption{空白间距}
\label{tab:quad}
\centering
\begin{tabular}{llll}
    \toprule
    \verb|\,| & 3/18 em & \verb|\quad|  & 1 em \\    
    \verb|\:| & 4/18 em & \verb|\qquad| & 2 em \\    
    \verb|\;| & 5/18 em & \verb|\!|     & -3/18 em \\
    \bottomrule
\end{tabular}
\end{table}

\section{矩阵和行列式}
数学模式下可以用~\verb|array|~环境来生成行列表。参数~\verb|{ccc}|~用于设置每列的对齐方式，\verb|l、c、r|~分别表示左中右；\verb|\\|~和~\verb|&|~用来分隔行和列。

\begin{demo}
\[\begin{array}{ccc}
x_1 & x_2 & \dots \\
x_3 & x_4 & \dots \\
\vdots & \vdots & \ddots \\
\end{array}\]
\end{demo}

\verb|amsmath|~有几个类似的环境：\verb|pmatrix、bmatrix、Bmatrix、vmatrix|~和~
\verb|Vmatrix|，它们和~\verb|array|~的主要区别是会在表两端加上~$()\; []\; \{\}\; ||\; \|\|$~等分隔符，其次这些环境没有列对齐方式参数。

行间公式可以用~\verb|smallmatrix|~环境来生成排列紧密的小矩阵。

\section{多行公式}
有时一个公式太长一行放不下，或几个公式需要写成一组，这时我们就要用到~\verb|amsmath|~提供的几个适合多行公式的环境。

\subsection{长公式}
对于多行不需要对齐的长公式，我们可以用~\verb|multline|~环境。
\begin{demo}
\begin{multline}
x=a+b+c+\\
d+e+f+g
\end{multline}
\end{demo}

需要对齐的长公式可以用~\verb|split|~环境，它本身不能单独使用，因此也称作次环境，必须包含在~\verb|equation|~或其它数学环境内。\verb|split|~环境用~\verb|\\|~和~\verb|&|~来分行和设置对齐位置。
\begin{demo}
\[ \begin{split}
x=&a+b+c+\\
  &d+e+f+g
\end{split} \]
\end{demo}

\subsection{公式组}
不需要对齐的公式组用~\verb|gather|环境，需要对齐的用~\verb|align|。
\begin{demo}
\begin{gather}
a=b+c+d\\
x=y+z
\end{gather}
\end{demo}

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

\verb|multline、gather、align|~等环境都有带~\verb|*|~的版本，它们不生成公式编号。

有多种条件的公式组用~\verb|cases|~次环境。
\begin{demo}
\[ y=\begin{cases}
-x & x<0\\
x & x\geq0
\end{cases} \]
\end{demo}

\section{定理和证明}
\LaTeX~提供了一个~\verb|\newtheorem|~命令来定义定理之类的环境，其语法如下。
\begin{code}
\newtheorem{环境名}[编号延续]{显示名}[编号层次]
\end{code}

在下例中，我们定义了四个环境：定义、定理、引理和推论，它们都在一个~\verb|section|~内编号，而引理和推论会延续定理的编号。
\begin{code}
\newtheorem{defination}{定义}[section]
\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{引理}
\newtheorem{corollary}[theorem]{推论}
\end{code}

\newtheorem{defination}{定义}[section]
\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{引理}
\newtheorem{corollary}[theorem]{推论}

定义了上述环境之后，我们就可以象下面这样使用它们。
\begin{demo}
\begin{defination}
Java是一种跨平台的编程语言。
\end{defination}
\end{demo}

\begin{demo}
\begin{theorem}
咖啡因会使人的大脑兴奋。
\end{theorem}
\end{demo}

\begin{demo}
\begin{lemma}
茶和咖啡都会使人兴奋。
\end{lemma}
\end{demo}

\begin{demo}
\begin{corollary}
晚上喝咖啡会导致失眠。
\end{corollary}
\end{demo}

\verb|proof|环境可以用来输入下面这样的证明，它会在证明结尾输入一个~QED~符号\footnote{拉丁语~quod erat demonstrandum~的缩写。}。

\begin{demo}
\begin{proof}[命题``物质无限可分''的证明]
一尺之棰，日取其半，万世不竭。
\end{proof}
\end{demo}

\section{数学字体}
和文本模式类似，数学模式下可以用\Fref{tab:math_font}~中的命令选择不同字体，其中有些字体需要加载~\verb|amsfonts|~宏包。

\begin{table}[htbp]
\caption{数学字体}
\label{tab:math_font}
\centering
\begin{tabular}{ccccccc}
    \toprule
    缺省 & \verb|\mathbf| & \verb|\mathit| & \verb|\mathsf| & 
        \verb|\mathcal| & \verb|\mathbb| \\
    XNZRC & $\mathbf{XNZRC}$ & $\mathit{XNZRC}$ & $\mathsf{XNZRC}$ & 
        $\mathcal{XNZRC}$ & $\mathbb{XNZRC}$ \\
    \bottomrule
\end{tabular}
\end{table}

\bibliographystyle{unsrtnat}
\bibliography{reading}
\newpage
