预热
1. 字符和行(character&line)
字符(characters) 的任何排列都是有效的 CommonMark 文档。
character 是一个 Unicode 代码点。 尽管某些代码点(例如,组合重音符号)在直观意义上与字符不对应,但是出于本规范的目的,所有代码点都计为字符。
此规范未指定编码; 它认为行由 characters 而不是字节组成。符合的解析器可以限于某种编码。
行(line) 是除换行符之外的零个或多个 characters 的排列(U+000A
)或回车(U+000D
),然后是 line ending 或文件末尾。
行尾(line ending) 即换行符(U+000A
),后面没有换行符的回车符(U+000D
),或者是一个回车紧跟一个换行。
不包含字符的行或仅包含空格(U+0020
)或制表符(U+0009
)的行称为 空行(blank line)。
本规范将使用以下字符类定义:
空白字符(whitespace character) 是一个空格(U+0020
),制表符 (U+0009
),换行符(U+000A
),行列表(U+000B
),换页(U+000C
)或回车(U+000D
)。
空格(Whitespace)是一个或多个 whitespace characters 的排列。
Unicode 空格字符(whitespace character) 是 Unicode Zs
常规类别中的任何代码点,或者是一个 tab (U+0009
), 回车(U+000D
), 换行(U+000A
), 或者换页(U+000C
)。
Unicode 空格(whitespace) 是一个或多个 Unicode whitespace characters 的排列。
一个 空格(space)是 U+0020
。
一个 非空格字符(non-whitespace character) 是任意的不是 whitespace character 的字符。
一个 ASCII 标点符号(punctuation character) 是 !
, "
, #
, $
, %
, &
, '
, (
, )
,*
, +
, ,
, -
, .
, /
(U+0021–2F),
:
, ;
, <
, =
, >
, ?
, @
(U+003A–0040),
[
, \
, ]
, ^
, _
, `
(U+005B–0060),
{
, |
, }
, 或 ~
(U+007B–007E)。
一个 标点符号(punctuation character) 是一个 ASCII punctuation character 或者任意的在普通 Unicode 范畴的 Pc
, Pd
, Pe
, Pf
, Pi
, Po
, 或 Ps
。
2. Tabs
行中的 tab 不会扩展为空格。但是,在空格有助于定义块结构的上下文中,tab 的行为就像它们被带有 4 个字符的 tab 空格所替换。
因此,打个比方,可以在缩进代码块中使用 tab 而不是四个空格。(但请注意,内部 tab 作为文字 tab 传递,而不会扩展为空格。)
示例 1
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 2
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 3
Markdown | HTML | 效果 |
---|---|---|
|
|
在下面的示例中,列表项的延续段落使用 tab 缩进; 这与四个空格的缩进具有完全相同的效果:
示例 4
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 5
Markdown | HTML | 效果 |
---|---|---|
|
|
通常,开始块引用的 >
可以选择性地跟随空格,该空格不被视为内容的一部分。在下面的例子中,>
后跟一个 tab,它被视为扩展为三个空格。 由于其中一个空格被认为是分隔符的一部分,因此 foo
被认为是在块引用上下文中缩进了六个空格,因此我们得到一个以两个空格开头的缩进代码块。
示例 6
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 7
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 8
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 9
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 10
Markdown | HTML | 效果 |
---|---|---|
|
|
示例 11
Markdown | HTML | 效果 |
---|---|---|
|
|
3. 不安全的字符
出于安全原因,Unicode 字符 U+0000
必须替换为 REPLACEMENT CHARACTER (U+FFFD
)。