Markdown 上标和下标语法指南

Markdown上标下标

Markdown 本身没有专门的上标(superscript)和下标(subscript)语法——这玩意不像加粗和斜体有专属的标记,你得借助 HTML 标签或者 Unicode 字符来实现。

这篇文章把 markdown superscript 和 markdown subscript 的几种实现方式都讲清楚,顺便给你一张可以直接复制粘贴的 Unicode 字符速查表。

用 HTML 标签(最常用)

这是最主流、兼容性最好的方式。Markdown 支持内嵌 HTML,所以直接用 <sup><sub> 标签就行:

上标 <sup>

x<sup>2</sup> + y<sup>2</sup> = z<sup>2</sup>

渲染效果:x2 + y2 = z2

下标 <sub>

H<sub>2</sub>O 是水的化学式

渲染效果:H2O 是水的化学式

语法很简单,就是把要变成上标或下标的内容包在标签里。大部分 Markdown 平台都支持这两个 HTML 标签,因为它们是最基础的 HTML 元素。

常见使用场景

光知道语法不够,得知道什么时候用。以下是几个实际场景:

化学式

化学式是下标的高频场景:

- 水:H<sub>2</sub>O
- 二氧化碳:CO<sub>2</sub>
- 硫酸:H<sub>2</sub>SO<sub>4</sub>
- 硫酸根离子:SO<sub>4</sub><sup>2-</sup>

渲染效果:

  • 水:H2O
  • 二氧化碳:CO2
  • 硫酸:H2SO4
  • 硫酸根离子:SO42-

注意硫酸根离子的写法——下标和上标可以叠加使用,<sub><sup> 挨着写就行。

数学公式

- 面积公式:A = πr<sup>2</sup>
- 体积公式:V = 4/3πr<sup>3</sup>
- 数列通项:a<sub>n</sub> = a<sub>1</sub> + (n-1)d

如果公式比较复杂,建议用 LaTeX 数学公式(下面会讲到)。

商标和符号

- 注册商标:Markdown<sup>®</sup>
- 商标:Coca-Cola<sup>™</sup>
- 版权:© 2024
- 温度:25°C 或 77°F

说实话商标符号用 HTML 标签有点啰嗦,直接用 Unicode 字符更方便——后面有速查表。

引用标注

参见第<sup>3</sup>版《设计模式》

不过如果你的标注是带跳转链接的学术引用,应该用 Markdown 脚注 而不是 <sup>。脚注能自动编号和跳转,上标标签做不到这些。

用 Unicode 字符(零依赖)

其实很多上标和下标有对应的 Unicode 字符,直接复制粘贴就能用,不需要任何 HTML 标签。

常用上标字符

字符说明Unicode
¹上标1U+00B9
²上标2U+00B2
³上标3U+00B3
上标nU+207F
上标+U+207A
上标-U+207B
上标0U+2070
上标iU+2071

常用下标字符

字符说明Unicode
下标0U+2080
下标1U+2081
下标2U+2082
下标3U+2083
下标4U+2084
下标nU+2099
下标+U+208A
下标-U+208B

直接复制粘贴就行:

H₂O 和 CO₂ 不用写 HTML 标签
x² + y² = z²
E = mc²

这种方式最省事,但 Unicode 字符覆盖范围有限——复杂化学式或数学公式可能找不到对应的字符。

用 LaTeX 数学公式

如果公式比较复杂(比如分数、积分、根号),直接用 LaTeX 数学语法更合适。大部分支持 Markdown 的平台也支持 LaTeX 公式:

行内公式:$H_2SO_4$ 和 $x^2 + y^2 = z^2$

块级公式:
$$
\sum_{i=1}^{n} a_i = a_1 + a_2 + \cdots + a_n
$$
  • 上标用 ^x^2 → x²
  • 下标用 _H_2O → H₂O

LaTeX 在数学和化学公式场景是最专业的方案,但需要平台支持数学公式渲染。GitHub 不支持 LaTeX,Obsidian 和 Typora 支持。

三种方案怎么选

特性HTML 标签Unicode 字符LaTeX 公式
上标<sup>2</sup>²^2
下标<sub>2</sub>_2
兼容性几乎所有平台所有平台需要数学渲染
复杂度简单最简单需要学语法
适合场景通用简单标注复杂公式

我的习惯是这样的:

  • 简单的化学式和数学(H₂O、x²)→ 直接用 Unicode 字符复制粘贴
  • 需要确保所有平台都能显示 → 用 HTML 标签
  • 复杂公式(积分、分数、矩阵)→ 用 LaTeX

为什么 Markdown 没有原生语法

你可能好奇为什么上标下标不像 Markdown 加粗Markdown 斜体 那样有自己的语法标记。原因是 CommonMark 的设计哲学——John Gruber 最初设计 Markdown 时就没有包含上标下标,后来 CommonMark 规范也沿用了这个决定。他们的理由是:上标下标的使用频率远低于加粗斜体,而且 HTML 标签 <sup> <sub> 已经足够简单,没必要为此增加额外的语法负担。

这个话题在 CommonMark 社区讨论过很多次,社区的态度基本一致:不会加入原生的上标下标语法

常见问题

<sup><sub> 在 GitHub 上能用吗?

能用。GitHub 支持这两个 HTML 标签。不过 GitHub 不支持 LaTeX 数学公式,所以写复杂公式的话得想别的办法。

Unicode 字符会不会在某些平台显示不了?

基本不会。Unicode 上标下标字符是标准字符集的一部分,现代浏览器和编辑器都能正常显示。但如果你的读者用的是非常老的系统,极少数字符可能会有问题。

上标标签和脚注有什么区别?

<sup> 只是显示一个上标文字,没有任何跳转功能。Markdown 脚注 [^1] 会自动编号、生成跳转链接、在页面底部收集。如果你要做学术引用,用脚注;如果只是要一个小小的上标数字或符号,用 <sup> 就够了。


参考来源: