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 |
|---|---|---|
| ¹ | 上标1 | U+00B9 |
| ² | 上标2 | U+00B2 |
| ³ | 上标3 | U+00B3 |
| ⁿ | 上标n | U+207F |
| ⁺ | 上标+ | U+207A |
| ⁻ | 上标- | U+207B |
| ⁰ | 上标0 | U+2070 |
| ⁱ | 上标i | U+2071 |
常用下标字符
| 字符 | 说明 | Unicode |
|---|---|---|
| ₀ | 下标0 | U+2080 |
| ₁ | 下标1 | U+2081 |
| ₂ | 下标2 | U+2082 |
| ₃ | 下标3 | U+2083 |
| ₄ | 下标4 | U+2084 |
| ₙ | 下标n | U+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> 就够了。
参考来源: