spec.txt   spec.txt 
--- ---
标题: CommonMark 规范 标题: CommonMark 规范
作者: John MacFarlane 作者: John MacFarlane
版本: 0.24 版本: 0.25
日期: '2016-01-12' 日期: '2016-03-24'
许可: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' 许可: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)'
... ...
# 引言 # 引言
## 什么是 Markdown? ## 什么是 Markdown?
Markdown 是一种用于编写结构化文档的纯文本格式, Markdown 是一种用于编写结构化文档的纯文本格式,
基于在电子邮件和 usenet 帖子中用于表示格式的约定。 基于在电子邮件和 usenet 帖子中用于表示格式的约定。
它由 John Gruber 于 2004 年开发,他编写了 它由 John Gruber 于 2004 年开发,他编写了
跳转至修改处 第 302 行 跳转至修改处 第 302 行
. .
<ul> <ul>
<li> <li>
<p>foo</p> <p>foo</p>
<p>bar</p> <p>bar</p>
</li> </li>
</ul> </ul>
```````````````````````````````` ````````````````````````````````
```````````````````````````````` 示例 ```````````````````````````````` 示例
>→foo→bar - foo
→→bar
.
<ul>
<li>
<p>foo</p>
<pre><code> bar
</code></pre>
</li>
</ul>
````````````````````````````````
```````````````````````````````` 示例
>→→foo
. .
<blockquote> <blockquote>
<p>foo→bar</p> <pre><code> foo
</code></pre>
</blockquote> </blockquote>
```````````````````````````````` ````````````````````````````````
```````````````````````````````` 示例 ```````````````````````````````` 示例
-→→foo
.
<ul>
<li>
<pre><code> foo
</code></pre>
</li>
</ul>
````````````````````````````````
```````````````````````````````` 示例
foo foo
→bar →bar
. .
<pre><code>foo <pre><code>foo
bar bar
</code></pre> </code></pre>
```````````````````````````````` ````````````````````````````````
```````````````````````````````` 示例
- foo
- bar
→ - baz
.
<ul>
<li>foo
<ul>
<li>bar
<ul>
<li>baz</li>
</ul>
</li>
</ul>
</li>
</ul>
````````````````````````````````
## 不安全字符 ## 不安全字符
出于安全考虑,Unicode 字符 `U+0000` 必须被替换 出于安全考虑,Unicode 字符 `U+0000` 必须被替换
为替换字符 (`U+FFFD`)。 为替换字符 (`U+FFFD`)。
# 区块与行内元素 # 区块与行内元素
我们可以将文档视为一系列的 我们可以将文档视为一系列的
[区块](@)---即段落、区块引用、 [区块](@)---即段落、区块引用、
列表、标题、分割线和代码块等结构元素。某些区块(例如 列表、标题、分割线和代码块等结构元素。某些区块(例如
跳转至修改处 第 1137 行 跳转至修改处 第 1181 行
baz baz
. .
<p>Foo <p>Foo
bar</p> bar</p>
<hr /> <hr />
<p>baz</p> <p>baz</p>
```````````````````````````````` ````````````````````````````````
或使用无法计入 [Setext 标题 或使用无法计入 [Setext 标题
下划线] 的分割线,例如 下划线],例如
```````````````````````````````` 示例 ```````````````````````````````` 示例
Foo Foo
bar bar
* * * * * *
baz baz
. .
<p>Foo <p>Foo
bar</p> bar</p>
<hr /> <hr />
跳转至修改处 第 8284 行 跳转至修改处 第 8328 行
如果我们遇到一个新的区块起始,我们会关闭在步骤 1 中 如果我们遇到一个新的区块起始,我们会关闭在步骤 1 中
未匹配的任何区块,然后再将新区块创建为最后一个 未匹配的任何区块,然后再将新区块创建为最后一个
匹配区块的子级。 匹配区块的子级。
3. 最后,我们查看行中剩余的部分(在区块 3. 最后,我们查看行中剩余的部分(在区块
标记如 `>`、列表标记和缩进被消耗之后)。 标记如 `>`、列表标记和缩进被消耗之后)。
这些文本可以合并到最后一个开放的 这些文本可以合并到最后一个开放的
区块中(段落、代码块、标题或原始 HTML)。 区块中(段落、代码块、标题或原始 HTML)。
当我们看到段落的一行是 Setext 标题行 时, 当我们看到段落的一行是 Setext 标题行 时,
便会形成 Setext 标题。 [Setext 标题下划线]
当段落关闭时,会检测引用链接定义; 当段落关闭时,会检测引用链接定义;
解析已累积的文本行,查看它们是否以 解析已累积的文本行,查看它们是否以
一个或多个引用链接定义开头。任何剩余部分都将成为 一个或多个引用链接定义开头。任何剩余部分都将成为
普通段落。 普通段落。
我们可以通过观察上述树状结构是如何由 我们可以通过观察上述树状结构是如何由
四行 Markdown 生成的来了解其工作原理 四行 Markdown 生成的来了解其工作原理
``` markdown ``` markdown
 变更结束。共 7 个变更块。 
6 行已更改或删除 50 行已更改或添加

此 HTML 差异由 rfcdiff 1.41 生成。最新版本可从 http://tools.ietf.org/tools/rfcdiff/ 获取