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 引用的支持有些差异,我整理了一个对照表:
| 特性 | 标准 Markdown | GitHub | Discord | Obsidian |
|---|---|---|---|---|
> 单行引用 | ✅ | ✅ | ✅ | ✅ |
| 多段落引用 | ✅ | ✅ | ✅ | ✅ |
>> 嵌套引用 | ✅ | ✅ | ✅ | ✅ |
>>> 多行引用 | ❌ | ❌ | ✅ | ❌ |
| 懒延续 | ✅ | 部分 | ❌ | 部分 |
| 引用内嵌套代码块 | ✅ | ✅ | ✅ | ✅ |
需要特别说明的是 Discord 的 >>> 语法:在 Discord 中,>>> 后面的所有内容都会变成引用,直到消息结束。这与标准 Markdown 中的 >>>(三级嵌套引用)含义不同。
根据 Discord 官方文档说明:
>创建单行引用>>>创建多行引用(后面所有内容都是引用)
这是 Discord 对 Markdown 的扩展,不是标准语法。
引用的实际应用场景
了解了语法之后,来看看引用在实际写作中怎么用。
引用名人名言或文献
> 任何足够先进的技术,都与魔法无异。
>
> —— 亚瑟·克拉克文档中的提示框
很多文档系统会把引用样式用作提示框。虽然这不是标准用法,但在实际写作中很常见。比如:
> **注意**:在运行此命令之前,请确保已备份数据库。回复和对话
在 GitHub Issues 或邮件列表中,引用常用于回复别人的话,这也是 blockquote 这个名字的由来——引用一块内容来回复:
> 用户原话:登录页面无法正常显示。
感谢反馈,这个问题已在最新版本中修复。用 HTML 实现引用
如果你觉得每行都加 > 太麻烦,对了,还有一个办法——直接用 HTML 的 <blockquote> 标签。大多数 Markdown 渲染器都支持 HTML 标签。
<blockquote>
这是第一段引用内容。
这是第二段引用内容,不需要每行加 > 符号。
</blockquote>这个方法在引用很长的内容时特别方便。不过要注意,使用 HTML 标签后,标签内部不能再使用 Markdown 语法(比如 **加粗** 不会生效),需要直接使用 HTML 标签来控制格式。
常见问题
Markdown 引用和代码块有什么区别?
引用(> 开头)用来高亮文字内容,通常会显示为左侧带竖线的缩进块。代码块(用反引号 ` 包裹)用来显示代码,会保持原始的字符间距和换行。两者用途不同:引用强调内容的重要性或来源,代码块展示程序代码。
引用中可以放图片吗?
可以。引用中支持 Markdown 图片语法:
> 为什么我的引用没有渲染出来?
常见原因有几个:
>后面没有加空格(部分渲染器要求有空格)- 引用前后没有空行(建议在引用块前后各留一个空行)
- 混用了不同的缩进方式(用空格而不是制表符更可靠)
引用嵌套最多可以有几层?
Markdown 规范没有限制嵌套层数,但实际上超过三层嵌套的引用可读性会很差。大多数文档风格建议嵌套不超过两层。
Markdown 引用(blockquote)怎么读?
blockquote 读作 "block quote",意思是"块级引用"。它是 HTML 中的一个标签名,对应 Markdown 中用 > 创建的引用元素。
小结
说实话语法本身没几行,但坑都在细节里。一个 > 就能搞定引用,难的是记住多段落时空行也要加 >、嵌套引用别搞得太深、以及不同平台的那些小差异。我的建议是养成习惯——每行都加 >,这样不管在哪个平台写都不会出问题。
对了,如果你在写技术文档,引用内嵌套 加粗、斜体、代码块、列表、链接 这些格式都是日常会用到的组合,可以多试试。
参考来源:
- Discord Markdown Text 101 — Discord Markdown 格式指南
- GitHub Flavored Markdown Spec — GitHub Markdown 规范