| spec.txt | spec.txt | |||
|---|---|---|---|---|
| --- | --- | |||
| 标题: CommonMark 规范 | 标题: CommonMark 规范 | |||
| 作者 | 作者 | |||
| - John MacFarlane | - John MacFarlane | |||
| 版本: 0.14 | 版本: 0.15 | |||
| 日期: 2014-12-10 | 日期: 2014-12-31 | |||
| 许可: '[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 年开发,他编写了 | |||
| 跳至更改处 第 4440 行 | 跳至更改处 第 4440 行 | |||
| ``` | ``` | |||
| 下面给出的规则涵盖了所有这些模式,同时允许 | 下面给出的规则涵盖了所有这些模式,同时允许 | |||
| 使用不需要回溯的高效解析策略。 | 使用不需要回溯的高效解析策略。 | |||
| 首先,是一些定义。[分隔符序列](@delimiter-run)(delimiter run)是指 | 首先,是一些定义。[分隔符序列](@delimiter-run)(delimiter run)是指 | |||
| 一个或多个 `*` 字符组成的序列,且其前后没有 | 一个或多个 `*` 字符组成的序列,且其前后没有 | |||
| `*` 字符,或者一个或多个 `_` | `*` 字符,或者一个或多个 `_` | |||
| 字符组成的序列,且其前后没有 `_` 字符。 | 字符组成的序列,且其前后没有 `_` 字符。 | |||
| [左侧分隔符序列](@right-facing-delimiter-run)是 | [左侧分隔符序列](@left-flanking-delimiter-run)是 | |||
| 一种 [分隔符序列](#delimiter-run),它 (a) 后跟的不是 [Unicode | 一种 [分隔符序列](#delimiter-run),它 (a) 后跟的不是 [Unicode | |||
| 空白字符](#unicode-whitespace),并且 (b) 后跟的不是 | 空白字符](#unicode-whitespace),并且 (b) 后跟的不是 | |||
| [标点符号](#punctuation-character),或者 | [标点符号](#punctuation-character),或者 | |||
| 前置的是 [Unicode 空白字符](#unicode-whitespace) 或 | 前置的是 [Unicode 空白字符](#unicode-whitespace) 或 | |||
| 一个 [标点符号](#punctuation-character)。 | 一个 [标点符号](#punctuation-character)。 | |||
| [右侧分隔符序列](@left-facing-delimiter-run)是 | [右侧分隔符序列](@right-flanking-delimiter-run)是 | |||
| 一种 [分隔符序列](#delimiter-run),它 (a) 前置的不是 [Unicode | 一种 [分隔符序列](#delimiter-run),它 (a) 前置的不是 [Unicode | |||
| 空白字符](#unicode-whitespace),并且 (b) 前置的不是 | 空白字符](#unicode-whitespace),并且 (b) 前置的不是 | |||
| [标点符号](#punctuation-character),或者 | [标点符号](#punctuation-character),或者 | |||
| 后跟的是 [Unicode 空白字符](#unicode-whitespace) 或 | 后跟的是 [Unicode 空白字符](#unicode-whitespace) 或 | |||
| 一个 [标点符号](#punctuation-character)。 | 一个 [标点符号](#punctuation-character)。 | |||
| 以下是一些定界符序列的示例。 | 以下是一些定界符序列的示例。 | |||
| - 左侧分隔但非右侧分隔 | - 左侧分隔但非右侧分隔 | |||
| 跳至更改处 第 4500 行 | 跳至更改处 第 4500 行 | |||
| 之后来自 Roopesh Chander 的 | 之后来自 Roopesh Chander 的 | |||
| [vfmd](http://www.vfmd.org/vfmd-spec/specification/#procedure-for-identifying-em phasis-tags)。 | [vfmd](http://www.vfmd.org/vfmd-spec/specification/#procedure-for-identifying-em phasis-tags)。 | |||
| vfmd 使用术语“强调指示字符串”而不是“分隔符 | vfmd 使用术语“强调指示字符串”而不是“分隔符 | |||
| 序列”,并且其区分左侧和右侧分隔序列的规则 | 序列”,并且其区分左侧和右侧分隔序列的规则 | |||
| 比此处给出的规则要复杂一些。) | 比此处给出的规则要复杂一些。) | |||
| 以下规则定义了强调和强强调。 | 以下规则定义了强调和强强调。 | |||
| 1. 单个 `*` 字符 [可以开启强调](@can-open-emphasis) | 1. 单个 `*` 字符 [可以开启强调](@can-open-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [左侧分隔符序列](#right-facing-delimiter-run)的一部分。 | [左侧分隔符序列](#left-flanking-delimiter-run)的一部分。 | |||
| 2. 单个 `_` 字符 [可以开启强调](#can-open-emphasis) 当且仅当 | 2. 单个 `_` 字符 [可以开启强调](#can-open-emphasis) 当且仅当 | |||
| 它是 | 它是 | |||
| [左侧分隔符序列](#right-facing-delimiter-run)的一部分 | [左侧分隔符序列](#left-flanking-delimiter-run)的一部分 | |||
| 且其前面不是 ASCII 字母数字字符。 | 且其前面不是 ASCII 字母数字字符。 | |||
| 3. 单个 `*` 字符 [可以关闭强调](@can-close-emphasis) | 3. 单个 `*` 字符 [可以关闭强调](@can-close-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [左侧分隔符序列](#right-facing-delimiter-run)的一部分。 | [右侧分隔符序列](#right-flanking-delimiter-run)的一部分。 | |||
| 4. 单个 `_` 字符 [可以关闭强调](#can-close-emphasis) | 4. 单个 `_` 字符 [可以关闭强调](#can-close-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [左侧分隔符序列](#right-facing-delimiter-run)的一部分。 | [右侧分隔符序列](#right-flanking-delimiter-run)的一部分。 | |||
| 且其后面不是 ASCII 字母数字字符。 | 且其后面不是 ASCII 字母数字字符。 | |||
| 5. 双 `**` [可以开启强强调](@can-open-strong-emphasis) | 5. 双 `**` [可以开启强强调](@can-open-strong-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [左侧分隔符序列](#right-facing-delimiter-run)的一部分。 | [左侧分隔符序列](#left-flanking-delimiter-run)的一部分。 | |||
| 6. 双 `__` [可以开启强强调](#can-open-strong-emphasis) | 6. 双 `__` [可以开启强强调](#can-open-strong-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [左侧分隔符序列](#right-facing-delimiter-run)的一部分 | [左侧分隔符序列](#left-flanking-delimiter-run)的一部分 | |||
| 且其前面不是 ASCII 字母数字字符。 | 且其前面不是 ASCII 字母数字字符。 | |||
| 7. 双 `**` [可以关闭强强调](@can-close-strong-emphasis) | 7. 双 `**` [可以关闭强强调](@can-close-strong-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [右侧分隔符序列](#right-facing-delimiter-run)的一部分。 | [右侧分隔符序列](#right-flanking-delimiter-run)的一部分。 | |||
| 8. 双 `__` [可以关闭强强调](#can-close-strong-emphasis) | 8. 双 `__` [可以关闭强强调](#can-close-strong-emphasis) | |||
| 当且仅当它是 | 当且仅当它是 | |||
| [右侧分隔符序列](#right-facing-delimiter-run)的一部分。 | [右侧分隔符序列](#right-flanking-delimiter-run)的一部分。 | |||
| 且其后面不是 ASCII 字母数字字符。 | 且其后面不是 ASCII 字母数字字符。 | |||
| 9. 强调以一个 [可以开启 | 9. 强调以一个 [可以开启 | |||
| 强调](#can-open-emphasis) 的分隔符开始,并以一个 [可以关闭 | 强调](#can-open-emphasis) 的分隔符开始,并以一个 [可以关闭 | |||
| 强调](#can-close-emphasis) 的分隔符结束,且二者使用相同的 | 强调](#can-close-emphasis) 的分隔符结束,且二者使用相同的 | |||
| 字符(`_` 或 `*`)作为起始分隔符。起始分隔符和 | 字符(`_` 或 `*`)作为起始分隔符。起始分隔符和 | |||
| 结束分隔符之间必须有一个非空的内联序列;这些形成了强调 | 结束分隔符之间必须有一个非空的内联序列;这些形成了强调 | |||
| 内联的内容。 | 内联的内容。 | |||
| 内联。 | 内联。 | |||
| 跳至更改处 第 4601 行 | 跳至更改处 第 4601 行 | |||
| 规则 1 | 规则 1 | |||
| . | . | |||
| *foo bar* | *foo bar* | |||
| . | . | |||
| <p><em>foo bar</em></p> | <p><em>foo bar</em></p> | |||
| . | . | |||
| 这不是强调,因为起始的 `*` 后跟的是 | 这不是强调,因为起始的 `*` 后跟的是 | |||
| 空白字符,因此不是 [左侧分隔符 | 空白字符,因此不是 [左侧分隔符 | |||
| 序列](#right-facing-delimiter-run) 的一部分 | 序列](#left-flanking-delimiter-run) 的一部分 | |||
| . | . | |||
| a * foo bar* | a * foo bar* | |||
| . | . | |||
| <p>a * foo bar*</p> | <p>a * foo bar*</p> | |||
| . | . | |||
| 这不是强调,因为起始的 `*` 前面是 | 这不是强调,因为起始的 `*` 前面是 | |||
| 字母数字,后面是标点符号,因此 | 字母数字,后面是标点符号,因此 | |||
| 不是 [左侧分隔符序列](#right-facing-delimiter-run) 的一部分 | 不是 [左侧分隔符序列](#left-flanking-delimiter-run) 的一部分 | |||
| . | . | |||
| a*"foo"* | a*"foo"* | |||
| . | . | |||
| <p>a*"foo"*</p> | <p>a*"foo"*</p> | |||
| . | . | |||
| Unicode 不换行空格也计为空白字符。 | Unicode 不换行空格也计为空白字符。 | |||
| . | . | |||
| 跳至更改处 第 4712 行 | 跳至更改处 第 4712 行 | |||
| . | . | |||
| *foo bar * | *foo bar * | |||
| . | . | |||
| <p>*foo bar *</p> | <p>*foo bar *</p> | |||
| . | . | |||
| 这不是强调,因为第二个 `*` | 这不是强调,因为第二个 `*` | |||
| 前面是标点符号,后面是字母数字 | 前面是标点符号,后面是字母数字 | |||
| (因此它不是 [右侧分隔符 | (因此它不是 [右侧分隔符 | |||
| 序列](#left-facing-delimiter-run) 的一部分) | 序列](#right-flanking-delimiter-run) 的一部分) | |||
| . | . | |||
| *(*foo) | *(*foo) | |||
| . | . | |||
| <p>*(*foo)</p> | <p>*(*foo)</p> | |||
| . | . | |||
| 这一限制的意义更容易通过 | 这一限制的意义更容易通过 | |||
| 这个例子来理解 | 这个例子来理解 | |||
| 跳至更改处 第 4804 行 | 跳至更改处 第 4804 行 | |||
| 后跟空白字符 | 后跟空白字符 | |||
| . | . | |||
| ** foo bar** | ** foo bar** | |||
| . | . | |||
| <p>** foo bar**</p> | <p>** foo bar**</p> | |||
| . | . | |||
| 这不是强强调,因为起始的 `**` 前面是 | 这不是强强调,因为起始的 `**` 前面是 | |||
| 字母数字,后面是标点符号,因此 | 字母数字,后面是标点符号,因此 | |||
| 不是 [左侧分隔符序列](#right-facing-delimiter-run) 的一部分 | 不是 [左侧分隔符序列](#left-flanking-delimiter-run) 的一部分 | |||
| . | . | |||
| a**"foo"** | a**"foo"** | |||
| . | . | |||
| <p>a**"foo"**</p> | <p>a**"foo"**</p> | |||
| . | . | |||
| 词内强强调使用 `**` 是允许的 | 词内强强调使用 `**` 是允许的 | |||
| . | . | |||
| 更改结束。15 个更改块。 | ||||
| 16 行已更改或删除 | 16 行已更改或添加 | |||
此 HTML 差异由 rfcdiff 1.41 生成。最新版本可从 http://tools.ietf.org/tools/rfcdiff/ 获取 | ||||