如何优雅地在Markdown中输入数学公式
参考:
作者:咕噜咕噜酱
链接:原文链接
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
对于一些理科生来说,在学习数学知识的时候,在计算机上写公式是比较头疼的事情。好在Markdown支持LATEX公式输入,在一定程度上缓解了输入的麻烦。今天,我们就来介绍一下,如何在Markdown中编写公式。
一、基础部分
1. 公式标记
在Markdown中,有两种输入公式的方法:一是行内公式(inline),用一对美元符号$
包裹。二是整行公式(displayed),用一对紧挨的两个美元符号$$
包裹。
这是一个行内公式E=mc2,写法是:$E=mc^2$
。
这是一个整行公式:
∑i=0ni2=(n2+n)(2n+1)6
写法是:
$$
\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
$$
2. 希腊字母
名称 | 大写 | Tex | 小写 | Tex |
---|---|---|---|---|
alpha | A | A | α | \alpha |
beta | B | B | β | \beat |
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 |
3. 上标与下标
上标和下标分别使用^
和_
来表示。例如x_i^2
:xi2,\log_2 x
:log2x。
默认情况下,上下标符号仅仅对下一个组起作用。一个组即单个字符或者使用{}
包裹起来的内容。也就是说,如果使用10^10
会得到1010,而10^{10}
才是1010。同时,大括号还能消除二义性,如x^5^6
会显示错误,必须使用大括号来界定^
的结合性,如{x^5}^6
:x56或者x^{5^6}
:x56。注意区分x_i^2
:xi2和x_{i_2}
:xi2。
另外,如果要在左右两边都有上下标,可以用\sideset
来表示,如\sideset{^1_2}{^3_4}\bigotimes
:⨂4321。
4. 括号
- 小括号与方括号:使用原始的
()
和[]
即可。如(2+3)[4+4]
:(2+3)[4+4]。 - 大括号:由于大括号
{}
被用来分组,因此需要使用\{
和\}
表示大括号,也可以使用\lbrace
和\rbrace
来表示。如\{a*b\}
或者\lbrace a*b \rbrace
,都会显示为{a∗b}。 - 尖括号:使用
\langle
和\rangle
分别表示左尖括号和右尖括号。如\langle x \rangle
:〈x〉。 - 上取整:使用
\lceil
和\rceil
表示。如\lceil x \rceil
:⌈x⌉。 - 下取整:使用
\lfloor
和\rfloor
表示。如\lfloor x \rfloor
:⌊x⌋。
需要注意的是,原始括号并不会随着公式大小缩放。如(\frac12)
:(12)。可以使用\left( ...\right)
来自适应的调整括号。如\left( \frac12 \right)
:(12)。可以明显看出,后一组公式中的括号是经过缩放的。
5. 求和与积分
\sum
用来表示求和符号,其下标表示求和下限,上标表示上线。如\sum_1^n
:∑1n。
\int
用来表示积分符号,同样地,其上下标表示积分的上下限。如\int_1^\infty
:∫1∞。
与此类似的符号还有,\prod
:∏,\bigcup
:⋃,\bigcap
:⋂,\iint
:∬。
6. 分式与根式
分式有两种表示方法。第一种,使用\frac ab
,其中\frac
作用于气候的两个组a和b,结果为ab。如果分子或分母不是单个字符,需要使用{}
来分组。第二种,使用\over
来分隔一个组的前后两部分,如{a+1\over b+1}
:a+1b+1。
根式使用\sqrt[a]b
来表示。其中,方括号内的值用来表示开几次方,省略方括号则表示开方,如\sqrt[4]{\frac xy}
:xy4,\sqrt{x^3}
:x3。
7. 字体
- 使用
\it
显示意大利体(公式默认字体):ACDEFGHIJKLMnopqrstuvwxyz。 - 使用
\mathbb
或\Bbb
显示黑板粗体(黑板黑体),如\mathbb{CHNQRZ}
:CHNQRZ。 - 使用
\mathbf
或\bf
示黑体:ABCDEFGHIJKLMnopqrstuvwxyz。 - 使用
\mathtt
或\tt
显示打印机字体:ABCDEFGHIJKLMnopqrstuvwxyz。 - 使用
\mathrm
或\rm
显示罗马体:ABCDEFGHIJKLMnopqrstuvwxyz。 - 使用
\mathsf
或\sf
显示等线体(sans-serif体):ABCDEFGHIJKLMnopqrstuvwxyz。 - 使用
\mathcal
显示艺术字体:ABCDEFGHIJKLMnopqrstuvwxyz。 - 使用
\mathscr
或\cal
显示手写字体(花体):ABCDEFGHIJKLMNOPQRSTUVWXYZ。 - 使用
\mathfrak
显示Fraktur字体(老式德国字体):ABCDEFGHIJKLMnopqrstuvwxyz。 - 使用
\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 -
三角运算符
输入 显示 输入 显示 输入 显示 \bog ⊥ \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}
:(n+12k)。 -
使用
\pmod
表示模运算,如a\equiv b\pmod n
:a≡b(modn)。 -
使用
\ldots
与\cdots
表示省略号,二者的区别是dots的位置不同,ldots位置稍低a1,a2,…,an,cdots位置居中a1+a2+⋯+an。 -
使用
\overline
与\underline
表示连线符号,如\overline{a+b+c+d}
:a+b+c+d―,\underline{x+y+z}
:x+y+z―。 -
其他特殊字符:
\star
:⋆、\aleph_0
:ℵ0、\partial
:∂、\Im
:ℑ、\Re
:ℜ。 -
一些希腊字母具有变体形式,如
\epsilon \varepsilon
:ϵε、\phi \varphi
:ϕφ。 -
需要注意的是,一些特殊字符可以使用
\
转义为原来的含义,如\$
表示$、\_
表示下划线。
9. 空间
在书写公式的时候,a和b之间无论输入多少空格,最后都会显示为ab
。可以通过在ab间加入\,
增加些许间隙,如a\,b
:ab;\;
增加较宽的间隙,如a\;b
:ab;\quad
与\qquad
会增加更大的间隙,如a\quad b
:ab,a\qquad b
:ab。
10. 顶部符号
对于单字符,可以使用\hat x
:x^。多字符可以使用\widehat {xy}
:xy^。
类似的还有,\check x
:xˇ、\breve x
:x˘、\bar x
:x¯、\overline {xyz}
:xyz―、\vec x
:x→、\overrightarrow x
:xyz→、\overleftrightarrow {xyz}
:xyz↔、\dot x
:x˙、\ddot x
: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}
$$
结果:
nLeftCenterRight10.2411252−1189−83−2020001+10i
2. 矩阵
-
基本用法:
使用
$$\begin{matrix}...\end{matrix}$$
这样的形式来表示矩阵,在\begin
与\end
之间加入矩阵中的元素即可。矩阵的行之间使用
\\
分隔,列之间使用&
分隔。例如,$$ \begin{matrix} 1 & x & x^2 \\ 1 & y & y^2 \\ 1 & z & z^2 \\ \end{matrix} $$
结果:
1xx21yy21zz2
-
加括号:
如果要对矩阵加括号,可以像上文中提到的,使用
\left
与\right
配合表示括号符号。也可以使用特殊的matrix,即替换
\begin{matrix}...\end{matrix}
中的matrix为pmatrix
、bmatrix
、Bmatrix
、vmatrix
、Vmatrix
。例如,$$ \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ \end{pmatrix} $$
结果:
(1234)
或者,
bmatrix:\begin{bmatrix}1 & 2 \3 & 4 \end{bmatrix}\begin{bmatrix}1 & 2 \3 & 4 \\end{bmatrix}\begin{bmatrix}1 & 2 \3 & 4 \\end{bmatrix}
Bmatrix:\begin{Bmatrix}1 & 2 \3 & 4 \end{Bmatrix}\begin{Bmatrix}1 & 2 \3 & 4 \\end{Bmatrix}\begin{Bmatrix}1 & 2 \3 & 4 \\end{Bmatrix}
vmatrix:\begin{vmatrix}1 & 2 \3 & 4 \end{vmatrix}\begin{vmatrix}1 & 2 \3 & 4 \\end{vmatrix}\begin{vmatrix}1 & 2 \3 & 4 \\end{vmatrix}
Vmatrix:\begin{Vmatrix}1 & 2 \3 & 4 \end{Vmatrix}\begin{Vmatrix}1 & 2 \3 & 4 \\end{Vmatrix}\begin{Vmatrix}1 & 2 \3 & 4 \\end{Vmatrix}
-
省略元素:
可以使用
\cdots
:⋯、\ddots
:⋱、\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} $$
结果:
(1a1a12⋯a1n1a2a22⋯a2n⋮⋮⋮⋱⋮1amam2⋯amn)
-
增广矩阵
增广矩阵需要使用前面的array来实现。例如,
$$ \left[ \begin{array}{cc|c} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{array} \right] $$
结果:
[123456]
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}
$$
结果:
(1)37=732−1122(2)=732122⋅732−1732(3)=732122732−1732(4)=73121−1732(5)≈7312(1−12⋅732)
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}
$$
结果:
f(n)={n/2,if n is even3n+1,if n is odd
上述公式的括号也可以移动到右侧,不过需要使用array来实现。如下,
$$
\left.
\begin{array}{1}
\text{if $n$ is even:}&n/2\\
\text{if $n$ is odd:}&3n+1
\end{array}
\right\}
=f(n)
$$
结果:
if n is even:n/2if n is odd:3n+1}=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}
$$
结果:
f(n)={n2,if n is even3n+1,if n is odd
5. 空间问题
在使用LATEX公式时,有一些不会影响公式正确性,但却会使其看上去很糟糕的问题。
-
不要在指数或者积分中使用
\frac
在指数或者积分表达式中使用
\frac
会使表达式看起来不清晰,因此在专业的数学排版中很少被使用。应该使用一个水平的/
来代替,效果如下:BadBettereiπ2eiπ2eiπ/2∫−π2π2sinxdx∫−π/2π/2sinxdx
-
使用
\mid
代替|
作为分隔符符号
|
作为分隔符时,有排版空间大小的问题,应该使用\mid
代替,效果如下:BadBetter{x|x2∈Z}{x∣x2∈Z}
-
多重积分
对于多重积分,不要使用
\int\int
此类表达,应该使用\iint
、\iiint
等特殊形式,效果如下:BadBetter∫∫Sf(x)dydx∬Sf(x)dydx∫∫∫Vf(x)dzdydx∭Vf(x)dzdydx
此外,在微分前应该使用
\,
来增加些许空间,否则TEX会将微分紧凑地排列在一起,如下:BadBetter∭Vf(x)dzdydx∭Vf(x)dzdydz
6. 连分数
书写连分数表达式时,请使用\cfrac
代替\frac
或者\over
,两者效果对比如下:
(\cfrac)x=a0+12a1+22a2+32a3+42a4+⋯
(\frac)x=a0+12a1+22a2+32a3+42a4+⋯
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.
$$
显示:
{a1x+b1y+c1z=d1a2x+b2y+c2z=d3aex+b3y+c3z=d3
还可以使用\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.
$$
显示:
{a1x+b1y+c1z=d1a2x+b2y=d2a3x+b3y+c3z=d3
如果要对齐=
号和项,可以使用\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.
$$
{a1x+b1y+c1z=d1a2x+b2y=d2a3x+b3y+c3z=d3
8. 附加装饰
\overline
:A―AA―AAA―
\underline
:B―BB―BBB―
\widetilde
:C~CC~CCC~
\widehat
:D^DD^DDD^
\fbox
:EEEEEE
\underleftarrow
:F←FF←FFF←
\underrightarrow
:G→GG→GGG→
\underleftrightarrow
:H↔HH↔HHH↔
\overbrace
:(n−2)+(n1)+n+(n+1)⏞+(n+2)⏞
\underbrace
:(n−2)+(n1)+n+(n+1)⏟+(n+2)⏟
\overbrace
和\underbrace
可以使用上下标进行注释,如:\underbrace{a\cdot a\cdots a}_{b_\text{ times}}
显示为a⋅a⋯a⏟b times
注释音标:\check
:Iˇ、\acute
:J´、\grave
:K`。
9. 交换图表
使用\begin{CD}...\end{CD}
表示交换图表,如下:
$$
\begin{CD}
A@>a>>B\\
@VbVV=@VVcV\\
C@>>d>D
\end{CD}
$$
显示:
A→aBb↓=↓cC→dD
\@>>>
表示箭头向右。
\@<<<
表示箭头向左。
\@AAA
表示箭头向上。
\@VVV
表示箭头向下。
\@=
表示水平双线。
\@|
表示垂直双线。
\@.
表示没有箭头。
例如:
\begin{CD}
A@>>>B@>{\text{very long label}}>>C\\
@.@AAA@|\\
D@=E@<<<F
\end{CD}
显示:
A→B→very long labelC↑∥D=E←F
也可以用此方法编写一个化学方程式,例如:
$$
\begin{CD}
RCOHR'SO_3Na@>{\text{Hydrolysis,$\Delta, Dil.HCl$}}>>(RCOR')+NaCl+SO_2+H_2O
\end{CD}
$$
显示:
RCOHR′SO3Na→Hydrolysis,Δ,Dil.HCl(RCOR′)+NaCl+SO2+H2O
10. 颜色
颜色的命名是和浏览器相关的,如果浏览器没有定义相关的颜色名称,则相关文本将被渲染为黑色。以下颜色是HTML4与CSS2标准中定义的一些颜色,其应该被大多数浏览器定义了。
\color{black}{text}text\color{gray}{text}text\color{silver}{text}text\color{white}{text}text\color{maroon}{text}text\color{red}{text}text\color{yellow}{text}text\color{lime}{text}text\color{olive}{text}text\color{green}{text}text\color{teal}{text}text\color{aqua}{text}text\color{blue}{text}text\color{navy}{text}text\color{purple}{text}text\color{fuchsia}{text}text
HTML5与CSS3定义了更多的颜色名称。
此外,颜色也可以使用#rgb
的形式来表示,r、g、b分别表示代表颜色值的16进制数,如:
#000text#005text#00Atext#00Ftext#500text#505text#50Atext#50Ftext#A00text#A05text#A0Atext#A0Ftext#F00text#F05text#F0Atext#F0Ftext#080text#085text#08Atext#08Ftext#580text#585text#58Atext#58Ftext#A80text#A85text#A8Atext#A8Ftext#F80text#F85text#F8Atext#F8Ftext#0F0text#0F5text#0FAtext#0FFtext#5F0text#5F5text#5FAtext#5FFtext#AF0text#AF5text#AFAtext#AFFtext#FF0text#FF5text#FFAtext#FFFtext
11. 等式高亮
使用\bbox
可以高亮一个等式,例如:
$$
\bbox[yellow]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
$$
显示:
ex=limn→∞(1+xn)n(1)
可以在背景色后面加上数值,以增加公式与背景色四周的间距,例如:
\bbox[yellow,10px]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
显示:
ex=limn→∞(1+xn)n(1)
也可以设置边框,例如:
$$
\bbox[5px,border:2px solid red]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
$$
显示:
ex=limn→∞(1+xn)n(1)
当然,你还可以同时设置背景色和边框,例如:
$$
\bbox[10px,yellow,border:2px dashed red]{e^x=\lim_{n\to\infty}\left(1+\frac{x}{n}\right)^n\qquad(1)}
$$
显示: