2

这是 CommonMark 中的有效列表吗?

  1. Foo
     - Bar
     - Baz
  2. Qux

我担心每个列表标记之前两个前导空格的有效性,即1.,2.等。在列表标记之前提供前导空格是否有效?

我无法在规范中找到任何明确提到可以在http://spec.commonmark.org/0.27/的 CommonMark 规范中的每个列表标记之前有前导空格的内容。

但是有许多示例似乎显示了列表标记之前使用的前导空格。例如,请参阅

但我希望规范清楚地说明在列表标记之前放置空格是有效的。您能在规范中找到任何清楚说明或至少暗示这一点的内容吗?

4

1 回答 1

1

具体规则是列表项部分的规则 4 (在示例 246之后开始):

  1. 缩进。如果一行L s 的序列根据规则#1、#2 或 #3 构成一个列表项,则将L s 的每一行缩进 1-3 个空格(每行相同)的结果也构成一个列表具有相同内容和属性的项目。如果一行为空,则不需要缩进。

示例247248249然后分别显示一个、两个和三个空格,所有 if 都被解释为列表项。最后,示例 250显示了四个缩进空格导致一个代码块。

当然,缩进块的规则状态(强调):

一个缩进代码块由一个或多个由空行分隔的缩进块组成。缩进块是一系列非空行,每行缩进四个或更多空格。代码块的内容是行的文字内容,包括行尾,减去四个缩进空格

因此,缩进少于四个空格的任何内容都不是代码块。几段之后,我们发现以下内容:

如果将缩进解释为代码块与指示材料属于列表项之间存在任何歧义,则列表项解释优先:

给出的示例显示了一个缩进四个或更多空格的嵌套列表项。但是,同一个示例也将父列表项缩进两个空格,因此该规则可以适用于两者。

为了比较,原来的 Markdown规则明确指出:

列表标记通常从左边距开始,但最多可以缩进三个空格。

这个概念在 Markdown 中已经存在很多年了。

于 2017-04-07T20:07:15.263 回答