MDUtil

Markdown 上标和下标

标准 Markdown 没有上标和下标语法,要用 <sup> 和 <sub>:x<sup>2</sup>、H<sub>2</sub>O。本文还介绍公式写法、Unicode 字符,以及部分应用增加的简写。

简短回答

Markdown 怎么写上标和下标?

用 HTML 标签 <sup> 和 <sub>:x<sup>2</sup> 把 2 写成上标,H<sub>2</sub>O 把 2 写成下标。GitHub 和大多数允许 HTML 的应用都支持。Pandoc 和 Typora 还支持 ^文字^ 和 ~文字~。

Markdown
E = mc<sup>2</sup>,H<sub>2</sub>O

显示效果

E = mc2,H2O

上标和下标的示例

根据文字要显示在哪里,选择合适的写法。

用 <sup> 写上标

适合指数、序号和注释标记。

Markdown
10<sup>-3</sup> 秒,m<sup>2</sup>,注释<sup>1</sup>

显示效果

10-3 秒,m2,注释1

用 <sub> 写下标

适合化学式和下标变量。

Markdown
CO<sub>2</sub>,x<sub>i</sub>,log<sub>2</sub> 8 = 3

显示效果

CO2,xi,log2 8 = 3

公式写法

支持公式的地方,美元符号里的 ^ 和 _ 可以写出规范的公式。

Markdown
$x^2 + y^2 = r^2$ 和 $\mathrm{H_2O}$

显示效果

x2+y2=r2x^2 + y^2 = r^2 和 H2O\mathrm{H_2O}

Unicode 字符

上标和下标数字是普通字符,在任何地方都能显示,包括聊天软件。

Markdown
x² + y² = r²,H₂O,10⁻³

显示效果

x² + y² = r²,H₂O,10⁻³

嵌套和格式

标签里可以写 Markdown 和其他标签,也可以互相嵌套。

Markdown
2<sup>2<sup>2</sup></sup> = 16,价格<sup>**新**</sup>

显示效果

222 = 16,价格新

Pandoc 和 Typora:^ 和 ~

Pandoc 把 ^文字^ 当作上标、~文字~ 当作下标,Typora 在开启选项后也支持。在 GitHub 上,单个波浪号表示删除线。

Markdown
x^2^ 和 H~2~O

仅适用于 Pandoc 和 Typora。其他 Markdown 应用的显示效果不同,因此不提供预览。

各平台的上标下标支持

保留内嵌 HTML 的地方都支持这两个标签。

应用支持情况说明
GitHub / GitLab支持支持 <sup> 和 <sub>,公式里的 ^ 和 _ 也有效。
Obsidian支持阅读视图中支持 <sup> 和 <sub>。
Typora支持支持这两个标签,在设置中开启后还支持 ^文字^ 和 ~文字~。
Notion不支持没有输入语法,可以用行内公式或 Unicode 字符。
Discord / Slack不支持不支持上标,² 这样的 Unicode 字符可以正常显示。

常见问题

Markdown 有上标语法吗?

CommonMark 和 GitHub 风格 Markdown 都没有。在允许 HTML 的地方用 <sup> 和 <sub>;Pandoc 和 Typora 还支持 ^文字^ 和 ~文字~。

GitHub 上怎么写上标?

用 <sup>:x<sup>2</sup>。GitHub 也支持公式,所以 $x^2$ 同样可以。

为什么 ~文字~ 变成了删除线而不是下标?

在 GitHub 风格 Markdown 里,两侧各一个波浪号表示删除线。在那里写下标请用 <sub>。

化学式怎么写?

用 <sub>:H<sub>2</sub>O,或者用公式:$\mathrm{H_2O}$。₂ 这样的 Unicode 下标数字在纯文本里也能用。

Discord 和 Slack 里怎么写上标?

两者都不支持上标。可以输入 ²、³ 这样的 Unicode 字符,在任何地方都能显示。

导出 Word 或 PDF 时上标会保留吗?

会。Markdown 转 Word 会把 <sup> 和 <sub> 转成 Word 的上标和下标,Markdown 转 PDF 会照样打印。