Latex的公式输入

本文来自Wikibooks-LateX/Mathemaatics的翻译,有耐心的战友可以去看原网页,点击那一长串英文字符即可传送。写本文是因为最近看一本书预测分析—R语言的实现,里面有大量的数学公式要输入,正好简书markdown也支持Latex的公式输入,介绍文章在这里https://www.jianshu.com/p/336c1577a1f4


Latex/数学公式

当Donald Knuth开始开发原始TeX系统时,最大的激励力之一就是创造一些允许简单构建数学公式的东西,同时在打印时看起来很专业。他成功的事实很可能是为什么TeX(以及后来的LaTeX)在科学界变得如此受欢迎。排版数学公式是LaTeX最大的优势之一。由于存在如此多的数学符号,这也是一个很大的话题。

如果您的文档只需要几个简单的数学公式,那么普通的LaTeX就拥有您需要的大多数工具。如果您正在编写包含许多复杂公式的科学文档,则amsmath包[1]引入了几个新命令,这些命令比基本LaTeX提供的命令更强大,更灵活。而mathtools包修复了amsmath中的一些奇怪的设定,并增加了一些实用的设置,符号和amsmath的环境。[2]要使用任何一个包,请在文档的起始处包括:

\usepackage {amsmath}

或者

\usepackage {mathtools}

mathtools包会自动加载amsmath包,因此如果mathtools被使用,就不必再添加\usepackage {amsmath}

数学环境

LaTeX需要知道文本何时输入数学的。这是因为LaTeX排版数学符号与普通文本不同。因此,需要声明特殊环境。它们可以根据它们的呈现方式分为两类:

  • text - 文本公式以内联方式显示,即在声明它的文本体内,例如,我可以说在这句话中 a + a = 2a
  • displayed - 显示的公式本身就是一行。

由于数学需要特殊的环境,因此您可以使用标准方式使用适当的环境名称。然而,与大多数其他环境不同,有一些方便的缩写来声明您的公式。总结如下表:

类型 行内(在文本中)公式 显示的公式式 显示并自动编号的方程式
环境 math displaymath equation
LaTeX速记 \(...\) \[...\]
TeX速记 $...$ $$...$$
评注 equation* (加星标版)抑制编号,但需要amsmath

建议:应该避免使用$$...$$,因为它可能会导致问题,尤其是AMS-LaTeX宏。此外,如果出现问题,错误消息可能没有帮助。

蓝而这个正是简书编写行间公式的声明语句

equation*displaymath环境在功能上等同。

如果您在常规输入文本,则说您处于文本模式 (text mode),但是当您在其中一个数学环境中键入时,您被称为处于数学模式 (math mode),它与文本模式相比有一些差异:

  1. 大多数空格和换行没有任何意义,因为所有空格都是从数学表达式逻辑推导出来的,或者必须用特殊命令指定,例如 \quad
  2. 不允许空行。每个公式只有一个段落。
  3. 每个字母都被认为是变量的名称,并且将被排版。如果要在公式(正常直立字体和正常间距)中排版普通文本,则必须使用专用命令输入文本

在文本块中插入displayed数学

为了使某些运算符,例如\lim\sum在某些数学环境中正确显示($...$),在环境中编写\displaystyle类可能会很方便。这样做可能会导致行更高,但会使得某些数学运算符正确显示指数和索引。例如,$\sum$将打印较小的Σ,$\displaystyle \sum$会打印较大的\displaystyle \sum 就像在方程中一样(这只适用于AMSMATH包)。通过在最开始(即之前)(例如,在\begin{document}之前),声明 \everymath{\displaystyle},可以强制所有数学环境中的此行为。

符号

数学有很多符号!有一组符号可以直接从键盘访问:

+ - = ! / ( ) [ ] < > | ' :  *

除了上面列出的那些之外,必须发出不同的命令以显示所需的符号。有许多例子,如希腊字母,集合和关系符号,箭头,二元运算符等。

例如:
\forall x \in X, \quad \exists y \leq \epsilon | \forall x \in X, \quad \exists y \leq \epsilon

幸运的是,有一种工具可以极大地简化对特定符号命令的搜索。在下面的外部链接部分中查找“Detexify” 。另一种选择是在下面的外部链接部分查看“综合Latex符号列表” 。

希腊字母

希腊字母通常用于数学,它们在数学模式输入很简单。你只需要在反斜杠后输入字母的名称:如果第一个字母是小写的,你会得到一个小写的希腊字母,如果第一个字母是大写(只有第一个字母),那么你将获得一个大写字母。请注意,一些大写的希腊字母看起来像拉丁字母,因此它们不是由LaTeX提供的(例如,大写的AlphaBeta分别只是“A”和“B”)。小写epsilon,theta,kappa,phi,pi,rho和sigma以两种不同的版本提供,替代的,或variant的版本由字母的名称前加上“var”创建的:
\alpha, \Alpha, \beta, \Beta, \gamma, \Gamma, \pi, \Pi, \phi, \varphi, \mu, \Phi

image.png

但是,简书上好像不支持大写版本:
\alpha, \beta, \gamma, \pi, \phi, \varphi, \mu |
\alpha, \beta, \gamma, \pi, \phi, \varphi, \mu

List数学符号以获得希腊符号的完整列表。

运算符

运算符是一个写成单词的函数:例如三角函数(sin,cos,tan),对数和指数(log,exp),limit(lim),以及trace和行列式(tr,det)。LaTeX有许多定义为命令:
\cos(2 \theta) = \cos ^ 2 \theta - \sin ^ 2 \theta
\cos(2 \theta) = \cos ^ 2 \theta - \sin ^ 2 \theta

对于某些运算符(如极限 limit),下标位于运算符下方:
\lim_{x \to \infty} \exp(-x) = 0
\lim_{x\to\infty}\exp(-x)=0
对于模运算符,有两个命令:\bmod\pmod:
a \bmod b | a \bmod b
x \equiv a \pmod {b} | x \equiv a \pmod {b}

要使用未预定义的运算符(例如argmax),请参阅自定义运算符

幂和脚标

幂和脚标等同于普通文本模式中的上标和下标。插入符号(^; 也称为抑扬音符)用于上抬某些文本,而下划线(_)用于下降文本。如果需要上抬或降低多个表达式,则应使用花括号({})对它们进行分组。
k_{n+1} = n^2 + k_n^2 - k_{n-1} | k_{n+1} = n^2 + k_n^2 - k_{n-1}

对于具有多个数字的幂指数,请使用{}围绕指数。
n ^ {22} | n ^ {22}

下划线(_)可与垂直条一起使用|用数学中的下标符号表示脚标:
f(n)= n ^ 5 + 4n ^ 2 + 2 | _ {n = 17} | f(n)= n ^ 5 + 4n ^ 2 + 2 | _ {n = 17}

分数和二项式

使用\frac{numerator}{denominator}创建分数。(它们分别是顶部底部!)。同样,可以使用命令[3]编写二项式系数(也称为选择函数): \frac{numerator}{denominator}\binom
\frac{n!}{k!(n-k)!} = \binom{n}{k} | \frac{n!}{k!(n-k)!} = \binom{n}{k}

您可以在分数中嵌入分数:
\frac{\frac{1}{x} + \frac{1}{y}}{yz} | \frac{\frac{1}{x} + \frac{1}{y}}{y - z}

请注意,当出现在另一个分数内部或内联文本中\frac{a}{b}时 ,分数明显小于显示的数学公式。的\tfrac\dfrac命令[3]强制使用的各自的风格,\textstyle\displaystyle。类似地,\tbinom\dbinom命令排版二项式系数。

对于相对简单的分数,特别是在文本中,使用指数和脚标可能在美学上更令人愉悦:
^ 3 / _ 7 | ^ 3 / _ 7

如果这看起来有点“松散”(空间过大),可以通过插入一些负空间来定义收紧版本:

%running fraction with slash - requires math mode.
\newcommand*\rfrac[2]{{}^{#1}\!/_{#2}}

\rfrac{3}{7}
image.png

简书中貌似没有。

如果您在整个文档中使用它们,建议使用xfrac软件包。该软件包提供\sfrac了创建倾斜分数的命令。用法:

Take $\sfrac{1}{2}$ cup of sugar, \dots
 
  3\times\sfrac{1}{2}=1\sfrac{1}{2}
 

Take ${}^1/_2$ cup of sugar, \dots
 
  3\times{}^1/_2=1{}^1/_2
image.png

如果使用分数作为指数,则必须在\sfrac命令周围使用花括号:

 $x^\frac{1}{2}$ % no error
 $x^\sfrac{1}{2}$ % error
 $x^{\sfrac{1}{2}}$ % no error

$x^\frac{1}{2} | x^\frac{1}{2}

在某些情况下,单独使用包会导致某些字体形状无法使用的错误。在这种情况下,还需要添加lmodern和fix-cm包。
或者,nicefrac包提供\nicefrac命令,其用法类似于\sfrac。

连续分数

应使用\cfrac命令[3]编写连续分数:

\begin {equation} 
  x = a _ 0 + \cfrac {1} {a _ 1
          + \cfrac {1} {a _ 2
          + \cfrac {1} {a _ 3 + \cfrac {1} {a _ 4} } } } 
\end {equation}

\begin {equation} x = a _ 0 + \cfrac {1} {a _ 1 + \cfrac {1} {a _ 2 + \cfrac {1} {a _ 3 + \cfrac {1} {a _ 4} } } } \end {equation}

两个数字的乘法

为了使乘法在视觉上类似于分数,可以使用嵌套数组,例如,一个在另一个之下写入的数字的乘法。

\begin{equation}
\frac{
    \begin{array}[b]{r}
      \left( x_1 x_2 \right)\\
      \times \left( x'_1 x'_2 \right)
    \end{array}
  }{
    \left( y_1y_2y_3y_4 \right)
  }
\end{equation}

\begin{equation} \frac{ \begin{array}[b]{r} \left( x_1 x_2 \right)\\ \times \left( x'_1 x'_2 \right) \end{array} }{ \left( y_1y_2y_3y_4 \right) } \end{equation}

\sqrt命令创建一个围绕表达式的平方根。它接受方括号([和])中指定的可选参数来改变幅度:
\sqrt{\frac{a}{b}} | \sqrt{\frac{a}{b}}
\sqrt[n]{1+x+x^2+x^3+\dots+x^n} | \sqrt[n]{1+x+x^2+x^3+\dots+x^n}

有些人更喜欢将平方根写成“关闭”它的内容。这种方法可以说明更清楚根符号的范围。在使用计算机进行书写时通常不会使用此习惯,但如果您仍想更改平方根的输出,LaTeX会为您提供这种可能性。只需在文档的前言中添加以下代码:

% New definition of square root:
% it renames \sqrt as \oldsqrt
\let\oldsqrt\sqrt
% it defines the new \sqrt in terms of the old one
\def\sqrt{\mathpalette\DHLhksqrt}
\def\DHLhksqrt#1#2{%
\setbox0=\hbox{$#1\oldsqrt{#2\,}$}\dimen0=\ht0
\advance\dimen0-0.2\ht0
\setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
{\box0\lower0.4pt\box2}}
image.png

此TeX代码首先将\sqrt命令重命名为\oldsqrt,然后\sqrt根据旧命令重新定义,添加更多内容。新的平方根可以在左边的图片中看到,与右边的旧图片相比。不幸的是,如果你想使用多个根,这个代码将不起作用:如果你试图写\displaystyle {\sqrt [{b}] {a}} 如你使用上面的代码后,你只得到一个错误的输出。换句话说,只有在不打算在整个文档中使用多个根时,才能以\sqrt[b]{a}这种方式重新定义平方根。
另一条允许多个根的TeX代码是:


\usepackage{letltxmacro}
\makeatletter
\let\oldr@@t\r@@t
\def\r@@t#1#2{%
\setbox0=\hbox{$\oldr@@t#1{#2\,}$}\dimen0=\ht0
\advance\dimen0-0.2\ht0
\setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
{\box0\lower0.4pt\box2}}
\LetLtxMacro{\oldsqrt}{\sqrt}
\renewcommand*{\sqrt}[2][\ ]{\oldsqrt[#1]{#2} }
\makeatother


$\sqrt[a]{b} \quad \oldsqrt[a]{b}$
image.png

但是这需要导入一个包 \usepackage{letltxmacro}

求和和积分

\sum\int命令分别插入之和积分符号,在使用插入符号(指定限度^)和下划线(_)。sums的典型表示法是:
\sum_{i=1}^{10} t_i | \sum_{i=1}^{10} t_i
或者:
\displaystyle\sum_{i=1}^{10} t_i | \displaystyle\sum_{i=1}^{10} t_i

积分的限制遵循相同的符号。使用直立d表示积分变量也很重要,在数学模式下,通过\mathrm{}命令获得积分变量,并使用小空格将其与被积函数分开,这可以通过\, command获得。
\int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x | \int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x

还有许多其他“大”命令以类似的方式运行:

\sum \sum \prod \prod \coprod \coprod
\bigoplus \bigoplus \bigotimes \bigotimes \bigodot \bigodot
\bigcup \bigcup \bigcap \bigcap \biguplus \biguplus
\bigsqcup \bigsqcup \bigvee \bigvee \bigwedge \bigwedge
\int \int \oint \oint \iint \iint
\iiint $$\iiint \iiiint \idotsint \iiiint \idotsint

有关更多整数符号(包括 Computer Modern 字体中默认未包含的符号),请尝试使用esint包。\substack命令[3]允许使用的\\写多行的限制:

\sum_{\substack{
   0<i<m \\
   0<j<n
  }} 
 P(i,j)

\sum_{\substack{ 0<i<m \\ 0<j<n }} P(i,j)

如果要在符号的上方和下方指定积分限制(类似求和),请使用以下\limits命令:
\int\limits_a^b | \int\limits_a^b
但是,如果要将其应用于所有积分,则最好在加载amsmath包时指定intlimits选项:
\usepackage [intlimits] {amsmath}

高等数学章节中描述了其他上下文中的下标和上标以及与它们相关的amsmath包的其他参数。

对于更大的积分,您可以使用个人声明或bigints包[4]

括号,括号和分隔符

高等数学章节中描述了如何在多线方程中使用大括号。

在处理除了琐碎的方程式之外的任何事情时,使用诸如括号之类的分隔符很快就变得很重要。如果没有它们,公式就会变得含糊不清。此外,特殊类型的数学结构(如矩阵)通常依赖于分隔符来包围它们。

LaTeX中有多种分隔符可供使用:

( a ), [ b ], \{ c \}, | d |, \| e \|,
\langle f \rangle, \lfloor g \rfloor,
\lceil h \rceil, \ulcorner i \urcorner

( a ), [ b ], \{ c \}, | d |, \| e \|, \langle f \rangle, \lfloor g \rfloor, \lceil h \rceil, \ulcorner i \urcorner

其中\lbrack\rbrack可用于代替[]

自动调整大小

通常,数学特征的大小不同,在这种情况下,表达式周围的分隔符应相应地变化。这可以通过自动的完成\left\right\middle命令。任何以前的分隔符都可以与这些分隔符结合使用:
\left(\frac{x^2}{y^3}\right) | \left(\frac{x^2}{y^3}\right)
P\left(A=2\middle|\frac{A^2}{B}>4\right) | P\left(A=2\middle|\frac{A^2}{B}>4\right)

如果只需要表达式一侧的分隔符,则可以使用句点(.)表示另一侧的不可见分隔符。
\left.\frac{x^3}{3}\right|_0^1 | \left.\frac{x^3}{3}\right|_0^1

具体含义不懂,以后用到再学习吧!

手动调整大小

在某些情况下,由\left\right命令生成的大小可能不合适,或者您可能只是希望更精细地控制分隔符大小。在这种情况下,\big\Big\bigg\Bigg可以使用调节器命令:
( \big( \Big( \bigg( \Bigg( | ( \big( \Big( \bigg( \Bigg(

在处理嵌套分隔符时,这些命令主要有用。例如,排版时:
\frac{\mathrm d}{\mathrm d x} \big( k g(x) \big) | \frac{\mathrm d}{\mathrm d x} \big( k g(x) \big)

当方程太大,离开页面末尾时,手动调整大小也很有用,并且必须使用align命令将其分成两行。虽然命令\left.\right.可以用来平衡每行分隔符,这可能会导致错误的分隔符的大小。此外,如果\underbrace在分隔符之间出现或类似的命令,则可以使用手动大小调整来避免过大的分隔符。

矩阵和数组

可以使用矩阵环境[3]创建基本矩阵:与其他类似于表的结构一样,条目由行指定,列使用&符号(&)分隔,新行以双反斜杠(\\) 分隔:

\[
 \begin{matrix}
  a & b & c \\
  d & e & f \\
  g & h & i
 \end{matrix}
\]
简叔不支持

要指定表格中列的对齐方式,请使用加星标的版本[5]

\begin{matrix}
  -1 & 3 \\
  2 & -4
 \end{matrix}
 =
 \begin{matrix*}[r]
  -1 & 3 \\
  2 & -4
 \end{matrix*}
简叔不支持

默认情况下,对齐是c,但它可以是在数组环境中有效的任何列类型。

但是,矩阵通常用某种分隔符括起来,虽然可以使用\left\right命令,但还有各种其他预定义环境自动包含分隔符:

估计简叔用不上

在写下任意大小的矩阵时,通常使用水平,垂直和对角线三点(称为椭圆)来填充某些列和行。这些可以使用来指定\cdots\vdots\ddots分别为:

A_{m,n} = 
 \begin{pmatrix}
  a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
  a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  a_{m,1} & a_{m,2} & \cdots & a_{m,n} 
 \end{pmatrix}

A_{m,n} = \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix}

简叔居然支持这个语法!!!

在某些情况下,您可能希望更精细地控制每列中的对齐,或者希望在列或行之间插入行。这可以通过使用可以实现阵列的环境,这在本质上是一个数学模式版本tabular环境,这需要对列进行预先指定:

\begin{array}{c|c}
  1 & 2 \\ 
  \hline
  3 & 4
 \end{array}

\begin{array}{c|c} 1 & 2 \\ \hline 3 & 4 \end{array}

您可能会看到AMS矩阵类环境在与分数一起使用时没有留下足够的空间,从而产生类似于此的输出:
M = \begin{bmatrix} \frac{5}{6} & \frac{1}{6} & 0 \\[0.3em] \frac{5}{6} & 0 & \frac{1}{6} \\[0.3em] 0 & \frac{5}{6} & \frac{1}{6} \end{bmatrix}

要解决此问题,请使用可选参数向\命令添加其他前导空格:

M = \begin{bmatrix}
       \frac{5}{6} & \frac{1}{6} & 0           \\[0.3em]
       \frac{5}{6} & 0           & \frac{1}{6} \\[0.3em]
       0           & \frac{5}{6} & \frac{1}{6}
     \end{bmatrix}

M = \begin{bmatrix} \frac{5}{6} & \frac{1}{6} & 0 \\[0.3em] \frac{5}{6} & 0 & \frac{1}{6} \\[0.3em] 0 & \frac{5}{6} & \frac{1}{6} \end{bmatrix}

如果矩阵上需要borderindices,则普通TeX提供宏 \bordermatrix:

M = \bordermatrix{~ & x & y \cr
                  A & 1 & 0 \cr
                  B & 0 & 1 \cr}
不支持!

运行文本的矩阵

要插入一个小矩阵,而不是增加包含它的行中的前导,请使用smallmatrix环境:

$\bigl(\begin{smallmatrix}
a&b \\ c&d
\end{smallmatrix} \bigr)$
to not increase leading in a portion of text.

A matrix in text must be set smaller:
\bigl(\begin{smallmatrix} a&b \\ c&d \end{smallmatrix} \bigr)
to not increase leading in a portion of text.

向方程式添加文本

数学环境与文本表示中的文本环境不同。以下是尝试在数学环境中表示文本的示例:
50 apples \times 100 apples = lots of apples^2 | 50 apples \times 100 apples = lots of apples^2

有两个值得注意的问题:单词或数字之间没有空格,字母用斜体表示,比正常情况更多。这两个问题都是数学公式模式引起的,因为它们被视为一个数学表达式:空格被忽略(LaTeX根据自己的数学公式规则),每个字符都是一个单独的元素(所以不像正常文本那样紧密排列)。

有许多方法可以正确添加文本。典型的方法是使用命令[3]包装文本(类似的命令是,虽然这会导致下标问题,并且具有较少描述性的名称)。让我们看看上面的等式代码被调整后会发生什么: \text{...}\mbox{...}
50 \text{apples} \times 100 \text{apples} = \text{lots of apples}^2 | 50 \text{apples} \times 100 \text{apples} = \text{lots of apples}^2

文字看起来更好。但是,数字和单词之间没有空隙。不幸的是,您需要明确添加这些。有许多方法可以在数学元素之间添加空格,但为了简单起见,我们可以简单地在\text命令中插入空格字符。
50 \text{ apples} \times 100 \text{ apples} = \text{lots of apples}^2 | 50 \text{ apples} \times 100 \text{ apples} = \text{lots of apples}^2

格式化文本

使用\text可以获得基本的结果。然而,有一种替代方案可以提供更多的灵活性。你可能还记得引进的font formatting commands,
,如\textrm\textit\textbf,等这些命令相应格式化参数,例如,\textbf{bold text}给出了粗体字。这些命令在数学环境中同样有效的包含文本。这里的额外好处是,您可以更好地控制字体格式,而不仅仅是用\text使用标准文本。
50 \textrm{ apples} \times 100 \textbf{ apples} = \textit{lots of apples}^2 | 50 \textrm{ apples} \times 100 \textbf{ apples} = \textit{lots of apples}^2

格式化数学符号

我们现在可以格式化文字; 如何格式化数学表达式?有一组格式化命令非常类似于刚刚使用的字体格式化,除了它们专门针对数学模式中的文本(需要amsfonts)


简叔基本不起作用

这些格式化命令可以围绕整个等式,而不仅仅是文本元素:它们只格式化字母,数字和大写希腊语,其他数学命令不受影响。

要使用粗体小写的希腊字母或其他符号,请使用\boldsymbol命令[3] ; 这仅在当前字体中存在符号的粗体版本时才有效。作为最后的手段,有\pmb命令[3](poor man's bold):这会打印出略微不同的多个版本。
\boldsymbol{\beta} = (\beta_1,\beta_2,\dotsc,\beta_n) | \boldsymbol{\beta} = (\beta_1,\beta_2,\dotsc,\beta_n)

要在数学模式下更改字体的大小,请参阅更改字体大小

音符

那么当你用完符号和字体时该怎么办?那么下一步是使用音符:

a'' a'' \hat{a} \hat{a} a'or a^{\prime} a'
\grave{a} \grave{a} \acute{a} \acute{a} \dot{a} \dot{a}
\not{a} \not{a} \mathring{a} \mathring{a} \overrightarrow{AB} \overrightarrow{AB}
a''' a''' \bar{a} \bar{a} \overleftarrow{AB} \overleftarrow{AB}
\ddot{a} \ddot{a} a'''' a'''' \overline{aaa} \overline{aaa}
\check{a} \check{a} \breve{a} \breve{a} \stackrel\frown{AAA} \stackrel\frown{AAA}
\dddot{a} \dddot{a} \ddddot{a} \ddddot{a} \widehat{AAA} \widehat{AAA}
\tilde{a} \tilde{a} \underline{a} \underline{a} \widetilde{AAA} \widetilde{AAA}
\vec{a} \vec{a} \widehat{AAA} \widehat{AAA}

颜色

Color描述的包xcolor允许我们为方程式添加颜色。例如:
k = {\color{red}x} \mathbin{\color{blue}-} 2 | k = {\color{red}x} \mathbin{\color{blue}-} 2
唯一的问题是这会破坏运算符-周围的默认LaTex格式。为了解决这个问题,我们将它封装在一个\mathbin环境中,因为它-是一个二元运算符。此处描述了此过程。

加号和减号

LaTeX以两种可能的方式处理+- 符号。最常见的是作为二元运算符。当两个数学元素出现在符号的两侧时,它被假定为二元运算符,因此,在符号的任一侧分配一些空格。另一种方式是标志指定。这是当您说明数学量是正数还是负数时。对于后者来说这是常见的,因为在数学中,这些元素被假定为正数,除非有一个 - 前缀。在这种情况下,您希望符号显示在相应元素附近以显示其关联。如果+或 - 之前没有任何东西但你希望它像二元运算符一样处理你可以在运算符之前添加一个不可见的字符{}。如果您正在编写多行公式,并且新行可以以 - 或+开头,这可能很有用,例如,您可以修复一些奇怪的对齐,在必要时添加不可见的字符。

\pm \pm \mp \mp

控制水平间距

LaTeX显然非常擅长排版数学 - 这是LaTeX扩展的核心TeX系统的主要目标之一。但是,它并不总是依赖于以您的方式准确地解释公式。当存在含糊不清的表达时,它必须做出某些假设。结果往往是略微不正确的水平间距。这样的输出仍然令人满意,但任何完美主义者无疑都希望微调他们的公式以确保间距正确。这些通常是非常微妙的调整。

某些情况下,LaTeX正确地完成了它的工作,但你只是想添加一些空间,也许是为了添加某种评论。例如,在下面的等式中,最好确保在数学和文本之间存在适当的空间量。

\[ f(n) =
  \begin{cases}
    n/2       & \quad \text{if } n \text{ is even}\\
    -(n+1)/2  & \quad \text{if } n \text{ is odd}
  \end{cases}
\]
image.png

此代码在Miktex 2.9中产生错误,并且不会产生右侧所示的结果。使用\mathrm而不仅仅是\text

(请注意,此特定示例可以通过高级数学章节中描述的amsmath包提供的案例构造以更优雅的代码表示。)

LaTeX定义了两个命令,可以在文档(不仅仅是数学)中的任何位置使用,以插入一些水平空间。他们是\quad\qquad

A \quad是等于当前字体大小的空格。所以,如果你使用的是11pt字体,那么提供的空间\quad也将是11pt(当然是水平的。)这个\qquad数量的两倍。从上面示例的代码中可以看出,\quads用于在数学和文本之间添加一些分隔。

好的,所以回到文档开头提到的微调。一个很好的例子是显示y相对于x的不定积分的简单方程:
\int y \, \mathrm {d}x

\int y \mathrm{d}x | \int y \mathrm{d}x

但是,这并没有给出正确的结果。LaTeX不尊重代码中留下的空白区域,表示y和d x是独立的实体。相反,它完全混淆了它们。\quad在这种情况下,A 显然是过度的 - 需要在这种类型的实例中使用一些小空间,这就是LaTeX提供的:

命令 描述 尺寸
\, 小空格 3/18的quad
\: 中等空格 4/18的quad
\; 大空格 4/18的quad
\! 负空格 -3/18的quad

注意,如果需要,您可以在序列中使用多个命令以获得更大的空间。

那么,要纠正当前的问题:

\int y\, \mathrm{d}x | \int y\, \mathrm{d}x
\int y\: \mathrm{d}x | \int y\: \mathrm{d}x
\int y\; \mathrm{d}x | \int y\; \mathrm{d}x

负空间可能看起来像是一件奇怪的事情,但是,如果没有一些用处它就不会存在!采用以下示例:

\left(
    \begin{array}{c}
      n \\
      r
    \end{array}
  \right) = \frac{n!}{r!(n-r)!}

\left( \begin{array}{c} n \\ r \end{array} \right) = \frac{n!}{r!(n-r)!}

用于表示二项式系数的类似矩阵的表达式被填充。括号与实际内容之间的空间太大。这可以通过在左括号后和右括号之前添加一些负空格来轻松纠正。

\left(\!
    \begin{array}{c}
      n \\
      r
    \end{array}
  \!\right) = \frac{n!}{r!(n-r)!}

\left(\! \begin{array}{c} n \\ r \end{array} \!\right) = \frac{n!}{r!(n-r)!}

在任何情况下,应尽可能避免手动添加一些空格:它使源代码更复杂,并且它违背了“所见即所得”的基本原则。最好的办法是使用您想要的所有空格定义一些命令,然后,当您使用命令时,您不必添加任何其他空格。稍后,如果您改变主意关于水平空格的长度,您可以轻松地更改它,仅修改您之前定义的命令。让我们用一个例子:你想要的 ddx 中不可分割的是在罗马字体和狭小的空间从休息了。可以定义如下命令\int x \, \mathrm{d} x来要键入类似的积分:

\newcommand{\dd}{\mathop{}\,\mathrm{d}}

在您的文件的序言中。我们选择的\dd只是因为它提醒它取代它的“d”并且输入速度很快。这样做,你的积分代码就变成了\int x \dd x\dd。现在,每当你写一个积分时,你只需要使用而不是“d”,你的所有积分都将具有相同的风格。如果你改变主意,你只需要改变序言中的定义,所有的积分都会相应改变。

手动指定公式样式

要使用文本样式手动显示公式的片段,请使用大括号括起片段并使用片段作为前缀\textstyle。大括号是必需的,因为\textstyle宏会更改渲染器的状态,以文本样式呈现所有后续数学。大括号将此状态更改限制为仅包含在其中的片段。例如,要仅使用总和符号中的文本样式,就可以输入

\begin{equation}
   C^i_j = {\textstyle \sum_k} A^i_k B^k_j
\end{equation}

与命令相同的东西看起来像这样:
\newcommand{\tsum}[1]{{\textstyle \sum_{#1}}}

注意额外的括号。围绕表达式只有一组是不够的。这将导致\tsum k使用文本样式显示所有数学后。

要使用显示样式显示公式的一部分,请执行相同的操作,但请\displaystyle改用。

高等数学:AMS数学包

AMS(美国数学学会)数学包是一个强大的包,它创建了比数学LaTeX语言更高的抽象层; 如果你使用它会让你的生活更轻松。amsmath引入的一些命令会使其他普通的LaTeX命令过时:为了保持最终输出的一致性,你最好尽可能使用amsmath命令。如果您这样做,您将获得优雅的输出,而不必担心对齐和其他细节,保持您的源代码可读。如果您想使用它,您必须在序言中添加:
\usepackage{amsmath}

在公式中引入点

amsmath还定义了\dots命令,即现有的泛化\ldots。您可以\dots在文本和数学模式下使用,LaTeX将用三个点“...”替换它,但它将根据上下文决定是将它放在底部(如\ldots)还是居中(如\cdots)。

LaTeX为您提供了几个在公式中插入点(椭圆)的命令。如果您必须键入省略元素的大矩阵,这可能特别有用。首先,这里是LaTeX提供的与点相关的主要命令:

代码 输出 附注
\dots \dots 通用点(省略号),用于文本(外部公式)。它根据上下文自动管理自身前后的空白,这是一个更高级别的命令。
\ldots \ldots 输出类似于前一个,但没有自动空白管理; 它工作在较低的水平。
\cdots \cdots 这些点相对于字母的高度居中。还有二进制乘法运算符,\cdot如下所述。
\vdots \vdots 垂直点
\ddots \ddots 对角点
\iddots 反对角点(需要mathdots包)
\hdotsfor{n} 要在矩阵中使用,它会创建一行跨越 n 列的点。

而不是使用\ldots\cdots,您应该使用面向语义的命令。它可以使您的文档在运行中适应不同的惯例,以防万一(例如)您必须将其提交给坚持在这方面遵循家庭传统的出版商。各种类型的默认处理遵循美国数学协会的惯例。

代码 输出 附注
A_1,A_2,\dotsc, A_1,A_2,\dotsc, 用“逗号点”
A_1+\dotsb+A_N A_1+\dotsb+A_N 用于“带二元运算符/关系的点”
A_1 \dotsm A_N A_1 \dotsm A_N 为“乘法点”
\int_a^b \dotsi \int_a^b \dotsi 为“积分点
A_1\dotso A_N A_1\dotso A_N 为“其他点”(以上都不是

用对齐环境写一个方程

高级数学中描述了如何使用amsmath包编写具有对齐环境的等式。

数学符号列表

下面列出了\ TeX \包中的所有预定义数学符号。额外包装可提供更多符号。
关系符号

脚本 符号 脚本 符号 脚本 符号 脚本 符号 脚本 符号
< < > > = = \parallel \parallel `\nparallel`` \nparallel
\leq \leq \geq \geq \doteq \doteq \asymp \asymp \bowtie \bowtie
\ll \ll \gg \gg \equiv \equiv \vdash \vdash \dashv \dashv
\subset \subset \supset \supset \approx \approx \in \in \ni \ni
\subseteq \subseteq \supseteq \supseteq \cong \cong \smile \smile \frown \frown
\nsubseteq \nsubseteq \nsupseteq \nsupseteq \simeq \simeq \models \models \notin \notin
\sqsubset \sqsubset \sqsupset \sqsupset \sim \sim \perp \perp \mid \mid
\sqsubseteq \sqsubseteq \sqsupseteq \sqsupseteq \propto \propto \prec \prec \succ \succ
\preceq \preceq \succeq \succeq \neq \neq \sphericalangle \sphericalangle \measuredangle \measuredangle

二元关系符号

脚本 符号 脚本 符号 脚本 符号 脚本 符号
\pm \pm \cap \cap \diamond \diamond \oplus \oplus
\mp \mp \cup \cup \bigtriangleup \bigtriangleup \ominus \ominus
\times \times \uplus \uplus \bigtriangledown \bigtriangledown \otimes \otimes
\div \div \sqcap \sqcap \triangleleft \triangleleft \oslash \oslash
\ast \ast \sqcup \sqcup \triangleright \triangleright \odot \odot
\star \star \vee \vee \bigcirc \bigcirc \circ \circ
\dagger \dagger \wedge \wedge \bullet \bullet \setminus \setminus
\ddagger \ddagger \cdot \cdot \wr \wr \amalg \amalg

集合与逻辑运算符

脚本 符号 脚本 符号
\exists \exists \rightarrow \rightarrow or \to
\nexists \nexists \leftarrow \leftarrow or \gets
\forall \forall \mapsto \mapsto
\neg \neg \implies \implies
\subset \subset \Rightarrow \Rightarrow or \implies
\supset \supset \leftrightarrow \leftrightarrow
\iff \iff \in \in
\notin \notin \Leftrightarrow \Leftrightarrow (等价符的首选((iff))
\ni \ni \top \top
\land \land \bot \bot
\lor \lor \emptyset\varnothing \emptyset\varnothing

分隔符

符号 脚本 符号 脚本 符号 脚本 符号 脚本
| | or \mid(differenceinspacing)` || || / / \backslash \backslash
\{ \{ \} \} \langle \langle \rangle \rangle
\uparrow \uparrow \Uparrow \Uparrow \lceil \lceil \rceil \rceil
\downarrow \downarrow \Downarrow \Downarrow \lfloor \lfloor \rfloor \rfloor

注意:要使用LaTeX中与希腊字母具有相同外观的希腊字母,只需使用罗马形式:例如,A代替Alpha,B代替Beta等。
希腊字母

符号 脚本 符号 脚本
\mathrm {A} and \alpha A and \alpha \mathrm {N} and \nu N and \nu
\mathrm {B} and \beta B and \beta \Xi and \xi \Xi and \xi
\Gamma and \gamma Gamma and \gamma \mathrm {O} and \mathrm {o} O and o
\Delta and \delta Delta and \delta Pi, \pi and \varpi \Pi,\pi and \varpi
\mathrm {E}, \epsilon and \varepsilon E,\epsilon and \varepsilon \mathrm {P}, \rho and \varrho P,\rho and \varrho
\mathrm {Z} and \zeta Z and \zeta \Sigma, \sigma and \varsigma Sigma,\sigma and \varsigma
\mathrm {H} and \eta H and \eta \mathrm {T} and \tau T and \tau
\Theta, \theta and \vartheta \Theta,\theta and \vartheta \Upsilon and \upsilon \Upsilon and \upsilon
\mathrm {I} and \iota I and \iota \Phi, \phi, and \varphi \Phi,\phi and \varphi
\mathrm {K}, \kappa and \varkappa K,\kappa and \varkappa \mathrm {X} and \chi X and \chi
\Lambda and \lambda Lambda and \lambda \Psi and \psi \Psi and \psi
\mathrm {M} and \mu M and \mu \Omega and \omega \Omega and \omega

其它符号

符号 脚本 符号 脚本 符号 脚本 符号 脚本 符号 脚本
\partial \partial \imath \imath \Re \Re \nabla \nabla \aleph \aleph
\eth \eth \jmath \jmath \Im \Im \Box \Box \beth \beth
\hbar \hbar \ell \ell \wp \wp \infty \infty \gimel \gimel

*未在LATEX 2中预定义。使用其中一个包latexsym,amsfonts,amssymb,txfonts,pxfonts或wasysym

三角函数

符号 脚本 符号 脚本 符号 脚本 符号 脚本
\sin \sin \arcsin \arcsin \sinh \sinh \sec \sec
\cos \cos \arccos \arccos \cosh \cosh \csc \csc
\tan \tan \arctan \arctan \tanh \tanh
\cot \cot \operatorname {arccot} \arccot \coth \coth

如果LaTeX不包含您要使用的数学运算符的命令,例如\cis(cosine plus i times sine), ,请添加到您的序言:
\DeclareMathOperator\cis{cis}
然后您可以像使用\cos或任何其他数学运算符一样在文档中使用在\cis

总结

正如您开始看到的那样,排版数学有时会很棘手。但是,由于LaTeX提供了如此多的控制,你可以用相对较少的努力获得专业质量的数学排版(当然,一旦你做了一些练习,就可以了!)。数学公式的输入排版问题可能无穷无尽。但是,通过本教程,您应该能够有效的处理。

推荐阅读更多精彩内容

  • $ \LaTeX{} $历史 $\LaTeX{}$(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛ...
    大只若于阅读 2,058评论 0 2
  • 声明!!!! 此文章的代码部分在简书中皆不能正常显示, 请去我的个人网站观看效果, 如果访问不了, 请翻墙试试! ...
    kagenZhao阅读 829评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 1,095评论 0 2
  • Cmd Markdown 公式指导手册 标签: Tutorial 2018-03-20 补档:收到很多小伙伴对本文...
    单程_min阅读 83评论 0 0
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 2,617评论 1 14