markdown公式语法

如何优雅地在Markdown中输入数学公式

对于一些理科生来说,在学习数学知识的时候,在计算机上写公式是比较头疼的事情。好在Markdown支持LaTeX公式输入,在一定程度上缓解了输入的麻烦。以下是在Markdown中编写公式的方法介绍。

一、基础部分

1. 公式标记

在Markdown中,有两种输入公式的方法:

  • 行内公式(inline):用一对美元符号$包裹。例如:$E=mc^2$ ,写法是$E=mc^2$
  • 整行公式(displayed):用一对紧挨的两个美元符号$$包裹。例如:
    $$
    \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
    $$
    写法是:
1
2
3
$$
\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
$$

2. 希腊字母

名称 大写 Tex 小写 Tex
alpha A A α \alpha
beta B B β \beta
gamma Γ \Gamma γ \gamma
delta Δ \Delta δ \delta
epsilon E E ϵ \epsilon
zeta Z Z ζ \zeta
eta H H η \eta
theta Θ \Theta θ \theta
iota I I ι \iota
kappa K K κ \kappa
lambda Λ \Lambda λ \lambda
mu M M μ \mu
nu N N ν \nu
xi Ξ \Xi ξ \xi
omicron O O ο \omicron
pi Π \Pi π \pi
rho P P ρ \rho
sigma Σ \Sigma σ \sigma
tau T T τ \tau
upsilon Υ \Upsilon υ \upsilon
phi Φ \Phi ϕ \phi
chi X X χ \chi
psi Ψ \Psi ψ \psi
omega Ω \Omega ω \omega

一些希腊字母具有变体形式,如\epsilon \varepsilon:ϵ ε、\phi \varphi:ϕ φ。

3. 上标与下标

  • 上标和下标分别使用^_来表示。例如x_i^2:$x_i^2$,\log_2 x:$\log_2⁡x$。
  • 默认情况下,上下标符号仅仅对下一个组起作用。一个组即单个字符或者使用{}包裹起来的内容。例如,10^10会得到$10^10$,而10^{10}才是$10^{10}$。
  • 大括号能消除二义性,如x^5^6会显示错误,必须使用大括号来界定^的结合性,如{x^5}^6:${x^5}^6$或者x^{5^6}:$x^{5^6}$。
  • 注意区分x_i^2:$x_i^2$和x_{i_2}:$x_{i_2}$。
  • 若要在左右两边都有上下标,可以用\sideset来表示,如\sideset{^1_2}{^3_4}\bigotimes:$\sideset{^1_2}{^3_4}\bigotimes$。

4. 括号

  • 小括号与方括号:使用原始的()[]即可。如(2+3)[4+4]:$(2+3)[4+4]$。
  • 大括号:由于大括号{}被用来分组,因此需要使用\{\}表示大括号,也可以使用\lbrace\rbrace来表示。如\{a*b\}或者\lbrace a*b \rbrace,都会显示为${a*b}$。
  • 尖括号:使用\langle\rangle分别表示左尖括号和右尖括号。如\langle x \rangle:$\langle x \rangle$。
  • 上取整:使用\lceil\rceil表示。如\lceil x \rceil:$\lceil x \rceil$。
  • 下取整:使用\lfloor\rfloor表示。如\lfloor x \rfloor:$\lfloor x \rfloor$。
  • 原始括号并不会随着公式大小缩放。如(\frac12):$(\frac{1}{2})$。可以使用\left( ...\right)来自适应的调整括号。如\left( \frac12 \right):$\left( \frac{1}{2} \right)$。

5. 求和与积分

  • \sum用来表示求和符号,其下标表示求和下限,上标表示上限。如\sum_1^n:$\sum_1^n$。
  • \int用来表示积分符号,其上下标表示积分的上下限。如\int_1^\infty:$\int_1^\infty$。
  • 类似的符号还有:\prod:$\prod$,\bigcup:$\bigcup$,\bigcap:$\bigcap$,\iint:$\iint$。

6. 分式与根式

  • 分式有两种表示方法:
    • 第一种,使用\frac ab,其中\frac作用于其后的两个组a和b,结果为$\frac{a}{b}$。如果分子或分母不是单个字符,需要使用{}来分组。
    • 第二种,使用\over来分隔一个组的前后两部分,如{a+1\over b+1}:$\frac{a+1}{b+1}$。
  • 根式使用\sqrt[a]b来表示。其中,方括号内的值用来表示开几次方,省略方括号则表示开方,如\sqrt[4]{\frac xy}:$\sqrt[4]{\frac{x}{y}}$,\sqrt{x^3}:$\sqrt{x^3}$。

7. 字体

  • 使用\it显示意大利体(公式默认字体):$\it{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathbb\Bbb显示黑板粗体(黑板黑体),如\mathbb{CHNQRZ}:$\mathbb{CHNQRZ}$。
  • 使用\mathbf\bf显示黑体:$\mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathtt\tt显示打印机字体:$\mathtt{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathrm\rm显示罗马体:$\mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathsf\sf显示等线体(sans-serif体):$\mathsf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathcal显示艺术字体:$\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathscr\cal显示手写字体(花体):$\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mathfrak显示Fraktur字体(老式德国字体):$\mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$。
  • 使用\mit显示数学斜体:$\mit{1234567890}$。

8. 特殊函数与符号

关系运算符

输入 显示 输入 显示 输入 显示 输入 显示
$\pm$ ± $\mp$ $\times$ × $\div$ ÷
$\mid$ $\nmid$ $\circ$ $\bullet$
$\cdot$ $\ast$ $\odot$ $\bigodot$
$\otimes$ $\bigotimes$ $\oplus$ $\bigoplus$
$\lt$ < $\gt$ > $\leq$ $\geq$
$\neq$ $\approx$ $\equiv$ $\sim$
$\simeq$ $\cong$ $\prec$ $\lhd$
$\sum$ $\prod$ $\coprod$

集合运算符

输入 显示 输入 显示 输入 显示 输入 显示
$\emptyset$ $\varnothing$ $\in$ $\notin$
$\subset$ $\supset$ $\cup$ $\cap$
$\subseteq$ $\supseteq$ $\subsetneq$ $\supsetneq$
$\bigcup$ $\bigcap$ $\bigvee$ $\bigwedge$
$\uplus$ $\biguplus$ $\sqcup$ $\bigsqcup$

对数运算符

输入 显示 输入 显示 输入 显示
$\log$ log $\lg$ lg $\ln$ ln

三角运算符

输入 显示 输入 显示 输入 显示
$\bot$ $\angle$ $30^\circ$ 30°
$\sin$ sin $\cos$ cos $\tan$ tan
$\cot$ cot $\sec$ sec $\csc$ csc

微积分运算符

输入 显示 输入 显示 输入 显示
$\prime$ $\int$ $\iint$
$\iiint$ $\iiiint$ $\oint$
$\lim$ lim $\infty$ $\nabla$

逻辑运算符

输入 显示 输入 显示 输入 显示 输入 显示
$\because$ $\therefore$ $\forall$ $\exists$
$\not=$ $\lnot$ ¬ $\vdash$ $\vDash$
$\land$ $\lor$ $\top$ $\bot$

箭头符号

输入 显示 输入 显示 输入 显示 输入 显示
$\uparrow$ $\downarrow$ $\rightarrow(\to)$ $\leftarrow$
$\Uparrow$ $\Downarrow$ $\Rightarrow$ $\Leftarrow$
$\longrightarrow$ $\longleftarrow$ $\Longrightarrow$ $\mapsto$
  • 表示排列使用{n+1 \choose 2k}\binom{n+1}{2k}:$\binom{n+1}{2k}$。
  • 使用\pmod表示模运算,如a\equiv b\pmod n:$a\equiv b\pmod n$。
  • 使用\ldots\cdots表示省略号,二者的区别是dots的位置不同,ldots位置稍低$a_1,a_2,\ldots,a_n$,cdots位置居中$a_1+a_2+\cdots+a_n$。
  • 使用\overline\underline表示连线符号,如\overline{a+b+c+d}:$\overline{a+b+c+d}$,\underline{x+y+z}:$\underline{x+y+z}$。
  • 其他特殊字符:\star:$\star$、\aleph_0:$\aleph_0$、\partial:$\partial$、\Im:$\Im$、\Re:$\Re$。
  • 一些特殊字符可以使用\转义为原来的含义,如\$表示$、\_表示下划线。

9. 空间

在书写公式时,a和b之间无论输入多少空格,最后都会显示为ab。可通过以下方式增加间隙:

  • 在ab间加入\,增加些许间隙,如a\,b:$a,b$;
  • \;增加较宽的间隙,如a\;b:$a;b$;
  • \quad\qquad会增加更大的间隙,如a\quad b:$a\quad b$,a\qquad b:$a\qquad b$。

10. 顶部符号

  • 对于单字符,可以使用\hat x:$\hat{x}$。多字符可以使用\widehat {xy}:$\widehat{xy}$。
  • 类似的还有:\check x:$\check{x}$、\breve x:$\breve{x}$、\bar x:$\bar{x}$、\overline {xyz}:$\overline{xyz}$、\vec x:$\vec{x}$、\overrightarrow {xyz}:$\overrightarrow{xyz}$、\overleftrightarrow {xyz}:$\overleftrightarrow{xyz}$、\dot x:$\dot{x}$、\ddot x:$\ddot{x}$。

二、高级部分

1. 表格

使用$$\begin{array}{列样式}...\end{array}$$这样的形式来创建表格。其中,列样式可以使用c、l、r分别表示居中、左、右对齐,还可以使用|表示一条竖线。表格中各行使用\\分隔,各列使用&分隔。使用\hline可以在本行前加入一条直线。例如:

1
2
3
4
5
6
7
8
9
$$
\begin{array}{c|lcr}
n & \text{Left} & \text{Center} &\text{Right} \\
\hline
1 & 0.24 & 1 & 125 \\
2 & -1 & 189 & -8 \\
3 & -20 & 2000 & 1+10i \\
\end{array}
$$

结果:

$$ \begin{array}{c|lcr} n & \text{Left} & \text{Center} &\text{Right} \\ \hline 1 & 0.24 & 1 & 125 \\ 2 & -1 & 189 & -8 \\ 3 & -20 & 2000 & 1+10i \\ \end{array} $$

2. 矩阵

基本用法

使用$$\begin{matrix}...\end{matrix}$$这样的形式来表示矩阵,在\begin\end之间加入矩阵中的元素即可。矩阵的行之间使用\\\\分隔,列之间使用&分隔。例如:

1
2
3
4
5
6
7
$$
\begin{matrix}
1 & x & x^2 \\\\
1 & y & y^2 \\\\
1 & z & z^2 \\\\
\end{matrix}
$$

结果:
$$
\begin{matrix}
1 & x & x^2 \\
1 & y & y^2 \\
1 & z & z^2 \\
\end{matrix}
$$

加括号

如果要对矩阵加括号,可以使用\left\right配合表示括号符号,也可以使用特殊的matrix,即替换\begin{matrix}...\end{matrix}中的matrix为pmatrixbmatrixBmatrixvmatrixVmatrix。例如:

1
2
3
4
5
6
$$
\begin{pmatrix}
1 & 2 \\\\
3 & 4 \\\\
\end{pmatrix}
$$

结果:
$$
\begin{pmatrix}
1 & 2 \\
3 & 4 \\
\end{pmatrix}
$$

  • bmatrix
    $$\begin{bmatrix}1 & 2 \\3 & 4 \\\end{bmatrix}$$

  • Bmatrix
    $$\begin{Bmatrix}1 & 2 \\3 & 4 \\\end{Bmatrix}$$

  • vmatrix
    $$\begin{vmatrix}1 & 2 \\3 & 4 \\\end{vmatrix}$$

  • Vmatrix
    $$\begin{Vmatrix}1 & 2 \\3 & 4 \\\end{Vmatrix}$$

省略元素

可以使用\cdots:$\cdots$、\ddots:$\ddots$、\vdots:$\vdots$来省略矩阵中的元素。例如:

1
2
3
4
5
6
7
8
$$
\begin{pmatrix}
1 & a_1 & a_1^2 & \cdots & a_1^n \\\\
1 & a_2 & a_2^2 & \cdots & a_2^n \\\\
\vdots & \vdots & \vdots & \ddots & \vdots \\\\
1 & a_m & a_m^2 & \cdots & a_m^n \\\\
\end{pmatrix}
$$

结果:
$$
\begin{pmatrix}
1 & a_1 & a_1^2 & \cdots & a_1^n \\
1 & a_2 & a_2^2 & \cdots & a_2^n \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
1 & a_m & a_m^2 & \cdots & a_m^n \\
\end{pmatrix}
$$

增广矩阵

增广矩阵需要使用前面的array来实现。例如:

1
2
3
4
5
6
7
8
$$
\left[
\begin{array}{cc|c}
1 & 2 & 3 \\\\
4 & 5 & 6 \\\\
\end{array}
\right]
$$

结果:
$$
\left[
\begin{array}{cc|c}
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{array}
\right]
$$

3. 对齐的公式

有时候可能需要一系列的公式中等号对齐,这需要使用形如\begin{align}...\end{align}的格式,其中使用&来指示需要对齐的位置。例如:

1
2
3
4
5
6
7
8
9
$$
\begin{align}
\sqrt{37}&=\sqrt{\frac{73^2-1}{12^2}}\\\\
&=\sqrt{\frac{73^2}{12^2}\cdot\frac{73^2-1}{73^2}}\\\\
&=\sqrt{\frac{73^2}{12^2}}\sqrt{\frac{73^2-1}{73^2}}\\\\
&=\frac{73}{12}\sqrt{1-\frac{1}{73^2}}\\\\
&\approx\frac{73}{12}\left(1-\frac{1}{2\cdot73^2}\right)
\end{align}
$$

结果:
$$
\begin{align}
\sqrt{37}&=\sqrt{\frac{73^2-1}{12^2}}\\
&=\sqrt{\frac{73^2}{12^2}\cdot\frac{73^2-1}{73^2}}\\
&=\sqrt{\frac{73^2}{12^2}}\sqrt{\frac{73^2-1}{73^2}}\\
&=\frac{73}{12}\sqrt{1-\frac{1}{73^2}}\\
&\approx\frac{73}{12}\left(1-\frac{1}{2\cdot73^2}\right)
\end{align}
$$

4. 分类表达式

定义函数的时候经常需要分情况给出表达式,可使用\begin{cases}...\end{cases}。其中,使用\\来分类,使用&指示需要对齐的位置。例如:

1
2
3
4
5
6
7
$$
f(n)=
\begin{cases}
n/2,&\text{if $n$ is even}\\\\
3n+1,&\text{if $n$ is odd}
\end{cases}
$$

结果:

$$ f(n)= \begin{cases} n/2,&\text{if $n$ is even}\\ 3n+1,&\text{if $n$ is odd} \end{cases} $$

上述公式的括号也可以移动到右侧,不过需要使用array来实现。如下:

1
2
3
4
5
6
7
8
9
$$
\left.
\begin{array}{1}
\text{if $n$ is even:}&n/2\\\\
\text{if $n$ is odd:}&3n+1
\end{array}
\right\}
=f(n)
$$

结果:

$$ f(n) = \left\{ \begin{array}{ll} n/2 & \text{if $n$ is even,} \\ 3n+1 & \text{if $n$ is odd.} \end{array} \right. $$

如果想分类之间的垂直间隔变大,可以在行末使用\\[2ex]代替\\来分隔不同的情况(3ex,4ex也可以用,1ex相当于原始距离)。例如:

1
2
3
4
5
6
7
$$
f(n)=
\begin{cases}
\frac{n}{2},&\text{if $n$ is even}\\\\[2ex]
3n+1,&\text{if $n$ is odd}
\end{cases}
$$

结果:

$$ f(n)= \begin{cases} \frac{n}{2},&\text{if $n$ is even}\\[2ex] 3n+1,&\text{if $n$ is odd} \end{cases} $$

5. 空间问题

在使用LaTeX公式时,有一些不会影响公式正确性,但却会使其看上去很糟糕的问题。

  • 不要在指数或者积分中使用\frac:在指数或者积分表达式中使用\frac会使表达式看起来不清晰,因此在专业的数学排版中很少被使用。应该使用一个水平的/来代替。
  • 使用\mid代替|作为分隔符:符号|作为分隔符时,有排版空间大小的问题,应该使用\mid代替。
  • 多重积分:对于多重积分,不要使用\int\int此类表达,应该使用\iint\iiint等特殊形式。此外,在微分前应该使用\,$来增加些许空间。

6. 连分数

书写连分数表达式时,请使用\cfrac代替\frac或者\over,例如(\cfrac):
$$x = a_0 + \cfrac{1^2}{a_1 + \cfrac{2^2}{a_2 + \cfrac{3^2}{a_3 + \cfrac{4^2}{a_4 + \cdots}}}}$$

7. 方程组

  • 使用\begin{array}...\end{array}\left\{...\right.配合,表示方程组,如:
1
2
3
4
5
6
7
8
9
$$
\left\{
\begin{array}{c} % 居中对齐的列格式
a_1x + b_1y + c_1z = d_1 \\ % 单个 \\ 即可换行
a_2x + b_2y + c_2z = d_2 \\ % 修正 d_3 为 d_2(保持编号一致)
a_3x + b_3y + c_3z = d_3 % 修正 a_ex 为 a_3x
\end{array}
\right.
$$

显示:
$$
\left{
\begin{array}{c} % 居中对齐的列格式
a_1x + b_1y + c_1z = d_1 \\ % 单个 \ 即可换行
a_2x + b_2y + c_2z = d_2 \\ % 修正 d_3 为 d_2(保持编号一致)
a_3x + b_3y + c_3z = d_3 % 修正 a_ex 为 a_3x
\end{array}
\right.
$$

  • 还可以使用\begin{cases}...\end{cases}表达上面同样的方程组,如:
1
2
3
4
5
6
7
$$
\begin{cases}
a_1x+b_1y+c_1z=d_1\\\\
a_2x+b_2y+c_2z=d_3\\\\
a_ex+b_3y+c_3z=d_3
\end{cases}
$$
  • 对齐方程组中的=号,可以使用\begin{aligned}...\end{aligned},如:
1
2
3
4
5
6
7
8
9
$$
\left\{
\begin{aligned}
a_1x+b_1y+c_1z&=d_1\\\\
a_2x+b_2y&=d_2\\\\
a_3x+b_3y+c_3z&=d_3
\end{aligned}
\right.
$$

显示:
$$
\left{
\begin{aligned}
a_1x+b_1y+c_1z&=d_1\\
a_2x+b_2y&=d_2\\
a_3x+b_3y+c_3z&=d_3
\end{aligned}
\right.
$$

  • 如果要对齐=号和项,可以使用\begin{array}{列样式}...\end{array},如:
1
2
3
4
5
6
7
8
9
$$
\left\{
\begin{array}{ll}
a_1x+b_1y+c_1z&=d_1\\\\
a_2x+b_2y&=d_2\\\\
a_3x+b_3y+c_3z&=d_3
\end{array}
\right.
$$

显示:
$$
\left{
\begin{array}{ll}
a_1x+b_1y+c_1z&=d_1\\
a_2x+b_2y&=d_2\\
a_3x+b_3y+c_3z&=d_3
\end{array}
\right.
$$

8. 附加装饰

  • \overline:$\overline{A}\quad\overline{AA}\quad\overline{AAA}$
  • \underline:$\underline{B}\quad\underline{BB}\quad\underline{BBB}$
  • \widetilde:$\widetilde{C}\quad\widetilde{CC}\quad\widetilde{CCC}$
  • \widehat:$\widehat{D}\quad\widehat{DD}\quad\widehat{DDD}$
  • \fbox:$\fbox{E}\quad\fbox{EE}\quad\fbox{EEE}$
  • \underleftarrow:$\underleftarrow{F}\quad\underleftarrow{FF}\quad\underleftarrow{FFF}$
  • \underrightarrow:$\underrightarrow{G}\quad\underrightarrow{GG}\quad\underrightarrow{GGG}$
  • \underleftrightarrow:$\underleftrightarrow{H}\quad\underleftrightarrow{HH}\quad\underleftrightarrow{HHH}$
  • \overbrace:$\overbrace{(n-2)+(n-1)+n+(n+1)}+\overbrace{(n+2)}$
  • \underbrace:$\underbrace{(n-2)+(n-1)+n+(n+1)}+\underbrace{(n+2)}$

\overbrace\underbrace可以使用上下标进行注释,如\underbrace{a\cdot a\cdots a}_{b_\text{ times}}显示为$\underbrace{a\cdot a\cdots a}{b\text{ times}}$

注释音标:\check:$\check{I}$、\acute:$\acute{J}$、\grave:$\grave{K}$。

9. 交换图表

使用\begin{CD}...\end{CD}表示交换图表,如下:

1
2
3
4
5
6
7
$$
\begin{CD}
A@>a>>B\\\\
@VbVV=@VVcV\\\\
C@>>d>D
\end{CD}
$$

显示:
$$
\begin{CD}
A@>a>>B\\
@VbVV=@VVcV\\
C@>>d>D
\end{CD}
$$

  • \@>>>表示箭头向右。
  • \@<<<<表示箭头向左。
  • \@AAA表示箭头向上。
  • \@VVV表示箭头向下。
  • \@=表示水平双线。
  • \@|<表示垂直双线。
  • \@.表示没有箭头。

例如:

1
2
3
4
5
6
7
$$
\begin{CD}
A@>>>B@>{\text{very long label}}>>C\\\\
@.@AAA@|\\\\
D@=E@<<<F
\end{CD}
$$

显示:
$$
\begin{CD}
A@>>>B@>{\text{very long label}}>>C\\
@.@AAA@|\\
D@=E@<<<F
\end{CD}
$$

也可以用此方法编写一个化学方程式,例如:

1
2
3
4
5
$$
\begin{CD}
RCOHR'SO_3Na@>{\text{Hydrolysis,$\Delta, Dil.HCl$}}>>(RCOR')+NaCl+SO_2+H_2O
\end{CD}
$$

显示:
$$
\begin{CD}
RCOHR‘SO_3Na@>{\text{Hydrolysis,$\Delta, Dil.HCl$}}>>(RCOR’)+NaCl+SO_2+H_2O
\end{CD}
$$

10. 颜色

颜色的命名是和浏览器相关的,如果浏览器没有定义相关的颜色名称,则相关文本将被渲染为黑色。以下颜色是HTML4与CSS2标准中定义的一些颜色,其应该被大多数浏览器定义了。

  • \color{black}{text}:$\color{black}{text}$
  • \color{gray}{text}:$\color{gray}{text}$
  • \color{silver}{text}:$\color{silver}{text}$
  • \color{white}{text}:$\color{white}{text}$
  • \color{maroon}{text}:$\color{maroon}{text}$
  • \color{red}{text}:$\color{red}{text}$
  • \color{yellow}{text}:$\color{yellow}{text}$
  • \color{lime}{text}:$\color{lime}{text}$
  • \color{olive}{text}:$\color{olive}{text}$
  • \color{green}{text}:$\color{green}{text}$
  • \color{teal}{text}:$\color{teal}{text}$
  • \color{aqua}{text}:$\color{aqua}{text}$
  • \color{blue}{text}:$\color{blue}{text}$
  • \color{navy}{text}:$\color{navy}{text}$
  • \color{purple}{text}:$\color{purple}{text}$
  • \color{fuchsia}{text}:$\color{fuchsia}{text}$

HTML5与CSS3定义了更多的颜色名称。此外,颜色也可以使用#rgb的形式来表示,r、g、b分别表示代表颜色值的16进制数。