Markdown 扩展语法:附完整示例的进阶指南
全面掌握 Markdown 扩展语法元素,包括表格、代码块、脚注、任务清单、Emoji 等,每个功能均附带清晰示例,即学即用。

Markdown 基础语法已经能满足日常大部分写作需求,但有时你需要更多功能。扩展语法带来了表格、脚注、任务清单等强大特性——让 Markdown 从简单的格式化工具变成功能齐全的写作环境。
并非所有 Markdown 处理器都支持全部扩展语法元素。使用之前,请先确认你的工具或平台是否支持你需要的特定功能。好消息是:大多数现代平台——GitHub、GitLab、VS Code 以及主流静态站点生成器——都支持其中绝大部分扩展功能。
如果你还不太熟悉基础语法,建议先阅读我们的 Markdown 基础语法指南。
表格

表格让你可以直接在 Markdown 中将数据组织为行和列。使用竖线(|)分隔列,使用连字符(-)创建表头行。
| Feature | Basic Syntax | Extended Syntax |
| ------------- | ------------ | --------------- |
| Tables | No | Yes |
| Footnotes | No | Yes |
| Task Lists | No | Yes |
渲染效果如下:
| Feature | Basic Syntax | Extended Syntax |
|---|---|---|
| Tables | No | Yes |
| Footnotes | No | Yes |
| Task Lists | No | Yes |
列对齐
通过在表头分隔行添加冒号来控制文本对齐方式:
| Left Aligned | Center Aligned | Right Aligned |
| :----------- | :------------: | ------------: |
| Text | Text | Text |
| More | More | More |
:---左对齐(默认):---:居中对齐---:右对齐
表格使用技巧
- 源码中的竖线不需要严格对齐——对齐只是为了看起来更整洁
- 表格支持行内格式,如 粗体、斜体、
代码和 链接 - 表格不支持在单元格内使用标题、引用块、列表或图片
- 对于复杂数据,建议使用 HTML 表格
围栏代码块

基础语法支持缩进代码块,但围栏代码块更加实用。用三个反引号(```)或三个波浪号(~~~)包裹代码,并指定语言以启用语法高亮。
```python
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(10))
```
渲染后会显示完整的语法高亮效果:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(10))
支持的语言
大多数渲染器支持数十种语言标识符,以下是最常用的:
Language Identifier
-------------- ----------------
JavaScript javascript / js
Python python / py
TypeScript typescript / ts
HTML html
CSS css
JSON json
Bash bash / sh
SQL sql
Markdown markdown / md
代码块最佳实践
- 始终指定语言——这能启用语法高亮并提升可读性
- 当不适用任何语言时,使用
text或plaintext - 围栏代码块优于缩进代码块,因为前者支持语法高亮且无需逐行缩进
脚注

脚注可以让你添加注释和引用,而不会让正文变得杂乱。脚注内容会显示在页面底部。
Markdown was created by John Gruber in 2004.[^1] It has since become
the standard for technical writing.[^2]
[^1]: John Gruber's original Markdown project is documented on
[Daring Fireball](https://daringfireball.net/projects/markdown/).
[^2]: Markdown is used by GitHub, Stack Overflow, Reddit, and
countless other platforms.
渲染后,引用编号会显示为文本中的上标链接,完整注释则列在文档底部。
脚注语法规则
- 脚注引用使用
[^identifier]——标识符可以是数字或单词(不能有空格) - 脚注定义以
[^identifier]:开头,后面跟内容 - 多段落脚注需要为后续段落添加缩进(四个空格或一个制表符)
- 脚注定义可以放在文档的任何位置——它们始终会渲染在底部
Here's a footnote with multiple paragraphs.[^note]
[^note]: This is the first paragraph of the footnote.
This is the second paragraph, indented with four spaces.
You can even include code: `console.log("hello")`
标题 ID
自定义标题 ID 可以让你创建精确的锚点链接,指向文档的特定部分。在标题文本后的花括号中添加 ID。
### My Custom Section {#custom-section}
生成的 HTML 如下:
<h3 id="custom-section">My Custom Section</h3>
链接到标题 ID
一旦标题有了 ID,就可以直接链接到它:
Jump to [My Custom Section](#custom-section).
这在为长文档创建手动目录时特别有用:
## Contents
- [Introduction](#introduction)
- [Getting Started](#getting-started)
- [Advanced Usage](#advanced-usage)
- [FAQ](#faq)
兼容性说明
许多处理器(包括 GitHub)即使没有 {#id} 语法,也会自动从标题文本生成标题 ID。不过,显式设置 ID 能给你完全的控制权,并确保跨平台行为的一致性。
定义列表
定义列表非常适合词汇表、常见问题以及任何需要将术语与解释配对的内容。
Markdown
: A lightweight markup language for creating formatted text
using a plain-text editor.
HTML
: The standard markup language for documents designed to be
displayed in a web browser.
YAML
: A human-readable data serialization language commonly used
for configuration files.
生成的 HTML 如下:
<dl>
<dt>Markdown</dt>
<dd>A lightweight markup language for creating formatted text
using a plain-text editor.</dd>
<dt>HTML</dt>
<dd>The standard markup language for documents designed to be
displayed in a web browser.</dd>
</dl>
多个定义
一个术语可以有多个定义:
Markdown
: A lightweight markup language.
: A tool used by developers and writers worldwide.
兼容性说明
定义列表并非所有处理器都支持。GitHub Flavored Markdown 不支持定义列表,但许多静态站点生成器和文档工具支持。
删除线
删除线会在文本上显示一条水平线,表示已删除或过时的内容。用双波浪号(~~)包裹文本。
The project deadline is ~~Friday~~ Monday.
~~Old information~~ has been replaced with updated content.
渲染效果如下:
The project deadline is Friday Monday.
HTML 输出:
<p>The project deadline is <del>Friday</del> Monday.</p>
删除线获得了广泛支持——它是 GitHub Flavored Markdown(GFM)的一部分,在大多数现代平台上都能正常工作。
任务清单

任务清单(也称复选框或待办列表)可以创建交互式检查清单。使用 - [ ] 表示未完成项,- [x] 表示已完成项。
- [x] Research extended syntax features
- [x] Write first draft
- [x] Add code examples for each section
- [ ] Create cover image
- [ ] Proofread and edit
- [ ] Publish the article
渲染效果如下:
- Research extended syntax features
- Write first draft
- Add code examples for each section
- Create cover image
- Proofread and edit
- Publish the article
任务清单的应用场景
任务清单在以下场景中特别受欢迎:
- GitHub Issue 和 Pull Request——追踪工作项的进度
- 项目文档——列出流程中的步骤
- 会议记录——记录待办事项及其状态
在 GitHub 等平台上,这些复选框是可交互的——你可以在渲染视图中直接点击来切换状态。
Emoji 表情
在 Markdown 文档中添加 Emoji 有两种方式。
复制粘贴
最简单的方法——从任何来源复制一个 Emoji,直接粘贴到文本中:
That's a great idea! 🎉 Let's ship it! 🚀
这在任何地方都能使用,因为 Emoji 是标准的 Unicode 字符。
短代码
一些平台支持 Emoji 短代码——用冒号包裹的关键词:
:smile: :rocket: :thumbsup: :warning: :heavy_check_mark:
常用短代码包括:
Shortcode Emoji
--------------------- -----
:smile: 😄
:rocket: 🚀
:thumbsup: 👍
:warning: ⚠️
:heavy_check_mark: ✔️
:x: ❌
:fire: 🔥
:star: ⭐
兼容性说明
Emoji 短代码在不同平台之间存在差异。GitHub、Slack 和 Discord 各自支持不同的短代码集。复制粘贴 Emoji 在所有平台通用,是跨平台文档的更安全选择。
高亮
高亮通过彩色背景使关键词或短语更加醒目。用双等号(==)包裹文本。
This is ==critically important== information.
生成的 HTML 如下:
<p>This is <mark>critically important</mark> information.</p>
HTML 替代方案
如果你的 Markdown 处理器不支持 == 语法,可以直接使用 HTML 的 <mark> 标签:
This is <mark>critically important</mark> information.
两种方式产生相同的效果——高亮文本从周围内容中突出显示。
兼容性说明
==highlight== 语法并未获得广泛支持。它在某些处理器中可用,但在 GitHub Flavored Markdown 中不可用。如果兼容性很重要,请使用 <mark> HTML 标签。
下标与上标
这些元素对于科学记号、数学表达式和化学公式至关重要。
下标
使用单波浪号(~)包裹下标文本:
The chemical formula for water is H~2~O.
Carbon dioxide is CO~2~.
渲染效果为:H2O 和 CO2。
HTML 等效写法:
<p>The chemical formula for water is H<sub>2</sub>O.</p>
上标
使用插入号(^)包裹上标文本:
The equation is E = mc^2^.
This is the 3^rd^ edition.
渲染效果为:E = mc2 和 3rd 版。
HTML 等效写法:
<p>The equation is E = mc<sup>2</sup>.</p>
HTML 替代方案
如果你的处理器不支持 ~ 和 ^ 语法,可以直接使用 HTML 标签:
H<sub>2</sub>O is water.
E = mc<sup>2</sup> is Einstein's famous equation.
这种 HTML 方式几乎在所有 Markdown 渲染器中都能正常工作。
自动 URL 链接
大多数 Markdown 处理器会自动将原始 URL 转换为可点击的链接,无需任何特殊语法:
Visit https://example.com for more information.
即使不使用 [text](url) 语法,这也会渲染为可点击的链接。
禁用自动链接
有时你希望将 URL 显示为纯文本而不使其可点击。用反引号包裹它,将其渲染为行内代码:
`https://example.com`
这会将 URL 显示为代码而非可点击的链接——在解释 URL 模式而非链接到目标时很有用。
何时使用显式链接
虽然自动链接很方便,但显式链接语法能给你更多控制权:
<!-- Automatic: shows raw URL -->
https://example.com
<!-- Explicit: shows custom text -->
[Visit our website](https://example.com)
当你需要描述性的锚文本时,使用显式链接——这对可读性和 SEO 都更好。
速查表

以下是所有扩展语法元素的一览表:
Element Syntax Support
------------------- ------------------------- --------
Table | Col | Col | Wide
Fenced Code Block ``` code ``` Wide
Footnote [^1] / [^1]: text Moderate
Heading ID ### Heading {#id} Moderate
Definition List Term / : Definition Limited
Strikethrough ~~text~~ Wide
Task List - [x] / - [ ] Wide
Emoji (shortcode) :emoji_name: Varies
Highlight ==text== Limited
Subscript H~2~O Limited
Superscript X^2^ Limited
Auto URL Link https://... Wide
开始使用扩展语法
现在你已经了解了每个主要的扩展语法元素,以下是将它们付诸实践的方法:
-
确认你的平台:验证你的 Markdown 处理器支持哪些功能。GitHub、VS Code 和大多数静态站点生成器都能很好地处理广泛支持的元素。
-
使用 HTML 替代方案:对于支持有限的功能(高亮、下标、上标),HTML 标签替代方案几乎在所有地方都能使用。
-
用真实内容练习:试着在下一个 README 中添加表格,在下一篇博客文章中使用脚注,或在下一个项目计划中使用任务清单。
-
放心转换:当你的文档准备好分享时,将 Markdown 转换为 PDF 获取支持 LaTeX 数学和表格的打印就绪输出,导出为 HTML 用于网页发布,或生成 Word 文档 供利益相关者审阅——所有扩展语法元素都包含在内。
掌握了基础语法和这些扩展功能,你现在拥有了完整的 Markdown 工具包。如果你刚接触 Markdown,可以从什么是 Markdown 了解基本概念。无论你在写什么——文档、博客文章、技术规格还是项目计划——Markdown 都能满足你的需求。