| spec.txt | spec.txt | |||
|---|---|---|---|---|
| --- | --- | |||
| 标题: CommonMark 规范 | 标题: CommonMark 规范 | |||
| 作者: John MacFarlane | 作者: John MacFarlane | |||
| 版本: 0.21 | 版本: 0.22 | |||
| 日期: 2015-07-14 | 日期: 2015-08-23 | |||
| 许可: '[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 年开发,他编写了 | |||
| 跳转至第 207 行的变更 | 跳转至第 207 行的变更 | |||
| 在示例中,使用 `→` 字符来表示制表符(tab)。 | 在示例中,使用 `→` 字符来表示制表符(tab)。 | |||
| # 序言 | # 序言 | |||
| ## 字符与行 | ## 字符与行 | |||
| 任何[字符]序列都是有效的 CommonMark | 任何[字符]序列都是有效的 CommonMark | |||
| 文档。 | 文档。 | |||
| 一个 [字符](@character) 是一个 unicode 码位(code point)。 | 一个 [字符](@character) 是一个 Unicode 码位。尽管有些 | |||
| 码位(例如,组合变音符号)在直觉上并不对应于 | ||||
| 字符,但就本规范而言,所有码位都算作字符。 | ||||
| for purposes of this spec. | ||||
| 本规范未指定编码;它将行视为由 | 本规范未指定编码;它将行视为由 | |||
| 字符组成,而非字节。符合规范的解析器可能限于 | [字符]组成,而非字节。符合规范的解析器可能限于 | |||
| 特定的编码。 | 特定的编码。 | |||
| 一个 [行](@line) 是零个或多个 [字符] 的序列, | 一个 [行](@line) 是零个或多个 [字符] 的序列, | |||
| 不包含换行符(`U+000A`)或回车符(`U+000D`), | ||||
| 并以 [行结束符] 或文件结束符结尾。 | 并以 [行结束符] 或文件结束符结尾。 | |||
| 一个 [行结束符](@line-ending) 是一个换行符(`U+000A`)、回车符 | 一个 [行结束符](@line-ending) 是一个换行符(`U+000A`)、一个回车符 | |||
| (`U+000D`),或回车符+换行符。 | (`U+000D`)且后面没有换行符,或一个回车符和 | |||
| 随后的换行符。 | ||||
| 不包含任何字符的行,或仅包含空格 | 不包含任何字符的行,或仅包含空格 | |||
| (`U+0020`)或制表符(`U+0009`)的行,称为 [空行](@blank-line)。 | (`U+0020`)或制表符(`U+0009`)的行,称为 [空行](@blank-line)。 | |||
| 本规范将使用以下字符类定义: | 本规范将使用以下字符类定义: | |||
| 一个 [空白字符](@whitespace-character) 是空格 | 一个 [空白字符](@whitespace-character) 是空格 | |||
| (`U+0020`)、制表符(`U+0009`)、换行符(`U+000A`)、行制表符(`U+000B`)、 | (`U+0020`)、制表符(`U+0009`)、换行符(`U+000A`)、行制表符(`U+000B`)、 | |||
| 换页符(`U+000C`)或回车符(`U+000D`)。 | 换页符(`U+000C`)或回车符(`U+000D`)。 | |||
| [空白](@whitespace) 是一个或多个 [空白字符] 的序列。 | [空白](@whitespace) 是一个或多个 [空白字符] 的序列。 | |||
| 字符]s。 | 字符]s。 | |||
| 一个 [unicode 空白字符](@unicode-whitespace-character) 是 | 一个 [Unicode 空白字符](@unicode-whitespace-character) 是 | |||
| 任何 unicode `Zs` 类中的码位,或制表符(`U+0009`)、 | 任何 Unicode `Zs` 类中的码位,或制表符(`U+0009`)、 | |||
| 回车符(`U+000D`)、换行符(`U+000A`)或换页符 | 回车符(`U+000D`)、换行符(`U+000A`)或换页符 | |||
| (`U+000C`)。 | (`U+000C`)。 | |||
| [Unicode 空白](@unicode-whitespace) 是一个或多个 | [Unicode 空白](@unicode-whitespace) 是一个或多个 | |||
| [unicode 空白字符] 的序列。 | [Unicode 空白字符] 的序列。 | |||
| 一个 [空格](@space) 是 `U+0020`。 | 一个 [空格](@space) 是 `U+0020`。 | |||
| 一个 [非空白字符](@non-space-character) 是任何不是 | 一个 [非空白字符](@non-whitespace-character) 是任何不是 | |||
| [空白字符] 的字符。 | [空白字符] 的字符。 | |||
| 一个 [ASCII 标点字符](@ascii-punctuation-character) | 一个 [ASCII 标点字符](@ascii-punctuation-character) | |||
| 是 `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`, | 是 `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`, | |||
| `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `<`, `=`, `>`, `?`, `@`, | `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `<`, `=`, `>`, `?`, `@`, | |||
| `[`, `\`, `]`, `^`, `_`, `` ` ``, `{`, `|`, `}`, 或 `~`。 | `[`, `\`, `]`, `^`, `_`, `` ` ``, `{`, `|`, `}`, 或 `~`。 | |||
| 一个 [标点字符](@punctuation-character) 是一个 [ASCII | 一个 [标点字符](@punctuation-character) 是一个 [ASCII | |||
| 标点字符] 或任何在 | 标点字符] 或任何在 | |||
| unicode 类 `Pc`、`Pd`、`Pe`、`Pf`、`Pi`、`Po` 或 `Ps` 中的字符。 | Unicode 类 `Pc`、`Pd`、`Pe`、`Pf`、`Pi`、`Po` 或 `Ps` 中的字符。 | |||
| ## 制表符 | ## 制表符 | |||
| 行中的制表符不会扩展为 [空格][space]。但是, | 行中的制表符不会扩展为 [空格][space]。但是, | |||
| 在缩进对文档结构有意义的上下文中, | 在缩进对文档结构有意义的上下文中, | |||
| 制表符的行为就像它们被替换为 | 制表符的行为就像它们被替换为 | |||
| 以 4 个字符为制表位(tab stop)的空格一样。 | 以 4 个字符为制表位(tab stop)的空格一样。 | |||
| . | . | |||
| →foo→baz→→bim | →foo→baz→→bim | |||
| 跳转至第 303 行的变更 | 跳转至第 309 行的变更 | |||
| . | . | |||
| . | . | |||
| >→foo→bar | >→foo→bar | |||
| . | . | |||
| <blockquote> | <blockquote> | |||
| <p>foo→bar</p> | <p>foo→bar</p> | |||
| </blockquote> | </blockquote> | |||
| . | . | |||
| . | ||||
| foo | ||||
| →bar | ||||
| . | ||||
| <pre><code>foo | ||||
| bar | ||||
| </code></pre> | ||||
| . | ||||
| ## 不安全字符 | ## 不安全字符 | |||
| 出于安全考虑,Unicode 字符 `U+0000` 必须被替换 | 出于安全考虑,Unicode 字符 `U+0000` 必须被替换 | |||
| 使用替换字符(`U+FFFD`)。 | 使用替换字符(`U+FFFD`)。 | |||
| # 区块与行内元素 | # 区块与行内元素 | |||
| 我们可以将文档视为一系列的 | 我们可以将文档视为一系列的 | |||
| [块](@block)——结构元素,如段落、块 | [块](@block)——结构元素,如段落、块 | |||
| 引用、列表、标题、分割线和代码块。某些块(如 | 引用、列表、标题、分割线和代码块。某些块(如 | |||
| 跳转至第 564 行的变更 | 跳转至第 579 行的变更 | |||
| <hr /> | <hr /> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| . | . | |||
| ## ATX 标题 | ## ATX 标题 | |||
| 一个 [ATX 标题](@atx-header) | 一个 [ATX 标题](@atx-header) | |||
| 由一串字符组成,被解析为行内内容,位于 | 由一串字符组成,被解析为行内内容,位于 | |||
| 起始的 1--6 个未转义的 `#` 字符和一个可选的 | 起始的 1--6 个未转义的 `#` 字符和一个可选的 | |||
| 结尾的任意数量的 `#` 字符之间。起始序列 | 结尾的任意数量的 未转义的 `#` 字符。 | |||
| 的 `#` 字符后面不能直接跟一个 | 的 `#` 字符后面不能直接跟一个 | |||
| [非空白字符]。可选的结尾 `#` 序列必须 | [非空白字符]。可选的结尾 `#` 序列必须 | |||
| 前面有一个 [空格],并且后面只能跟空格。起始的 | 前面有一个 [空格],并且后面只能跟空格。起始的 | |||
| `#` 字符可以缩进 0-3 个空格。标题的原始内容 | `#` 字符可以缩进 0-3 个空格。标题的原始内容 | |||
| 在作为行内内容解析之前,会去除前导和尾随空格。 | 在作为行内内容解析之前,会去除前导和尾随空格。 | |||
| 标题级别等于起始序列中 `#` 字符的数量。 | 标题级别等于起始序列中 `#` 字符的数量。 | |||
| characters in the opening sequence. | characters in the opening sequence. | |||
| 简单标题 | 简单标题 | |||
| . | . | |||
| 跳转至第 697 行的变更 | 跳转至第 712 行的变更 | |||
| . | . | |||
| 结束序列后允许有空格 | 结束序列后允许有空格 | |||
| . | . | |||
| ### foo ### | ### foo ### | |||
| . | . | |||
| <h3>foo</h3> | <h3>foo</h3> | |||
| . | . | |||
| 一串 `#` 字符,后面跟着 一个 | 一串 `#` 字符,后面跟着 除 [空格] 之外的任何内容 | |||
| [非空白字符] | ||||
| 不是结尾序列,而是计作标题内容的一部分。 | 不是结尾序列,而是计作标题内容的一部分。 | |||
| header | header | |||
| . | . | |||
| ### foo ### b | ### foo ### b | |||
| . | . | |||
| <h3>foo ### b</h3> | <h3>foo ### b</h3> | |||
| . | . | |||
| 结束序列前必须有一个空格 | 结束序列前必须有一个空格 | |||
| 跳转至第 1637 行的变更 | 跳转至第 1651 行的变更 | |||
| 5. **开始条件:** 行以字符串 | 5. **开始条件:** 行以字符串 | |||
| `<![CDATA[` 开头。\ | `<![CDATA[` 开头。\ | |||
| **结束条件:** 行包含字符串 `]]>`。 | **结束条件:** 行包含字符串 `]]>`。 | |||
| 6. **开始条件:** 行以字符串 `<` 或 `</` 开头, | 6. **开始条件:** 行以字符串 `<` 或 `</` 开头, | |||
| 后跟以下字符串之一(不区分大小写):`address`、 | 后跟以下字符串之一(不区分大小写):`address`、 | |||
| `article`、`aside`、`base`、`basefont`、`blockquote`、`body`、 | `article`、`aside`、`base`、`basefont`、`blockquote`、`body`、 | |||
| `caption`、`center`、`col`、`colgroup`、`dd`、`details`、`dialog`、 | `caption`、`center`、`col`、`colgroup`、`dd`、`details`、`dialog`、 | |||
| `dir`、`div`、`dl`、`dt`、`fieldset`、`figcaption`、`figure`、 | `dir`、`div`、`dl`、`dt`、`fieldset`、`figcaption`、`figure`、 | |||
| `footer`、`form`、`frame`、`frameset`、`h1`、`head`、`header`、`hr`、 | `footer`、`form`、`frame`、`frameset`、`h1`、`head`、`header`、`hr`、 | |||
| `html`、`legend`、`li`、`link`、`main`、`menu`、`menuitem`、`meta`、 | `html`、`iframe`、`legend`、`li`、`link`、`main`、`menu`、`menuitem`、 | |||
| `nav`、`noframes`、`ol`、`optgroup`、`option`、`p`、`param`、`pre`、 | `meta`、`nav`、`noframes`、`ol`、`optgroup`、`option`、`p`、`param`、 | |||
| `section`、`source`、`title`、`summary`、`table`、`tbody`、`td`、 | `section`、`source`、`summary`、`table`、`tbody`、`td`、 | |||
| `tfoot`、`th`、`thead`、`title`、`tr`、`track`、`ul`,后跟 | `tfoot`、`th`、`thead`、`title`、`tr`、`track`、`ul`,后跟 | |||
| [空白]、行尾、字符串 `>` 或 | [空白]、行尾、字符串 `>` 或 | |||
| 字符串 `/>`。\ | 字符串 `/>`。\ | |||
| **结束条件:** 行后紧跟一个 [空行]。 | **结束条件:** 行后紧跟一个 [空行]。 | |||
| 7. **开始条件:** 行以 一个 [开始标签] 开头 | 7. **开始条件:** 行以 一个完整的 [开始标签] 开头 | |||
| (带有任何 [标签 名称])后跟仅 [空白] 或行尾 | 或 [结束标签](带有任何 除 `script`、`style` 或 `pre` 之外的 [标签名称]) | |||
| 后跟仅 [空白] | 或行尾。\ | |||
| All types of [HTML blocks] except type 7 may interrupt | ||||
| **结束条件:** 行后紧跟一个 [空行]。 | **结束条件:** 行后紧跟一个 [空行]。 | |||
| 除第 7 类之外的所有 [HTML 块] 类型都可以中断 | 除第 7 类之外的所有 [HTML 块] 类型都可以中断 | |||
| 一个段落。第 7 类块不能中断段落。 | 一个段落。第 7 类块不能中断段落。 | |||
| (这种限制ed旨在防止对包裹段落内的长标签 | (这种限制ion旨在防止对包裹段落内的长标签 | |||
| 进行意外的 HTML 块起始解释。) | 进行意外的 HTML 块起始解释。) | |||
| 下面是一些简单的例子。以下是第 6 类的一些基本 HTML 块 | 下面是一些简单的例子。以下是第 6 类的一些基本 HTML 块 | |||
| of type 6 | of type 6 | |||
| . | . | |||
| <table> | <table> | |||
| <tr> | <tr> | |||
| <td> | <td> | |||
| hi | hi | |||
| 跳转至第 1851 行的变更 | 跳转至第 1866 行的变更 | |||
| . | . | |||
| <i class="foo"> | <i class="foo"> | |||
| *bar* | *bar* | |||
| </i> | </i> | |||
| . | . | |||
| <i class="foo"> | <i class="foo"> | |||
| *bar* | *bar* | |||
| </i> | </i> | |||
| . | . | |||
| . | ||||
| </ins> | ||||
| *bar* | ||||
| . | ||||
| </ins> | ||||
| *bar* | ||||
| . | ||||
| 这些规则旨在允许我们处理既可以作为块级元素 | 这些规则旨在允许我们处理既可以作为块级元素 | |||
| 也可以作为行内级元素标签的标签。 | 也可以作为行内级元素标签的标签。 | |||
| `<del>` 标签是一个很好的例子。我们可以用三种不同的方式 | `<del>` 标签是一个很好的例子。我们可以用三种不同的方式 | |||
| 用 `<del>` 标签包裹内容。在这种情况下,我们得到一个原始的 | 用 `<del>` 标签包裹内容。在这种情况下,我们得到一个原始的 | |||
| HTML 块,因为 `<del>` 标签独占一行。 | HTML 块,因为 `<del>` 标签独占一行。 | |||
| . | . | |||
| <del> | <del> | |||
| *foo* | *foo* | |||
| </del> | </del> | |||
| 跳转至第 2814 行的变更 | 跳转至第 2837 行的变更 | |||
| > foo | > foo | |||
| . | . | |||
| <blockquote> | <blockquote> | |||
| <p>bar | <p>bar | |||
| baz | baz | |||
| foo</p> | foo</p> | |||
| </blockquote> | </blockquote> | |||
| . | . | |||
| 惰性原则仅适用于那些如果在前面加上 `>` 本该是段落 | 惰性原则仅适用于那些如果在前面加上 `>` 本该是段落 | |||
| 延续的行。例如, | 延续的行(如果前面加上 [块引用标记])。例如, | |||
| `>` 在第二行中不能被省略。 | 第二行中的 `> ` 不能被省略。 | |||
| ``` markdown | ``` markdown | |||
| > foo | > foo | |||
| > --- | > --- | |||
| ``` | ``` | |||
| 否则会改变含义 | 否则会改变含义 | |||
| . | . | |||
| > foo | > foo | |||
| --- | --- | |||
| . | . | |||
| <blockquote> | <blockquote> | |||
| <p>foo</p> | <p>foo</p> | |||
| </blockquote> | </blockquote> | |||
| <hr /> | <hr /> | |||
| . | . | |||
| 同样,如果我们省略了第二行中的 `>`, | 同样,如果我们省略了第二行中的 `> `, | |||
| ``` markdown | ``` markdown | |||
| > - foo | > - foo | |||
| > - bar | > - bar | |||
| ``` | ``` | |||
| 那么引用块在第一行之后结束 | 那么引用块在第一行之后结束 | |||
| . | . | |||
| > - foo | > - foo | |||
| 跳转至第 2857 行的变更 | 跳转至第 2880 行的变更 | |||
| <blockquote> | <blockquote> | |||
| <ul> | <ul> | |||
| <li>foo</li> | <li>foo</li> | |||
| </ul> | </ul> | |||
| </blockquote> | </blockquote> | |||
| <ul> | <ul> | |||
| <li>bar</li> | <li>bar</li> | |||
| </ul> | </ul> | |||
| . | . | |||
| 出于同样的原因,我们不能省略前面的 `>` | 出于同样的原因,我们不能省略前面的 `> ` | |||
| 缩进代码块或围栏代码块的后续行。 | 缩进代码块或围栏代码块的后续行。 | |||
| . | . | |||
| > foo | > foo | |||
| bar | bar | |||
| . | . | |||
| <blockquote> | <blockquote> | |||
| <pre><code>foo | <pre><code>foo | |||
| </code></pre> | </code></pre> | |||
| </blockquote> | </blockquote> | |||
| 跳转至第 2884 行的变更 | 跳转至第 2907 行的变更 | |||
| foo | foo | |||
| ``` | ``` | |||
| . | . | |||
| <blockquote> | <blockquote> | |||
| <pre><code></code></pre> | <pre><code></code></pre> | |||
| </blockquote> | </blockquote> | |||
| <p>foo</p> | <p>foo</p> | |||
| <pre><code></code></pre> | <pre><code></code></pre> | |||
| . | . | |||
| 注意,在以下情况下,我们有一个段落 | ||||
| 延续行。 | ||||
| . | ||||
| > foo | ||||
| - bar | ||||
| . | ||||
| <blockquote> | ||||
| <p>foo | ||||
| - bar</p> | ||||
| </blockquote> | ||||
| . | ||||
| 为了理解原因,请注意:在 | ||||
| ```markdown | ||||
| > foo | ||||
| > - bar | ||||
| ``` | ||||
| `- bar` 缩进太深,无法开始列表,且不能 | ||||
| 作为缩进代码块,因为缩进代码块不能 | ||||
| 中断段落,所以它是一个 [段落延续行]。 | ||||
| 引用块可以为空 | 引用块可以为空 | |||
| . | . | |||
| > | > | |||
| . | . | |||
| <blockquote> | <blockquote> | |||
| </blockquote> | </blockquote> | |||
| . | . | |||
| . | . | |||
| 跳转至第 3581 行的变更 | 跳转至第 3628 行的变更 | |||
| <pre><code>bar | <pre><code>bar | |||
| </code></pre> | </code></pre> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <pre><code>baz | <pre><code>baz | |||
| </code></pre> | </code></pre> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| . | . | |||
| 列表项最多可以以一个空行开始。 | ||||
| 在以下示例中,`foo` 不是列表项的一部分。 | ||||
| item | ||||
| . | ||||
| - | ||||
| foo | ||||
| . | ||||
| <ul> | ||||
| <li></li> | ||||
| </ul> | ||||
| <p>foo</p> | ||||
| . | ||||
| 这是一个空的无序列表项 | 这是一个空的无序列表项 | |||
| . | . | |||
| - foo | - foo | |||
| - | - | |||
| - bar | - bar | |||
| . | . | |||
| <ul> | <ul> | |||
| <li>foo</li> | <li>foo</li> | |||
| <li></li> | <li></li> | |||
| 跳转至第 4814 行的变更 | 跳转至第 4876 行的变更 | |||
| ``` | ``` | |||
| . | . | |||
| <pre><code class="language-foo+bar">foo | <pre><code class="language-foo+bar">foo | |||
| </code></pre> | </code></pre> | |||
| . | . | |||
| ## 实体 | ## 实体 | |||
| 为了使本标准尽可能与 HTML 无关,所有 | 为了使本标准尽可能与 HTML 无关,所有 | |||
| 有效的 HTML 实体(代码块和代码 span 除外) | 有效的 HTML 实体(代码块和代码 span 除外) | |||
| 在存储到 AST 之前,都会被识别并转换为 unicode 字符。 | 在存储到 AST 之前,都会被识别并转换为 Unicode 字符。 | |||
| 这意味着渲染到非 HTML 格式的渲染器不需要感知 HTML 实体。 | 这意味着渲染到非 HTML 格式的渲染器不需要感知 HTML 实体。 | |||
| HTML 渲染器可以选择将 | HTML 渲染器可以选择将 | |||
| unicode 字符转义为实体,或保持原样。(但是, | Unicode 字符转义为实体,或保持原样。(但是, | |||
| `"`, `&`, `<` 和 `>` 必须始终作为实体渲染。) | `"`, `&`, `<` 和 `>` 必须始终作为实体渲染。) | |||
| [命名实体](@name-entities) 由 `&` | [命名实体](@name-entities) 由 `&` + 任何有效的 HTML5 实体名称 + `;` 组成。 | |||
| + 任何有效的 HTML5 实体名称 + `;`。该 | [以下文档](https://html.whatwg.cn/multipage/entities.json) | |||
| 被用作有效实体名称及其对应码位的权威来源。 | 被用作有效实体名称及其对应码位的权威来源。 | |||
| 其 | 其 | |||
| 对应码位。 | 对应代码 位。 | |||
| . | . | |||
| & © Æ Ď | & © Æ Ď | |||
| ¾ ℋ ⅆ | ¾ ℋ ⅆ | |||
| ∲ ≧̸ | ∲ ≧̸ | |||
| . | . | |||
| <p> & © Æ Ď | <p> & © Æ Ď | |||
| ¾ ℋ ⅆ | ¾ ℋ ⅆ | |||
| ∲ ≧̸</p> | ∲ ≧̸</p> | |||
| . | . | |||
| [十进制实体](@decimal-entities) | [十进制实体](@decimal-entities) | |||
| 由 `&#` + 1-8 个阿拉伯数字字符串 + `;` 组成。同样,这些 | 由 `&#` + 1-8 个阿拉伯数字字符串 + `;` 组成。同样,这些 | |||
| 实体需要被识别并转换为其对应的 | 实体需要被识别并转换为其对应的 | |||
| unicode 码位。 无效的 unicode 码位 将被替换为 | Unicode 码位。 无效的 Unicode 码位 将被替换为 | |||
| “未知 码位” 字符(`U+FFFD`)。出于安全原因, | “未知 码位” 字符(`U+FFFD`)。出于安全原因, | |||
| 码位 `U+0000` 也将被替换为 `U+FFFD`。 | 码位 `U+0000` 也将被替换为 `U+FFFD`。 | |||
| . | . | |||
| # Ӓ Ϡ � � | # Ӓ Ϡ � � | |||
| . | . | |||
| <p># Ӓ Ϡ </p> | <p># Ӓ Ϡ </p> | |||
| . | . | |||
| [十六进制实体](@hexadecimal-entities) | [十六进制实体](@hexadecimal-entities) 由 `&#` + `X` 或 `x` | |||
| + 1-8 个十六进制数字字符串 + `;` 组成。它们也 | 会被解析并转换为 AST 中对应的 | |||
| Unicode 码位。 | 会被解析并转换为 AST 中对应的 Unicode 码位。 | |||
| unicode 码位 | AST。 | |||
| . | . | |||
| " ആ ಫ | " ആ ಫ | |||
| . | . | |||
| <p>" ആ ಫ</p> | <p>" ആ ಫ</p> | |||
| . | . | |||
| 这里是一些非实体引用 | 这里是一些非实体引用 | |||
| . | . | |||
| 跳转至第 5144 行的变更 | 跳转至第 5206 行的变更 | |||
| 下面给出的规则涵盖了所有这些模式,同时允许 | 下面给出的规则涵盖了所有这些模式,同时允许 | |||
| 使用不需要回溯的高效解析策略。 | 使用不需要回溯的高效解析策略。 | |||
| 首先,是一些定义。[分隔符序列](@delimiter-run)(delimiter run)是指 | 首先,是一些定义。[分隔符序列](@delimiter-run)(delimiter run)是指 | |||
| 一个或多个 `*` 字符组成的序列,且其前后没有 | 一个或多个 `*` 字符组成的序列,且其前后没有 | |||
| `*` 字符,或者一个或多个 `_` | `*` 字符,或者一个或多个 `_` | |||
| 字符组成的序列,且其前后没有 `_` 字符。 | 字符组成的序列,且其前后没有 `_` 字符。 | |||
| 一个 [左侧分隔符运行](@left-flanking-delimiter-run) 是 | 一个 [左侧分隔符运行](@left-flanking-delimiter-run) 是 | |||
| 一个 [分隔符运行],其 (a) 后面没有 [unicode 空白], | 一个 [分隔符运行],其 (a) 后面没有 [Unicode 空白], | |||
| 并且 (b) 要么后面没有 [标点字符],或者 | 并且 (b) 要么后面没有 [标点字符],或者 | |||
| 前面有 [unicode 空白] 或 [标点字符]。 | 前面有 [Unicode 空白] 或 [标点字符]。 | |||
| 就此定义而言,行的开头和结尾 | 就此定义而言,行的开头和结尾 | |||
| 计作 unicode 空白。 | 计作 Unicode 空白。 | |||
| 一个 [右侧分隔符运行](@right-flanking-delimiter-run) 是 | 一个 [右侧分隔符运行](@right-flanking-delimiter-run) 是 | |||
| 一个 [分隔符运行],其 (a) 前面没有 [unicode 空白], | 一个 [分隔符运行],其 (a) 前面没有 [Unicode 空白], | |||
| 并且 (b) 要么前面没有 [标点字符],或者 | 并且 (b) 要么前面没有 [标点字符],或者 | |||
| 后面有 [unicode 空白] 或 [标点字符]。 | 后面有 [Unicode 空白] 或 [标点字符]。 | |||
| 就此定义而言,行的开头和结尾 | 就此定义而言,行的开头和结尾 | |||
| 计作 unicode 空白。 | 计作 Unicode 空白。 | |||
| 以下是一些定界符序列的示例。 | 以下是一些定界符序列的示例。 | |||
| - 左侧分隔但非右侧分隔 | - 左侧分隔但非右侧分隔 | |||
| ``` | ``` | |||
| ***abc | ***abc | |||
| _abc | _abc | |||
| **"abc" | **"abc" | |||
| _"abc" | _"abc" | |||
| 跳转至第 6468 行的变更 | 跳转至第 6530 行的变更 | |||
| just a backslash | just a backslash | |||
| . | . | |||
| [link](foo\bar) | [link](foo\bar) | |||
| . | . | |||
| <p><a href="foo%5Cbar">link</a></p> | <p><a href="foo%5Cbar">link</a></p> | |||
| . | . | |||
| URL 转义在目的地内部应保持原样,因为所有 | URL 转义在目的地内部应保持原样,因为所有 | |||
| URL 转义字符也是有效的 URL 字符。目的地中的 HTML 实体 | URL 转义字符也是有效的 URL 字符。目的地中的 HTML 实体 | |||
| 将被解析为对应的 unicode | 将被解析为对应的 Unicode | |||
| 码位,照常处理,并在写入 HTML 时选择性地进行 URL 转义。 | 码位,照常处理,并在写入 HTML 时选择性地进行 URL 转义。 | |||
| . | . | |||
| [link](foo%20bä) | [link](foo%20bä) | |||
| . | . | |||
| <p><a href="foo%20b%C3%A4">link</a></p> | <p><a href="foo%20b%C3%A4">link</a></p> | |||
| . | . | |||
| 注意,由于标题通常可以被解析为目的地, | 注意,由于标题通常可以被解析为目的地, | |||
| 如果你尝试省略目的地而保留标题,你会 | 如果你尝试省略目的地而保留标题,你会 | |||
| 得到意想不到的结果。 | 得到意想不到的结果。 | |||
| 跳转至第 6678 行的变更 | 跳转至第 6740 行的变更 | |||
| 一个 [链接标签](@link-label) 以左方括号(`[`)开始, | 一个 [链接标签](@link-label) 以左方括号(`[`)开始, | |||
| 并以第一个未被反斜杠转义的右方括号(`]`)结束。 | 并以第一个未被反斜杠转义的右方括号(`]`)结束。 | |||
| 在这些方括号之间必须至少有一个 [非空白字符]。 | 在这些方括号之间必须至少有一个 [非空白字符]。 | |||
| 未转义的方括号字符在 [链接标签] 中是不允许的。 | 未转义的方括号字符在 [链接标签] 中是不允许的。 | |||
| 一个链接标签在方括号内最多可以有 999 个字符。 | 一个链接标签在方括号内最多可以有 999 个字符。 | |||
| characters inside the square brackets. | characters inside the square brackets. | |||
| 当且仅当一个标签的归一化形式相等时,它才 [匹配](@matches) | 当且仅当一个标签的归一化形式相等时,它才 [匹配](@matches) | |||
| 另一个。要归一化一个标签,执行 *unicode 大小写折叠* 并将连续的内部 | 另一个。要归一化一个标签,执行 *unicode 大小写折叠* 并将连续的内部 | |||
| 另一个。要归一化一个标签,执行 *Unicode 大小写折叠* 并将连续的内部 | [空白] 折叠为单个空格。如果存在多个 | |||
| 匹配的引用链接定义,则使用文档中首先出现的那个。 | 匹配的引用链接定义,则使用文档中首先出现的那个。 | |||
| (在这种情况下,发出警告是可取的。) | (在这种情况下,发出警告是可取的。) | |||
| 第一个链接标签的内容被解析为行内内容, | 第一个链接标签的内容被解析为行内内容, | |||
| 并用作链接的文本。链接的 URI 和标题由 | 并用作链接的文本。链接的 URI 和标题由 | |||
| 匹配的 [链接引用定义] 提供。 | 匹配的 [链接引用定义] 提供。 | |||
| matching [link reference definition]. | matching [link reference definition]. | |||
| 这是一个简单的例子 | 这是一个简单的例子 | |||
| 变更结束。共 35 个变更块。 | ||||
| 47 行被更改或删除 | 109 行被更改或添加 | |||
此 HTML 差异由 rfcdiff 1.41 生成。最新版本可从 http://tools.ietf.org/tools/rfcdiff/ 获取 | ||||