1. 块引用

一个块引用标记 由 0-3 个初始缩进空格组成,另外加上(a)字符>与一个空格,或(b)单个字符>后面没有空格。

块引用由以下规则定义:

  1. 一般原则 如果许多行 Ls 构成块 Bs 的序列,那么将块引用标记添加到 Ls 中每行的开头,会是一个包含 Bs块引用
  2. 延迟原则 如果许多行 Ls 构成一个含有内容的块引用 Bs ,那么从一行或多行删除的初始块引用标记的结果,其中块引用标记之后的下一个非空白字符就是段落连续文本,它是以 Bs 为内容的块引用。段落延续文本被解析为段落的部分内容,但并不会出现在段落的开头。
  3. 持续性 文档中不能在同一行中出现两个块引用,除非二者中间有一行空行

其余形式皆不能称为块引用
以下是一个简单的例子:

示例 206

Markdown HTML 效果
> # Foo
> bar
> baz

<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>

>之后的空格可以被省略:

示例 207

Markdown HTML 效果
># Foo
>bar
> baz

<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>

>可以被缩进 1-3 个空格:

示例 208

Markdown HTML 效果
   > # Foo
   > bar
 > baz

<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>

四个空格可以形成代码块:

示例 209

Markdown HTML 效果
    > # Foo
    > bar
    > baz

<pre><code>&gt; # Foo
&gt; bar
&gt; baz
</code></pre>

延迟原则可以使我们省略段落延续文本前面的>

示例 210

Markdown HTML 效果
> # Foo
> bar
baz

<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>

一个块引用可以同时包括「延迟」和「非延迟」的延续行:

示例 211

Markdown HTML 效果
> bar
baz
> foo

<blockquote>
<p>bar
baz
foo</p>
</blockquote>

延迟原则仅适用于那些在延续段落前已经拥有块引用标记的行。比方说,以下情况中>不能被省略

> foo
> ---

同理:

示例 212

Markdown HTML 效果
> foo
---

<blockquote>
<p>foo</p>
</blockquote>
<hr />

同样,如果在以下情况中省略>

> - foo
> - bar

那么引用块在第一行之后就会结束:

示例 213

Markdown HTML 效果
> - foo
- bar

<blockquote>
<ul>
<li>foo</li>
</ul>
</blockquote>
<ul>
<li>bar</li>
</ul>

同样的情况,缩进和代码块后面的行之前的>不能被省略:

示例 214

Markdown HTML 效果
>     foo
    bar

<blockquote>
<pre><code>foo
</code></pre>
</blockquote>
<pre><code>bar
</code></pre>

示例 215

Markdown HTML 效果
> ```
foo
```

<blockquote>
<pre><code></code></pre>
</blockquote>
<p>foo</p>
<pre><code></code></pre>

在接下来的例子中请注意,其中有一个延迟的后续行

示例 216

Markdown HTML 效果
> foo
    - bar

<blockquote>
<p>foo
- bar</p>
</blockquote>

为探究其原因,注意以下情况

> foo
>     - bar

- bar缩进的太多无法形成列表,并且其由于缩进无法中断段落也不能成为代码块,所以它是段落延续文本
一个引用块可以为空:

示例 217

Markdown HTML 效果
>

<blockquote>
</blockquote>

示例 218

Markdown HTML 效果
>
>  
> 

<blockquote>
</blockquote>

一个引用块的初始或者最后一行可以为空行:

示例 219

Markdown HTML 效果
>
> foo
>  

<blockquote>
<p>foo</p>
</blockquote>

空行可以分离引用的块:

示例 220

Markdown HTML 效果
> foo

> bar

<blockquote>
<p>foo</p>
</blockquote>
<blockquote>
<p>bar</p>
</blockquote>

(目前大多数的 Markdown 应用,包括 John Gruber 最初的Markdown.pl,都会将此示例解释成带有两个段落的块引用,但是最好让作者来决定是否需要一个或者两个块引用)
持续性意味着如果把多个块引用放到一起,会得到一个大的块引用:

示例 221

Markdown HTML 效果
> foo
> bar

<blockquote>
<p>foo
bar</p>
</blockquote>

要得到一个大有两个段落的块引用,需要:

示例 222

Markdown HTML 效果
> foo
>
> bar

<blockquote>
<p>foo</p>
<p>bar</p>
</blockquote>

块引用可以中断段落:

示例 223

Markdown HTML 效果
foo
> bar

<p>foo</p>
<blockquote>
<p>bar</p>
</blockquote>

一般来讲,空行不需要出现在块引用前后:

示例 224

Markdown HTML 效果
> aaa
***
> bbb

<blockquote>
<p>aaa</p>
</blockquote>
<hr />
<blockquote>
<p>bbb</p>
</blockquote>

当然,由于延迟原则,块引用后面出现段落时需要进行空行:

示例 225

Markdown HTML 效果
> bar
baz

<blockquote>
<p>bar
baz</p>
</blockquote>

示例 226

Markdown HTML 效果
> bar

baz

<blockquote>
<p>bar</p>
</blockquote>
<p>baz</p>

示例 227

Markdown HTML 效果
> bar
>
baz

<blockquote>
<p>bar</p>
</blockquote>
<p>baz</p>

由于延迟原则,在嵌套块引用后面出现的后续行可以省略前面的>

示例 228

Markdown HTML 效果
> > > foo
bar

<blockquote>
<blockquote>
<blockquote>
<p>foo
bar</p>
</blockquote>
</blockquote>
</blockquote>

示例 229

Markdown HTML 效果
>>> foo
> bar
>>baz

<blockquote>
<blockquote>
<blockquote>
<p>foo
bar
baz</p>
</blockquote>
</blockquote>
</blockquote>

当块引用中包含缩进的代码块时,块引用标记包含了>和一个空格,所以>后需要 五个空格

示例 230

Markdown HTML 效果
>     code

>    not code

<blockquote>
<pre><code>code
</code></pre>
</blockquote>
<blockquote>
<p>not code</p>
</blockquote>