纯 Markdown 没有公式语法,但几乎所有现代 Markdown 工具都通过扩展支持 LaTeX 数学公式。您只需把 TeX 写法的公式放在美元符号之间,KaTeX 或 MathJax 等公式渲染器就会将其排版成规范的数学公式。
本指南介绍在 GitHub、GitLab、Obsidian、Jupyter 和 Markdown Preview Editor 中通用的语法,并提供一份最常用命令的参考表。
行内公式与独立公式
Markdown 中的数学公式分为两种:
- 行内公式嵌在句子中。用单个美元符号包裹:
$E = mc^2$。 - 独立公式(块级公式)单独占一行并居中显示。用两个美元符号包裹,通常各占一行。
markdown著名的公式 $E = mc^2$ 可以直接嵌在句子中。
$$
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$
渲染后,独立公式是这样的:
基本语法
| 内容 | 输入 | 说明 |
|---|---|---|
| 上标 | x^2, e^{i\pi} |
超过一个字符时要用花括号 |
| 下标 | a_1, x_{n+1} |
|
| 分数 | \frac{a}{b} |
在行内用 \dfrac 显示更大的分数 |
| 平方根 | \sqrt{x}, \sqrt[3]{x} |
|
| 求和、求积 | \sum_{i=1}^{n} i, \prod_{k} k |
|
| 积分 | \int_0^1 x\,dx |
\, 添加一个细空格 |
| 极限 | \lim_{x \to 0} \frac{\sin x}{x} |
|
| 希腊字母 | \alpha, \beta, \pi, \Omega |
首字母大写即为大写字母 |
| 关系符 | \le, \ge, \ne, \approx, \equiv |
|
| 运算符 | \times, \cdot, \pm, \div |
|
| 集合 | \in, \subset, \cup, \cap, \mathbb{R} |
|
| 箭头 | \to, \Rightarrow, \leftrightarrow |
|
| 公式中的文字 | \text{if } x > 0 |
保留正常的空格 |
| 向量、重音符号 | \vec{v}, \hat{x}, \bar{y} |
花括号用于分组:x^10 会渲染成 x¹0,而 x^{10} 会渲染成 x¹⁰。公式显示不对时,最常见的原因就是漏了花括号。
自动伸缩的括号
普通括号的大小是固定的。使用 \left 和 \right 可以让括号包住较高的内容:
latex\left( \frac{a}{b} \right)^2 \quad \text{vs} \quad (\frac{a}{b})^2
矩阵
矩阵使用环境来编写。pmatrix 带圆括号,bmatrix 带方括号,vmatrix 带竖线(行列式)。列之间用 & 分隔,行之间用 \\ 分隔。
latex$$
A = \begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
$$
多行公式与对齐
要让多个推导步骤按等号对齐,请在独立公式中使用 aligned 环境,并用 & 标记对齐点:
latex$$
\begin{aligned}
(a + b)^2 &= (a + b)(a + b) \\
&= a^2 + 2ab + b^2
\end{aligned}
$$
分段函数请使用 cases:
latex$$
|x| = \begin{cases}
x & \text{if } x \ge 0 \\
-x & \text{if } x < 0
\end{cases}
$$
不是公式的美元符号
文本中的价格可能会被意外识别成公式。大多数渲染器遵循 Pandoc 的规则:开头的 $ 后面不能紧跟空格,结尾的 $ 前面不能是空格,后面也不能紧跟数字。因此,像“between $5 and $10”这样的写法通常会保持为普通文本。如果拿不准,就对美元符号进行转义:\$5。
KaTeX 与 MathJax
两者渲染的是相同的 LaTeX 语法,区别主要在于速度和覆盖范围。
- KaTeX 速度快,采用同步渲染,非常适合实时预览。它支持文档、笔记和论文中绝大多数常用命令。
- MathJax 支持更多的 LaTeX 宏包,GitHub 和许多学术网站都在使用它,但它更加笨重。
Markdown Preview Editor 使用 KaTeX,并且只有在文档确实包含公式时才会加载它,因此不含公式的文档依然轻量。为 KaTeX 编写的公式几乎总能在 GitHub 上正常渲染。
GitHub 上的数学公式
GitHub 会在 Markdown 文件、Issue 和 Pull Request 中渲染数学公式。它支持 $…$ 和 $$…$$,并为一些棘手的情况提供了两种替代写法:$`…`$ 用于包含会被 Markdown 解析的字符的行内公式,语言设为 math 的代码块则用于独立公式。
更快地编写公式
- 使用 Markdown Preview Editor 高级编辑器工具栏中的数学公式按钮插入公式模板,然后对照预览进行编辑。
- 准备一个代码片段文件,收录常用的公式——矩阵、对齐块、分段函数。
- 把数学公式和 Mermaid 图表结合起来讲解算法:用流程图展示步骤,用公式说明每一步。
- 文档完成后,将其导出为 HTML 或 PDF——公式会保留在导出的文件中。
刚接触 Markdown?请先从 Markdown 语法速查表开始。
常见问题
如何在 Markdown 中编写公式?
行内公式用单个美元符号包裹 LaTeX 公式($a^2 + b^2 = c^2$),居中显示的独立公式则用两个美元符号。所用的 Markdown 工具必须支持数学公式——GitHub、GitLab、Obsidian、Jupyter 和 Markdown Preview Editor 都支持。
为什么我的公式显示为纯文本?
常见原因有:工具不支持数学公式;开头的 $ 后面或结尾的 $ 前面有空格;或者公式中的 _、* 等 Markdown 字符被当成了格式标记。可以试试把 $$ 各放一行,改用独立公式。
如何在 Markdown 中编写矩阵?
在 $$ 中使用 \begin{pmatrix} … \end{pmatrix}(或 bmatrix、vmatrix)。列之间用 & 分隔,行之间用 \\ 分隔。
KaTeX 支持所有 LaTeX 命令吗?
KaTeX 支持实际使用中的大多数数学命令,但并不支持所有 LaTeX 宏包。用于文档排版的命令(如 \section 或 \usepackage)根本不适用于 Markdown 中的数学公式。