Markdown 引用语法:从基础到进阶的完整指南

在写文档时,我们经常需要引用别人的话、标注重要提示,或者让某段文字看起来更醒目。Markdown 提供了一个简单的方式来做到这一点 —— 引用(blockquote)。

不管你是写技术文档、记笔记,还是在 GitHub 上写 README,引用都是用得很多的语法。

Markdown 引用基础语法

创建引用非常简单:在行首加上 > 符号(大于号),再加一个空格,后面写上引用的内容就行了。

> 这是一段引用文字。

渲染效果:

这是一段引用文字。

这个 > 符号对应 HTML 中的 <blockquote> 标签。也就是说,上面的 Markdown 代码实际上会生成这样的 HTML:

<blockquote>
<p>这是一段引用文字。</p>
</blockquote>

理解了这一点,后面遇到各种引用行为就更容易理解了。

多段落引用

如果你的引用内容比较长,需要分成多个段落,方法是在每个空行上也加上 >

> 这是引用的第一段。

>
> 这是引用的第二段,空行上也要加 > 符号。

渲染效果:

这是引用的第一段。

这是引用的第二段,空行上也要加 > 符号。

这里有一个关键点:空行上也必须加 >,否则引用会被打断,变成两个独立的引用块。这一点在很多教程中没有强调,但实际使用中很容易踩坑。

有一次我写了一段很长的引用,中间空了一行忘记加 >,结果渲染出来变成了两个分开的引用框,看起来很不协调。所以只要你想让所有内容保持在同一个引用块里,每一行(包括空行)都要加 >

嵌套引用(引用中的引用)

Markdown 支持引用嵌套,也就是在引用里面再放一个引用。方法是增加 > 的数量:两个 >> 表示二级引用,三个 >>> 表示三级引用,以此类推。

> 这是一级引用
>
> > 这是二级引用(嵌套在一级引用中)
>
> 回到一级引用

渲染效果:

这级引用

这是二级引用(嵌套在一级引用中)

回到一级引用

语法说明
>一级引用
>>二级引用(嵌套在一级引用中)
>>>三级引用(嵌套在二级引用中)

嵌套引用在回复评论、引用对话场景时特别有用。不过实际使用中,一般嵌套到两三层就够了,太深的嵌套会影响阅读体验。

在引用中使用其他 Markdown 语法

引用块不是"只能写纯文字"——你可以在引用里面使用几乎所有的 Markdown 格式语法,包括加粗斜体链接、列表和代码等。

引用中加粗和斜体

> 这段引用中有**加粗文字**和*斜体文字*。

渲染效果:

这段引用中有加粗文字斜体文字

引用中使用列表

> 引用中的列表:
>
> - 第一项
> - 第二项
> - 第三项

渲染效果:

引用中的列表:

  • 第一项
  • 第二项
  • 第三项

引用中使用代码块

> 引用中的代码示例:
>
> ```javascript
> console.log("Hello, World!");
> ```

引用中使用链接

> 更多 Markdown 语法请参考 [Markdown 链接语法](/markdown/link/)。

引用内嵌套其他语法时,需要注意一点:不是所有 Markdown 渲染器都支持所有嵌套组合。根据 CommonMark 规范,引用内可以包含任何块级元素,但某些平台(特别是自定义解析器)可能会有差异。如果遇到渲染异常,先排查一下是不是平台兼容性问题。

引用在列表中的用法

当引用出现在列表项中时,引用需要缩进到与列表内容对齐的位置。

1. 第一项
2. 第二项
   > 在列表项中的引用
   > 需要缩进对齐
3. 第三项

我实测发现,在 GitHub 和 VS Code 中,列表里的引用需要缩进 3 个空格(与列表文字对齐),才能正确渲染为列表项的一部分。如果缩进不够,引用可能会脱离列表,变成独立的引用块。说实话这个细节很容易被忽略,但在写技术文档时经常遇到。

"懒延续"机制

顺便提一句,CommonMark 规范中有一个叫做"懒延续"(lazy continuation)的机制,挺有意思。

简单来说,如果一个段落的第一行以 > 开头,后面的连续行即使不加 >,也会被当作引用的一部分。

> 这一行有 > 符号
这一行没有 > 符号,但仍然是引用的一部分

在某些渲染器中,这段代码会渲染为一个完整的引用块。

不过,这个行为不是所有平台都支持。在 GitHub Flavored Markdown (GFM) 中,"懒延续"只在同一段落内有效,跨段落(中间有空行)就必须每行都加 >。我的建议是:养成每行都加 > 的习惯,这样在所有平台上都能正确渲染,不用操心兼容性。

不同平台的引用语法差异

不同平台对 Markdown 引用的支持有些差异,我整理了一个对照表:

特性标准 MarkdownGitHubDiscordObsidian
> 单行引用
多段落引用
>> 嵌套引用
>>> 多行引用
懒延续部分部分
引用内嵌套代码块

需要特别说明的是 Discord 的 >>> 语法:在 Discord 中,>>> 后面的所有内容都会变成引用,直到消息结束。这与标准 Markdown 中的 >>>(三级嵌套引用)含义不同。

根据 Discord 官方文档说明:

  • > 创建单行引用
  • >>> 创建多行引用(后面所有内容都是引用)

这是 Discord 对 Markdown 的扩展,不是标准语法。

引用的实际应用场景

了解了语法之后,来看看引用在实际写作中怎么用。

引用名人名言或文献

> 任何足够先进的技术,都与魔法无异。
>
> —— 亚瑟·克拉克

文档中的提示框

很多文档系统会把引用样式用作提示框。虽然这不是标准用法,但在实际写作中很常见。比如:

> **注意**:在运行此命令之前,请确保已备份数据库。

回复和对话

在 GitHub Issues 或邮件列表中,引用常用于回复别人的话,这也是 blockquote 这个名字的由来——引用一块内容来回复:

> 用户原话:登录页面无法正常显示。

感谢反馈,这个问题已在最新版本中修复。

用 HTML 实现引用

如果你觉得每行都加 > 太麻烦,对了,还有一个办法——直接用 HTML 的 <blockquote> 标签。大多数 Markdown 渲染器都支持 HTML 标签。

<blockquote>
  这是第一段引用内容。

  这是第二段引用内容,不需要每行加 > 符号。
</blockquote>

这个方法在引用很长的内容时特别方便。不过要注意,使用 HTML 标签后,标签内部不能再使用 Markdown 语法(比如 **加粗** 不会生效),需要直接使用 HTML 标签来控制格式。

常见问题

Markdown 引用和代码块有什么区别?

引用(> 开头)用来高亮文字内容,通常会显示为左侧带竖线的缩进块。代码块(用反引号 ` 包裹)用来显示代码,会保持原始的字符间距和换行。两者用途不同:引用强调内容的重要性或来源,代码块展示程序代码。

引用中可以放图片吗?

可以。引用中支持 Markdown 图片语法

> ![图片描述](image-url.png)

为什么我的引用没有渲染出来?

常见原因有几个:

  1. > 后面没有加空格(部分渲染器要求有空格)
  2. 引用前后没有空行(建议在引用块前后各留一个空行)
  3. 混用了不同的缩进方式(用空格而不是制表符更可靠)

引用嵌套最多可以有几层?

Markdown 规范没有限制嵌套层数,但实际上超过三层嵌套的引用可读性会很差。大多数文档风格建议嵌套不超过两层。

Markdown 引用(blockquote)怎么读?

blockquote 读作 "block quote",意思是"块级引用"。它是 HTML 中的一个标签名,对应 Markdown 中用 > 创建的引用元素。

小结

说实话语法本身没几行,但坑都在细节里。一个 > 就能搞定引用,难的是记住多段落时空行也要加 >、嵌套引用别搞得太深、以及不同平台的那些小差异。我的建议是养成习惯——每行都加 >,这样不管在哪个平台写都不会出问题。

对了,如果你在写技术文档,引用内嵌套 加粗斜体代码块、列表、链接 这些格式都是日常会用到的组合,可以多试试。


参考来源: