如何优雅地在Markdown中输入数学公式
对于一些理科生来说,在学习数学知识的时候,在计算机上写公式是比较头疼的事情。好在Markdown支持\(\LaTeX\)公式输入,在一定程度上缓解了输入的麻烦。今天,我们就来介绍一下,如何在Markdown中编写公式。
一、基础部分
1. 公式标记
在Markdown中,有两种输入公式的方法:一是行内公式(inline),用一对美元符号$
包裹。二是整行公式(displayed),用一对紧挨的两个美元符号$$
包裹。
这是一个行内公式\(E=mc^2\),写法是:$E=mc^2$
。
这是一个整行公式:
写法是:
$$
\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
$$
2. 希腊字母
名称 | 大写 | Tex | 小写 | Tex |
---|---|---|---|---|
alpha | \(A\) | A | \(\alpha\) | \alpha |
beta | \(B\) | B | \(\beta\) | \beat |
gamma | \(\Gamma\) | \Gamma | \(\gamma\) | \gamma |
delta | \(\Delta\) | \Delta | \(\delta\) | \delta |
epsilon | \(E\) | E | \(\epsilon\) | \epsilon |
zeta | \(Z\) | Z | \(\zeta\) | \zeta |
eta | \(H\) | H | \(\eta\) | \eta |
theta | \(\Theta\) | \Theta | \(\theta\) | \theta |
iota | \(I\) | I | \(\iota\) | \iota |
kappa | \(K\) | K | \(\kappa\) | \kappa |
lambda | \(\Lambda\) | \Lambda | \(\lambda\) | \lambda |
mu | \(M\) | M | \(\mu\) | \mu |
nu | \(N\) | N | \(\nu\) | \nu |
xi | \(\Xi\) | \Xi | \(\xi\) | \xi |
omicron | \(O\) | O | \(\omicron\) | \omicron |
pi | \(\Pi\) | \Pi | \(\pi\) | \pi |
rho | \(P\) | P | \(\rho\) | \rho |
sigma | \(\Sigma\) | \Sigma | \(\sigma\) | \sigma |
tau | \(T\) | T | \(\tau\) | \tau |
upsilon | \(\Upsilon\) | \Upsilon | \(\upsilon\) | \upsilon |
phi | \(\Phi\) | \Phi | \(\phi\) | \phi |
chi | \(X\) | X | \(\chi\) | \chi |
psi | \(\Psi\) | \Psi | \(\psi\) | \psi |
omega | \(\Omega\) | \Omega | \(\omega\) | \omega |
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)
:\((\frac12)\)。可以使用\left( ...\right)
来自适应的调整括号。如\left( \frac12 \right)
:\(\left( \frac12 \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 ab\)。如果分子或分母不是单个字符,需要使用{}
来分组。第二种,使用\over
来分隔一个组的前后两部分,如{a+1\over b+1}
:\({a+1\over b+1}\)。
根式使用\sqrt[a]b
来表示。其中,方括号内的值用来表示开几次方,省略方括号则表示开方,如\sqrt[4]{\frac xy}
:\(\sqrt[4]{\frac xy}\),\sqrt{x^3}
:\(\sqrt{x^3}\)。
7. 字体
- 使用
\it
显示意大利体(公式默认字体):\(\it{ACDEFGHIJKLMnopqrstuvwxyz}\)。 - 使用
\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 \(\pm\) \mp \(\mp\) \times \(\times\) \div \(\div\) \mid \(\mid\) \nmid \(\nmid\) \circ \(\circ\) \bullet \(\bullet\) \cdot \(\cdot\) \ast \(\ast\) \odot \(\odot\) \bigodot \(\bigodot\) \otimes \(\otimes\) \bigotimes \(\bigotimes\) \oplus \(\oplus\) \bigoplus \(\bigoplus\) \lt \(\lt\) \gt \(\gt\) \leq \(\leq\) \geq \(\ge\) \neq \(\neq\) \approx \(\approx\) \equiv \(\equiv\) \sim \(\sim\) \simeq \(\simeq\) \cong \(\cong\) \prec \(\prec\) \lhd \(\lhd\) \sum \(\sum\) \prod \(\prod\) \coprod \(\coprod\) -
集合运算符:
输入 显示 输入 显示 输入 显示 输入 显示 \emptyset \(\emptyset\) \varnothing \(\varnothing\) \in \(\in\) \notin \(\notin\) \subset \(\subset\) \supset \(\supset\) \cup \(\cup\) \cap \(\cap\) \subseteq \(\subseteq\) \supseteq \(\supseteq\) \subsetneq \(\subsetneq\) \supsetneq \(\supsetneq\) \bigcup \(\bigcup\) \bigcap \(\bigcap\) \bigvee \(\bigvee\) \bigwedge \(\bigwedge\) \uplus \(\uplus\) \biguplus \(\biguplus\) \sqcup \(\sqcup\) \bigsqcup \(\bigsqcup\) -
对数运算符
输入 显示 输入 显示 输入 显示 \log \(\log\) \lg \(\lg\) \ln \(\ln\) -
三角运算符
输入 显示 输入 显示 输入 显示 \bog \(\bot\) \angle \(\angle\) 30^\circ \(30^\circ\) \sin \(sin\) \cos \(\cos\) \tan \(\tan\) \cot \(\cot\) \sec \(\sec\) \csc \(\csc\) -
微积分运算符
输入 显示 输入 显示 输入 显示 \prime \(\prime\) \int \(\int\) \iint \(\iint\) \iiint \(\iiint\) \iiiint \(\iiiint\) \oint \(\oint\) \lim \(\lim\) \infty \(\infty\) \nabla \(\nabla\) -
逻辑运算符
输入 显示 输入 显示 输入 显示 输入 显示 \because \(\because\) \therefore \(\therefore\) \forall \(\forall\) \exists \(\exists\) \not= \(\not=\) \lnot \(\lnot\) \vdash \(\vdash\) \vDash \(\vDash\) \land \(\land\) \lor \(\lor\) \top \(\top\) \bot \(\bot\) -
箭头符号
输入 显示 输入 显示 输入 显示 输入 显示 \uparrow \(\uparrow\) \downarrow \(\downarrow\) \rightarrow(\to) \(\rightarrow\) \leftarrow \(\leftarrow\) \Uparrow \(\Uparrow\) \Downarrow \(\Downarrow\) \Rightarrow \(\Rightarrow\) \Leftarrow \(\Leftarrow\) \longrightarrow \(\longrightarrow\) \longleftarrow \(\longleftarrow\) \Longrightarrow \(\Longrightarrow\) \mapsto \(\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\)。 -
一些希腊字母具有变体形式,如
\epsilon \varepsilon
:\(\epsilon \varepsilon\)、\phi \varphi
:\(\phi \varphi\)。 -
需要注意的是,一些特殊字符可以使用
\
转义为原来的含义,如\$
表示$、\_
表示下划线。
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 x
:\(\overrightarrow {xyz}\)、\overleftrightarrow {xyz}
:\(\overleftrightarrow {xyz}\)、\dot x
:\(\dot x\)、\ddot x
:\(\ddot x\)。
二、高级部分
1. 表格
使用$$\begin{array}{列样式}...\end{array}$$
这样的形式来创建表格。
其中,列样式可以使用c、l、r分别表示居中、左、右对齐,还可以使用|
表示一条竖线。
表格中各行使用\\
分隔,各列使用&
分隔。
使用\hline
可以在本行前加入一条直线。例如,
$$
\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
之间加入矩阵中的元素即可。矩阵的行之间使用
\\
分隔,列之间使用&
分隔。例如,$$ \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为pmatrix
、bmatrix
、Bmatrix
、vmatrix
、Vmatrix
。例如,$$ \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\)来省略矩阵中的元素。例如,$$ \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来实现。例如,
$$ \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}
的格式,其中使用&
来指示需要对齐的位置。例如,
$$
\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}
。其中,使用\
来分类,使用&
指示需要对齐的位置。例如,
$$
f(n)=
\begin{cases}
n/2,&\text{if $n$ is even}\\
3n+1,&\text{if $n$ is odd}
\end{cases}
$$
结果:
上述公式的括号也可以移动到右侧,不过需要使用array来实现。如下,
$$
\left.
\begin{array}{1}
\text{if $n$ is even:}&n/2\\
\text{if $n$ is odd:}&3n+1
\end{array}
\right\}
=f(n)
$$
结果:
如果想分类之间的垂直间隔变大,可以在行末使用\\[2ex]
代替\\
来分隔不同的情况(3ex,4ex也可以用,1ex相当于原始距离)。例如,
$$
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
会使表达式看起来不清晰,因此在专业的数学排版中很少被使用。应该使用一个水平的/
来代替,效果如下:\[\begin{array}{c|c} \mathrm{Bad}&\mathrm{Better}\\ \hline\\ e^{i\frac{\pi}2} \quad e^{\frac{i\pi}2}&e^{i\pi/2}\\ \int^\frac\pi2_{-\frac\pi2}\sin x \,dx&\int^{\pi/2}_{-\pi/2}\sin x\,dx \end{array} \] -
使用
\mid
代替|
作为分隔符符号
|
作为分隔符时,有排版空间大小的问题,应该使用\mid
代替,效果如下:\[\begin{array}{c|c} \mathrm{Bad}&\mathrm{Better}\\ \hline\\ \{x|x^2\in\Bbb Z\}&\{x\mid x^2\in\Bbb Z\} \end{array} \] -
多重积分
对于多重积分,不要使用
\int\int
此类表达,应该使用\iint
、\iiint
等特殊形式,效果如下:\[\begin{array}{c|c} \mathrm{Bad}&\mathrm{Better}\\ \hline\\ \int\int_S f(x)\,dy\,dx&\iint_S f(x)\,dy\,dx\\ \int\int\int_V f(x)\,dz\,dy\,dx&\iiint_V f(x)\,dz\,dy\,dx \end{array} \]此外,在微分前应该使用
\,
来增加些许空间,否则\(\TeX\)会将微分紧凑地排列在一起,如下:\[\begin{array}{c|c} \mathrm{Bad}&\mathrm{Better}\\ \hline\\ \iiint_V f(x)dz dy dx&\iiint_V f(x)\,dz\,dy\,dz \end{array} \]
6. 连分数
书写连分数表达式时,请使用\cfrac
代替\frac
或者\over
,两者效果对比如下:
7. 方程组
使用\begin{array}...\end{array}
与\left\{...\right.
配合,表示方程组,如:
$$
\left\{
\begin{array}{c}
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{array}
\right.
$$
显示:
还可以使用\begin{cases}...\end{cases}
表达上面同样的方程组,如:
$$
\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}
,如:
$$
\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}
,如:
$$
\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}\;\overline{AA}\;\overline{AAA}\)
\underline
:\(\underline{B}\;\underline{BB}\;\underline{BBB}\)
\widetilde
:\(\widetilde{C}\;\widetilde{CC}\;\widetilde{CCC}\)
\widehat
:\(\widehat{D}\;\widehat{DD}\;\widehat{DDD}\)
\fbox
:\(\fbox{E}\;\fbox{EE}\;\fbox{EEE}\)
\underleftarrow
:\(\underleftarrow{F}\;\underleftarrow{FF}\;\underleftarrow{FFF}\)
\underrightarrow
:\(\underrightarrow{G}\;\underrightarrow{GG}\;\underrightarrow{GGG}\)
\underleftrightarrow
:\(\underleftrightarrow{H}\;\underleftrightarrow{HH}\;\underleftrightarrow{HHH}\)
\overbrace
:\(\overbrace{(n-2)+\overbrace{(n_1)+n+(n+1)}+(n+2)}\)
\underbrace
:\(\underbrace{(n-2)+\underbrace{(n_1)+n+(n+1)}+(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}
表示交换图表,如下:
$$
\begin{CD}
A@>a>>B\\
@VbVV=@VVcV\\
C@>>d>D
\end{CD}
$$
显示:
\@>>>
表示箭头向右。
\@<<<
表示箭头向左。
\@AAA
表示箭头向上。
\@VVV
表示箭头向下。
\@=
表示水平双线。
\@|
表示垂直双线。
\@.
表示没有箭头。
例如:
\begin{CD}
A@>>>B@>{\text{very long label}}>>C\\
@.@AAA@|\\
D@=E@<<<F
\end{CD}
显示:
也可以用此方法编写一个化学方程式,例如:
$$
\begin{CD}
RCOHR'SO_3Na@>{\text{Hydrolysis,$\Delta, Dil.HCl$}}>>(RCOR')+NaCl+SO_2+H_2O
\end{CD}
$$
显示:
10. 颜色
颜色的命名是和浏览器相关的,如果浏览器没有定义相关的颜色名称,则相关文本将被渲染为黑色。以下颜色是HTML4与CSS2标准中定义的一些颜色,其应该被大多数浏览器定义了。
HTML5与CSS3定义了更多的颜色名称。
此外,颜色也可以使用#rgb
的形式来表示,r、g、b分别表示代表颜色值的16进制数,如:
11. 等式高亮
使用\bbox
可以高亮一个等式,例如:
$$
\bbox[yellow]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
$$
显示:
可以在背景色后面加上数值,以增加公式与背景色四周的间距,例如:
\bbox[yellow,10px]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
显示:
也可以设置边框,例如:
$$
\bbox[5px,border:2px solid red]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
$$
显示:
当然,你还可以同时设置背景色和边框,例如:
$$
\bbox[10px,yellow,border:2px dashed red]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
$$
显示: