MarkdownCo
返回博客
指南

Markdown 扩展语法:附完整示例的进阶指南

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

Markdown 扩展语法:附完整示例的进阶指南

Markdown 基础语法已经能满足日常大部分写作需求,但有时你需要更多功能。扩展语法带来了表格、脚注、任务清单等强大特性——让 Markdown 从简单的格式化工具变成功能齐全的写作环境。

并非所有 Markdown 处理器都支持全部扩展语法元素。使用之前,请先确认你的工具或平台是否支持你需要的特定功能。好消息是:大多数现代平台——GitHub、GitLab、VS Code 以及主流静态站点生成器——都支持其中绝大部分扩展功能。

如果你还不太熟悉基础语法,建议先阅读我们的 Markdown 基础语法指南

表格

Markdown Tables

表格让你可以直接在 Markdown 中将数据组织为行和列。使用竖线(|)分隔列,使用连字符(-)创建表头行。

| Feature       | Basic Syntax | Extended Syntax |
| ------------- | ------------ | --------------- |
| Tables        | No           | Yes             |
| Footnotes     | No           | Yes             |
| Task Lists    | No           | Yes             |

渲染效果如下:

FeatureBasic SyntaxExtended Syntax
TablesNoYes
FootnotesNoYes
Task ListsNoYes

列对齐

通过在表头分隔行添加冒号来控制文本对齐方式:

| Left Aligned | Center Aligned | Right Aligned |
| :----------- | :------------: | ------------: |
| Text         |     Text       |          Text |
| More         |     More       |          More |
  • :--- 左对齐(默认)
  • :---: 居中对齐
  • ---: 右对齐

表格使用技巧

  • 源码中的竖线不需要严格对齐——对齐只是为了看起来更整洁
  • 表格支持行内格式,如 粗体斜体代码链接
  • 表格支持在单元格内使用标题、引用块、列表或图片
  • 对于复杂数据,建议使用 HTML 表格

围栏代码块

Markdown Fenced Code Blocks

基础语法支持缩进代码块,但围栏代码块更加实用。用三个反引号(```)或三个波浪号(~~~)包裹代码,并指定语言以启用语法高亮。

```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

代码块最佳实践

  • 始终指定语言——这能启用语法高亮并提升可读性
  • 当不适用任何语言时,使用 textplaintext
  • 围栏代码块优于缩进代码块,因为前者支持语法高亮且无需逐行缩进

脚注

Markdown Footnotes

脚注可以让你添加注释和引用,而不会让正文变得杂乱。脚注内容会显示在页面底部。

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)的一部分,在大多数现代平台上都能正常工作。

任务清单

Markdown Task Lists

任务清单(也称复选框或待办列表)可以创建交互式检查清单。使用 - [ ] 表示未完成项,- [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 都更好。

速查表

Markdown Extended Syntax Quick Reference

以下是所有扩展语法元素的一览表:

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

开始使用扩展语法

现在你已经了解了每个主要的扩展语法元素,以下是将它们付诸实践的方法:

  1. 确认你的平台:验证你的 Markdown 处理器支持哪些功能。GitHub、VS Code 和大多数静态站点生成器都能很好地处理广泛支持的元素。

  2. 使用 HTML 替代方案:对于支持有限的功能(高亮、下标、上标),HTML 标签替代方案几乎在所有地方都能使用。

  3. 用真实内容练习:试着在下一个 README 中添加表格,在下一篇博客文章中使用脚注,或在下一个项目计划中使用任务清单。

  4. 放心转换:当你的文档准备好分享时,将 Markdown 转换为 PDF 获取支持 LaTeX 数学和表格的打印就绪输出,导出为 HTML 用于网页发布,或生成 Word 文档 供利益相关者审阅——所有扩展语法元素都包含在内。

掌握了基础语法和这些扩展功能,你现在拥有了完整的 Markdown 工具包。如果你刚接触 Markdown,可以从什么是 Markdown 了解基本概念。无论你在写什么——文档、博客文章、技术规格还是项目计划——Markdown 都能满足你的需求。

Markdown扩展语法写作效率工具