轻松记录您
灵感和创意

markdown区块元素的相接

前面说过,一份Markdown文档看成一系列连续的区块元素的纵向排列。所以一份Markdown文档的结构基本是由区块元素决定的。而区块元素之间的关系有两种——首尾相接与嵌套

原生的Markdown只规定了段落间需要空行,没有规定其他的区块如何相接。我们往往会想当然的认为其他区块直接换行相接就可以了。但是真的是这样吗?

其实,不同区块间有不同的规则,不同的编辑器也有不同的相接规则。这是几乎所有编辑器共有的现象。所以,区块相接存在着严重的方言问题。

但是,它们也有一些规则是通用的:

有明确开始标识和明确结束标识的区块可不用空行。当我们回头看原生Markdown语法设计的时候,会发现虽然Markdown也是一种轻量级的标记语言,可是基本所有区块元素只有开始标识(比如引用使用>开始,无序列表使用*、+或-开始),却没有结束标识,这种区块的结束就取决于下一个区块或空行,不同的编辑器或产生不同的结果。但是后来加入的部分语法开始使用包裹式的标识,比如区块公式使用$$包裹,这些区块就有着明确的结束标识。当像这样有着明确开始标识和结束标识的区块相接时,一般编辑器都不会出现差异,所以可以不用空行,直接换行相接。

分割线与标题后接区块可以不空行。分割线与标题占用的行数比较固定,只有一行或两行,其后可以直接换行接任何区块元素。

区块引用和列表后接其他区块必须空行。区块引用和列表与其他区块不同,它们可以嵌套区块,而且有lazy输入(懒人输入,回车直接沿用上方样式),所以必须用空行区分。

使用减号-画分割线时,前面必须预留一空行。因为连续三个减号—这个语法与Setex式标题(底线式标题)语法重合了,不留空行容易造成识别错误。如果不想使用预留空行,也可以在减号内加空格,如- – -,以避免与Setex标题语法重合。

空白HTML标签的使用。这个标签其实很少会用到,一般只在带lazy输入的区块连续出现的时候用于分割区块。目前允许lazy输入的区块有:区块引用、缩进式代码、列表。空白HTML标签不会再最后的输出中显示,所以用来写备注也是可以的。

未经允许不得转载:坚果之云 Markdown » markdown区块元素的相接
分享到: 更多 (0)

坚果云Markdown轻松记录您 灵感和创意

坚果云Markdown下载坚果云Markdown介绍