Markdown 从入门到精通(高级用法)
四、Markdown的高级用法
4.1 个人看法
此处只简要提一下,如果想要了解更多详细的高级用法:菜鸟教程Markdown高级用法、Cmd Markdown 简明语法手册
4.2 制作待办事项
我们可以使用Markdown来制作一个待办事项,格式为、-[] 表示未完成;-[x]表示已完成
代码:
- [ ] 支持以 PDF 格式导出文稿
- [ ] 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
- [x] 新增 Todo 列表功能
- [x] 修复 LaTex 公式渲染问题
- [x] 新增 LaTex 公式编号功能
效果:
4.3 书写公式
Markdown支持书写公式,例如书写一个质能守恒公式。
$$表示整行公式
代码:
$$
E=mc^2
$$
效果:
4.3.1 希腊字母
输入 \小写希腊字母英文全称 和 \首字母大写希腊字母英文全称 来分别输入小写和大写希腊字母。对于大写希腊字母与现有字母相同的,直接输入大写字母即可。
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|---|---|
| \alpha | \(\alpha\) | A | \(A\) | \beta | \(\beta\) | B | \(B\) |
| \gamma | \(\gamma\) | \Gamma | \(\Gamma\) | \delta | \(\delta\) | \Delta | \(\Delta\) |
| \epsilon | \(\epsilon\) | E | \(E\) | \zeta | \(\zeta\) | Z | \(Z\) |
| \eta | \(\eta\) | H | \(H\) | \theta | \(\theta\) | \Theta | \(\Theta\) |
| \iota | \(\iota\) | I | \(I\) | \kappa | \(\kappa\) | K | \(K\) |
| \lambda | \(\lambda\) | \Lambda | \(\Lambda\) | \mu | \(\mu\) | M | \(M\) |
| \nu | \(\nu\) | N | \(N\) | \xi | \(\xi\) | \Xi | \(\Xi\) |
| o | \(o\) | O | \(O\) | \pi | \(\pi\) | \Pi | \(\Pi\) |
| \rho | \(\rho\) | P | \(P\) | \sigma | \(\sigma\) | \Sigma | \(\Sigma\) |
| \tau | \(\tau\) | T | \(T\) | \upsilon | \(\upsilon\) | \Upsilon | \(\Upsilon\) |
| \phi | \(\phi\) | \Phi | \(\Phi\) | \chi | \(\chi\) | X | \(X\) |
| \psi | \(\psi\) | \Psi | \(\Psi\) | \omega | \(\omega\) | \Omega | \(\Omega\) |
| \partial | \(\partial\) | \nabla | \(\nabla\) |
部分字母有变量专用形式,以 \var- 开头。
| 小写形式 | 大写形式 | 变量形式 | 显示 |
|---|---|---|---|
| \epsilon | \Epsilon | \varepsilon | \(\epsilon\mid E \mid\varepsilon\) |
| \theta | \Theta | \vartheta | \(\theta\mid\Theta\mid \vartheta\) |
| \rho | \Rho | \varrho | \(\rho\mid P\mid\varrho\) |
| \sigma | \Sigma | \varsigma | \(\sigma\mid\Sigma\mid\varsigma\) |
| \phi | \Phi | \varphi | \(\phi\mid\Phi\mid\varphi\) |
4.3.2 上下标
4.3.3 括号和分隔符
()、[] 和 | 表示符号本身,使用 \{\} 来表示 {} 。当要显示大号的括号或分隔符时,要用 \left 和 \right 命令。
一些特殊的括号:
| 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|
| \langle | \(\langle\) | \rangle | \(\rangle\) |
| \lceil | \(\lceil\) | \rceil | \(\rceil\) |
| \lfloor | \(\lfloor\) | \rfloor | \(\rfloor\) |
| \lbrace | \(\lbrace\) | \rbrace | \(\rbrace\) |
| \lvert | \(\lvert\) | \rvert | \(\rvert\) |
| \lVert | \(\lVert\) | \rVert | \(\rVert\) |
有时,我们需要在行内使用两个竖杠表示向量间的某种空间距离,可以这样写:
\lVert \boldsymbol{X}_i - \boldsymbol{S}_j \rVert^2 → \(\lVert \boldsymbol{X}_i - \boldsymbol{S}_j \rVert^2\)
空格
有四种宽度的空格可以使用: \,、\;、\quad 和 \qquad,灵活使用 \text{n个空格} 也可以在任意位置实现空格。
同时存在一种负空格 \! 用来减小字符间距,一般在物理单位中使用。
重复使用 \! 命令能够实现不同元素的叠加渲染,如∧◯∧◯ 和 }!!!!!\div}!!!!!\div
- 例子:
\begin{array}{c|c}
\text{Spaces} & \text{Negative Space in Units} \\
\hline \\
\overbrace{a \! b}^{\text{\!}} \mid \underbrace{ab}_{\rm{default}} \mid \overbrace{a \, b}^{\text{\,}} \mid \underbrace{a \; b}_{\text{\;}} \mid \overbrace{a \quad b}^{\text{\quad}} \mid \underbrace{a \qquad b}_{\text{\qquad}} & \mathrm{N}\!\cdot\!\mathrm{m} \mid \mathrm{s}\!\cdot\!\mathrm{A} \mid \mathrm{kg}\!\cdot\!\mathrm{m}^2 \\
\end{array}
- 显示:
一些常见的公式单位可表达如下:
- 例子:
$$ \mu_0=4\pi\times10^{-7} \ \left.\mathrm{\mathrm{T}\!\cdot\!\mathrm{m}}\middle/\mathrm{A}\right. $$
$$ 180^\circ=\pi \ \mathrm{rad} $$
$$ \mathrm{N_A} = 6.022\times10^{23} \ \mathrm{mol}^{-1} $$
- 显示:
4.3.4 分数
通常使用 \frac {分子} {分母} 来生成一个分数,分数可多层嵌套。 若分数只有一层,也可使用 分子 \over 分母 命令。 例内 \quad \mid \, 等均为空格或分隔符号,为方便公式格式对比而添加,请注意辨别。
- 例子:
$$ \frac{a-1}{b-1} \quad or \quad {a+1 \over b+1} $$
-
显示:
\(\frac{a-1}{b-1} \quad or \quad {a+1 \over b+1}\)
当分式 仅有两个字符时 可直接输入 \frac ab 来快速生成一个 。
- 例子:
$$ \frac 12,\frac 1a,\frac a2 \quad \mid \quad \text{2 letters only:} \quad \frac 12a \,, k\frac q{r^2} $$
-
显示:
\(\frac 12,\frac 1a,\frac a2 \quad \mid \quad \text{2 letters only:} \quad \frac 12a \,, k\frac q{r^2}\)
4.3.5 开方
使用 \sqrt [根指数,省略时为2] {被开方数} 命令输入开方。 本例内 \quad 均为空格符号,为方便公式格式对比而添加,请注意辨别。。
- 例子:
$$ \sqrt{2} \quad or \quad \sqrt[n]{3} $$
-
显示:
\(\sqrt{2} \quad or \quad \sqrt[n]{3}\)
4.3.6 省略号
数学公式中常见的省略号有两种,\ldots 表示与 文本底线 对齐的省略号,\cdots 表示与 文本中线 对齐的省略号。
- 例子:
$$ f(x_1,x_2,\underbrace{\ldots}_{\rm ldots} ,x_n) = x_1^2 + x_2^2 + \underbrace{\cdots}_{\rm cdots} + x_n^2 $$
- 显示:
4.3.7 向量
使用 \vec{向量} 来自动产生一个向量。也可以使用 \overrightarrow 等命令自定义字母上方的符号。 例内 \quad \mid \, 等均为空格或分隔符号,为方便公式格式对比而添加,请注意辨别。
- 例子:
$$ \vec{a} \cdot \vec{b}=0 $$
-
显示:
\(\vec{a} \cdot \vec{b}=0\)
-
例子:
$$ xy \text{ with arrows:} \quad \overleftarrow{xy} \; \mid \; \overleftrightarrow{xy} \; \mid \; \overrightarrow{xy} $$
-
显示:
\(xy \text{ with arrows:} \quad \overleftarrow{xy} \; \mid \; \overleftrightarrow{xy} \; \mid \; \overrightarrow{xy}\)
4.3.8 积分
使用 \int_积分下限^积分上限 {被积表达式} 来输入一个积分。
例子:
$$ \int_0^1 {x^2} \,{\rm d}x $$
显示:
\(\int_0^1 {x^2} \,{\rm d}x\)
本例中 \, 和 {\rm d} 部分可省略,但加入能使式子更美观,
4.3.9 多行公式
4.3.10 大括号与行标
若想让文字在左侧对齐显示,则有如下方式:
- 例子:
$$
\left.
\begin{array}{l}
\text{if $n$ is even:} & n/2 \\
\text{if $n$ is odd:} & 3n+1 \\
\end{array}
\right\}
=f(n)
$$
- 显示:
在 \left 和 \right 之后加上要使用的括号来创建自动匹配高度的圆括号 ( ),方括号 [ ] 和花括号 \{ \}。
在每个公式末尾前使用 \tag {行标} 来实现行标。
- 例子:
$$
f\left(
\left[
\frac{
1+\left\{x,y\right\}
}{
\left(
\frac xy + \frac yx
\right)
(u+1)
}+a
\right]^{3/2}
\right)
\tag {行标}
$$
- 显示:
如果你需要在不同的行显示对应括号,可以在每一行对应处使用 \left. 或 \right. 来放一个“不存在的括号”。
- 例子:
$$
\begin{align*}
a=&\left(1+2+3+ \cdots \right. \\
&\cdots+\left. \infty-2+\infty-1+\infty\right)
\end{align*}
$$
- 显示:
如果你需要将大括号里面显示的分隔符也变大,可以使用 \middle 命令,此处分别使用单竖线 | 和双竖线 \\| 。
- 例子:
$$
\left\langle
q \; \middle|
\frac{\frac xy}{\frac uv}
\middle\| p
\right\rangle
$$
- 显示:
使条件表达式适配行高
在一些情况下,条件表达式中某些行的行高为非标准高度,此时使用 \\[2ex] 语句代替该行末尾的 \\ 来让编辑器适配。
- 例子:
不适配:
$$
f(n) =
\begin{cases}
\frac{n}{2}, & \text{if $n$ is even} \\
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}
$$
- 显示:
不适配:
适配:
一个 [ex] 指一个 "X-Height",即 x 字母高度。可以根据情况指定多个 [ex],如 [3ex]、[4ex] 等。
其实可以在任意换行处使用 \\[2ex] 语句,只要你觉得合适。
4.3.11 矩阵
无框矩阵
在开头使用 \begin{matrix},在结尾使用 \end{matrix},在中间插入矩阵元素,每个元素之间插入 & ,并在每行结尾处使用 \\ 。
使用矩阵时必须声明 $ 或 $$ 符号。
- 例子:
$$
\begin{matrix}
1 & x & x^2 \\
1 & y & y^2 \\
1 & z & z^2 \\
\end{matrix}
$$
- 显示:
边框矩阵
在开头将 matrix 替换为 pmatrix bmatrix Bmatrix vmatrix Vmatrix 。
- 例子:
$ \begin{matrix} 1 & 2 \\ 3 & 4 \\ \end{matrix} $
$ \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ \end{pmatrix} $
$ \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} $
$ \begin{Bmatrix} 1 & 2 \\ 3 & 4 \\ \end{Bmatrix} $
$ \begin{vmatrix} 1 & 2 \\ 3 & 4 \\ \end{vmatrix} $
$ \begin{Vmatrix} 1 & 2 \\ 3 & 4 \\ \end{Vmatrix} $
- 显示:
matrix:
pmatrix:
bmatrix:
Bmatrix:
vmatrix:
Vmatrix:
带分割符号的矩阵
- 例子:
$$
\left[
\begin{array}{cc|c}
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{array}
\right]
$$
- 显示:
其中 cc|c 代表在一个三列矩阵中的第二和第三列之间插入分割线。
行中矩阵
若想在一行内显示矩阵,可使用 \bigl(\begin{smallmatrix} 表达式 \end{smallmatrix}\bigr)
- 例子:
这是一个行中矩阵的示例 $\bigl(\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}\bigr)$
- 显示:
这是一个行中矩阵的示例 \(\bigl(\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}\bigr)\)
4.3.12 极限运算
使用 \lim_{变量 \to 表达式} 表达式 来输入一个极限。如有需求,可以更改 \to 符号至任意符号。
例子:
$$ \lim_{n \to \infty} \frac{1}{n(n+1)} \quad and \quad \lim_{x\leftarrow{示例}} \frac{1}{n(n+1)} $$
显示:
4.3.13 累加、累乘运算
使用 \sum_{下标表达式}^{上标表达式} {累加表达式} 来输入一个累加。与之类似,使用 \prod \bigcup \bigcap 来分别输入累乘、并集和交集。
此类符号在行内显示时上下标表达式将会移至右上角和右下角,如 \sum_{i=1}^n \frac{1}{i^2} 显示为 ;
或在行内可使用 \sum\limits_{下标表达式}^{上标表达式} {累加表达式} 使上下标仍在正上正下方。如 \sum\limits_{i=1}^n \frac{1}{i^2} 显示为 。
本例内 \quad 均为空格符号,为方便公式格式对比而添加,请注意辨别。
- 例子:
$$ \sum_{i=1}^n \frac{1}{i^2} \quad and \quad \prod_{i=1}^n \frac{1}{i^2} \quad and \quad \bigcup_{i=1}^{2} \Bbb{R} $$
- 显示:
4.3.14 关系运算符
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|---|---|
| \pm | \(\pm\) | \times | \(\times\) | \mid | \(\mid\) | \div | \(\div\) |
| \nmid | \(\nmid\) | \circ | \(\circ\) | \ast | \(\ast\) | \cdot | \(\cdot\) |
| \odot | \(\odot\) | \otimes | \(\otimes\) | \oplus | \(\oplus\) | \leq | \(\leq\) |
| \geq | \(\geq\) | \neq | \(\neq\) | \approx | \(\approx\) | \backslash | \(\backslash\) |
4.3.15 集合运算符
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \emptyset | \(\emptyset\) | \in | \(\in\) | \notin | \(\notin\) |
| \subset | \(\subset\) | \supset | \(\supset\) | \subseteq | \(\subseteq\) |
| \supseteq | \(\supseteq\) | \cap | \(\cap\) | \cup | \(\cup\) |
| \vee | \(\vee\) | \wedge | \(\wedge\) | \uplus | \(\uplus\) |
| \top | \(\top\) | \bot | \(\bot\) | \complement | \(\complement\) |
4.3.16 对数运算符
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \log | \(\log\) | \lg | \(\lg\) | \ln | \(\ln\) |
4.3.17 三角运算符
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \backsim | \(\backsim\) | \cong | \(\cong\) | \angle A | \(\angle A\) |
| \sin | \(\sin\) | \cos | \(\cos\) | \tan | \(\tan\) |
| \csc | \(\csc\) | \sec | \(\sec\) | \cot | \(\cot\) |
4.3.18 微积分运算符
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \int | \(\int\) | \iint | \(\iint\) | \iiint | \(\iiint\) |
| \partial | \(\partial\) | \oint | \(\oint\) | \prime | \(\prime\) |
| \lim | \(\lim\) | \infty | \(\infty\) | \nabla | \(\nabla\) |
4.3.19 逻辑运算符
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \because | \(\because\) | \therefore | \(\therefore\) | \neg | \(\neg\) |
| \forall | \(\forall\) | \exists | \(\exists\) | \not\subset | \(\not\subset\) |
| \not< | \(\not<\) | \not> | \(\not>\) | \not= | \(\not=\) |
| \vdash | \(\vdash\) |
4.3.20 戴帽符号
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \hat | \(\hat{xy}\) | \widehat | \(\widehat{xyz}\) | \bar | \(\bar{y}\) |
| \tilde | \(\tilde{xy}\) | \widetilde | \(\widetilde{xyz}\) | \acute | \(\acute{y}\) |
| \breve | \(\breve{y}\) | \check | \(\check{y}\) | \grave | \(\grave{y}\) |
| \dot | \(\dot{x}\) | \ddot | \(\ddot{x}\) | \dddot | \(\dddot{x}\) |
若需要在特定文字顶部\底部放置内容,可使用 \overset{顶部内容}{正常内容} 和 \underset{底部内容}{正常内容} 命令。 例内 \qquad \quad \mid \; \, 等均为空格或分隔符号,为方便公式格式对比而添加,请注意辨别。
- 例子:
$$ \verb+\overset{above}{level}+ \qquad \overset{xx}{ABC} \;\; \mid \quad \overset{x^2}{\longmapsto}\ \, \mid \quad \overset{\bullet\circ\circ\bullet}{T}
$$
- 显示:
- 例子:
$$ \verb+\underset{below}{level}+ \qquad \underset{xx}{ABC} \;\; \mid \quad \underset{x^2}{\longmapsto}\ \, \mid \quad \underset{\bullet\circ\circ\bullet}{T}
$$
- 显示:
此命令可叠加嵌套使用,生成类似化学反应式的多重条件符号, 如 \overset{H_2}{\underset{1300℃}{\Longleftrightarrow}}:
和 \overset{Surface/bulk}{\underset{diffusion}{\longleftrightarrow}}:
在书写化学方程式时可声明 \require{AMDcd} 语句,使用 MathJax 内置的交换图表功能,具体例子可参见下文。
4.3.21 连线符号
其它可用的文字修饰符可参见官方文档 "Additional decorations"。
| 输入 | 显示 |
|---|---|
| \fbox | \(\fbox{a+b+c+d}\) |
| \overleftarrow | \(\overleftarrow{a+b+c+d}\) |
| \overrightarrow | \(\overrightarrow{a+b+c+d}\) |
| \overleftrightarrow | \(\overleftrightarrow{a+b+c+d}\) |
| \underleftarrow | \(\underleftarrow{a+b+c+d}\) |
| \underrightarrow | \(\underrightarrow{a+b+c+d}\) |
| \underleftrightarrow | \(\underleftrightarrow{a+b+c+d}\) |
| \overline | \(\overline{a+b+c+d}\) |
| \underline | \(\underline{a+b+c+d}\) |
| \overbrace{a+b+c+d}^ | \(\overbrace{a+b+c+d}^{Sample}\) |
| \underbrace{a+b+c+d}_ | \(\underbrace{a+b+c+d}_{Sample}\) |
| \overbrace{a+\underbrace{b+c}_{1.0}+d}^ | \(\overbrace{a+\underbrace{b+c}_{1.0}+d}^{2.0}\) |
| \underbrace{a\cdot a\cdots a}_{b\text{ times}} | \(\underbrace{a\cdot a\cdots a}_{b\text{ times}}\) |
4.3.22 箭头符号
- 推荐使用符号:
| 输入 | 显示 | 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|---|---|
| \to | \(\to\) | \mapsto | \(\mapsto\) | \underrightarrow | \(\underrightarrow{1km/min}\) |
| \implies | \(\implies\) | \iff | \(\iff\) | \impliedby | \(\impliedby\) |
- 其它可用符号:
| 输入 | 显示 | 输入 | 显示 |
|---|---|---|---|
| \uparrow | \(\uparrow\) | \Uparrow | \(\Uparrow\) |
| \downarrow | \(\downarrow\) | \Downarrow | \(\Downarrow\) |
| \leftarrow | \(\leftarrow\) | \Leftarrow | \(\Leftarrow\) |
| \rightarrow | \(\rightarrow\) | \Rightarrow | \(\Rightarrow\) |
| \leftrightarrow | \(\leftrightarrow\) | \Leftrightarrow | \(\Leftrightarrow\) |
| \longleftarrow | \(\longleftarrow\) | \Longleftarrow | \(\Longleftarrow\) |
| \longrightarrow | \(\longrightarrow\) | \Longrightarrow | \(\Longrightarrow\) |
| \longleftrightarrow | \(\longleftrightarrow\) | \Longleftrightarrow | \(\Longleftrightarrow\) |
4.3.23 字体转换
若要对公式的某一部分字符进行字体转换,可以用 {\字体 {需转换的部分字符}} 命令,其中 \字体 部分可以参照下表选择合适的字体。一般情况下,公式默认为斜体字 。
示例中 全部大写 的字体仅大写可用。
| 输入 | 全字母可用 | 显示 | 输入 | 仅大写可用 | 显示 |
|---|---|---|---|---|---|
| \rm | 罗马体 | \(\rm{Sample}\) | \mathcal | 花体(数学符号等) | \(\mathcal{Sample}\) |
| \it | 斜体 | \(\it{Sample}\) | \mathbb | 黑板粗体(定义域等) | \(\mathbb{Sample}\) |
| \bf | 粗体 | \(\bf{Sample}\) | \mit | 数学斜体 | \(\mit{Sample}\) |
| \sf | 等线体 | \(\sf{Sample}\) | \scr | 手写体 | \(\scr{Sample}\) |
| \tt | 打字机体 | \(\tt{Sample}\) | \cal | 等同于 \mathcal |
\(\cal{Sample}\) |
| \frak | 旧德式字体 | \(\frak{Sample}\) | \Bbb | 等同于 \mathbb |
\(\Bbb{Sample}\) |
| \boldsymbol | 向量或者矩阵的加粗斜体 | \(\boldsymbol{\Gamma}\) |
转换字体十分常用,例如在积分中:
- 例子:
$$
\begin{array}{cc}
\mathrm{Bad} & \mathrm{Better} \\
\hline \\
\int_0^1 x^2 dx & \int_0^1 x^2 \,{\rm d}x
\end{array}
$$
- 显示:
注意比较两个式子间 \(dx\) 与 \({\rm d} x\) 的不同。
使用 \operatorname 命令也可以达到相同的效果。

浙公网安备 33010602011771号