引用块

引用块用行首的 > 标记,用来承载「这段话不是我说,是引自别处」的内容:原文摘录、上游文档的说明、审阅者的意见。它在页面上通常带一条左侧竖线或者浅色底纹,和正文区分开。但引用块的真正难点在于范围——它从哪一行开始,到哪一行结束?中间的换行、空行和其他块级语法又怎么处理?这一页把这些问题一次讲清。

语法

行首写一个 >,后面跟空格和内容:

> 这是一个引用
>
> - 引用中的列表
> - 第二项
>
>> 嵌套引用
<blockquote>
<p>这是一个引用</p>
<ul>
<li>
<p>引用中的列表</p>
</li>
<li>
<p>第二项</p>
</li>
</ul>
<blockquote>
<p>嵌套引用</p>
</blockquote>
</blockquote>

每一条被引用的行都要以 > 开头——包括空行,空行写成只有 > 的一行,它负责把引用块里的段落隔开。引用块可以打断前面的普通段落,但必须另起一行:

这一句在正文里。
> 这一句在引用里。
<p>这一句在正文里。</p>
<blockquote>
<p>这一句在引用里。</p>
</blockquote>

引用块的范围

引用块从第一个 > 开始,到第一个不以 > 开头的行结束。它会吃掉后面所有连续的 > 行,不管中间隔了多少空行——空行如果也写成 >,引用就继续。

还有一条容易被忽略的规则:懒延续。引用块里的第一行是段落时,后面没写 > 的普通文字行会被并入这个段落:

> 这是引用的第一段
这一行没有 >,但仍然属于引用
<blockquote>
<p>这是引用的第一段
这一行没有 >,但仍然属于引用</p>
</blockquote>

这条规则让长段落可以写得舒展一些,但也意味着引用块的结束位置可能比你以为的更靠后。

引用块里能放什么

引用块不是只能装纯文本,它内部遵循和其他块级结构一样的规则:列表、代码块、嵌套引用都能放进去。唯一要记住的是每一行都要加前缀——放列表就得写成 > - 项目,放代码块就得每行都写 > 。

嵌套引用用两层 > 表示,层数不限:

>> 两层引用
>>> 三层引用

常见坑

写法实际渲染原因
> 引用引用块基本写法
>引用引用块> 后的空格可省
> 单独一行引用里的段落分隔空引用行用来隔段
引用中间漏了 >该行并入引用懒延续
引用块里的列表漏了 >列表跳出引用每一行都要带前缀

练习

把下面这段内容改写成 Markdown,要求:前三行是同一个引用块里的两段话,用空的引用行隔开;第四行开始是普通正文,不要被引用吞掉;再补一个嵌套一层的引用。

这一行是正文。

> 引用里的第一段。
> 引用里的第一段第二行。
>
> 引用里的第二段。
这一行应该还是正文。

> 外层引用
>> 内层引用
嵌套引用

解题思路: 引用块从第一个 > 开始,遇到不以 > 开头的行才结束。所以「这一行应该还是正文」虽然紧跟在引用后面,但只要它不带 >,就会结束引用块——这正是懒延续规则的体现:只有当引用块里的第一行是段落时,后面的普通行才会被并进去。

详细步骤:

  1. 引用块里的每个段落都要以 > 开头。第一段有两行,两行都要写 > 。
  2. 段落之间用一个只含 > 的空引用行隔开,它在渲染时表现为引用块内部的段落间距。
  3. 「这一行应该还是正文」不带 >,引用块在这里结束,它渲染成普通段落。
  4. 嵌套引用用两层 >:外层一行 > 外层引用,内层一行 >> 内层引用。
  5. 检验:渲染后是三块内容——一段正文、一个含两段的引用块、一段正文,最后是嵌套引用。

最终答案:

这一行是正文。

> 引用里的第一段。
> 引用里的第一段第二行。
>
> 引用里的第二段。

这一行应该还是正文。

> 外层引用
>
>> 内层引用

小结

读完这一页,你应当能写出引用块并用空引用行在内部分段,能解释引用块的范围为什么由「第一个不带 > 的行」决定,能用多层 > 表达嵌套,也能在「正文被吞进引用」时立刻想到检查前缀漏没漏。接下来引用别人的话时,你会既把格式排得整齐,也守住正文和引用的边界。

发现内容有问题?

告诉我们哪里需要改进。