1. 首页
  2. 博客
  3. 教程

如何在 Markdown 中编写数学公式(LaTeX 与 KaTeX)

用 LaTeX 语法在 Markdown 中编写行内公式和独立公式:分数、根号、求和、矩阵、多行对齐公式及常见问题,所有示例都能在 GitHub 和 KaTeX 中正确渲染,可直接复制使用。

纯 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=−b±b2−4ac2ax = \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
(ab)2vs(ab)2\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}
$$
A=(1234)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}
$$
(a+b)2=(a+b)(a+b)=a2+2ab+b2\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}
$$
∣x∣={xif x≥0−xif x<0|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 中的数学公式。