相关问题

接受的决定

规范将引入一个新的结构容器(即块状形式)用于开放块,该容器使用可变长度的分隔符。这些分隔符将由四个或更多的波浪号字符组成,单独放在一行上(例如,~~~~)。

决策总结

通过这次添加,用于开放块的结构性容器将与其他可重用的结构性容器保持一致(分隔符至少四个字符),并且支持嵌套(通过改变分隔符的长度)。

开放块是唯一一个其结构容器具有统一定界线且长度受限(两个字符而不是标准的至少四个字符)的块。它不仅外观不同,两个连字符的定界符形式(--)阻止了开放块被直接嵌套在另一个开放块内部,因为定界符的长度不能变化。

嵌套开放块对于表示 AsciiDoc 本身不支持的层次结构元素非常有用(例如,在不使用嵌入式 HTML 的情况下支持登录页面的自定义布局),包含复杂列表项的内容,或允许扩展定义自定义块的边界而不推断其他语义。 在这些场景中,使用开放块作为容器不应限制在该容器内使用开放块。 可以说,开放块是最通用的块,然而它的使用极为有限,因为它不能嵌套。

仅仅允许改变 -- 分隔符的长度是不够的,因为由四个或更多连字符 ---- 组成的分隔线已经被用于列表块。因此,更改分隔符字符(从 -~)是必要的。之所以选用四个或更多波浪线 (~~~~) 作为分隔线,是因为波浪线通常存在于键盘上,而且这些字符位于行中间,作为分隔线更容易读取。

要查看导致这一决定的完整讨论,包括额外的理由、需求、问题和被舍弃的替代方案,请查看 问题 #27

语言变化示例

以下是一个开放区块的示例,它使用新的可变长度分隔符形式(~~~~)来标记。

~~~~
这是一个用新标准长度分隔线划定的开放区块。
~~~~

在下一个例子中,两个开放块直接嵌套在一个父开放块内(分别使用`~~~~~~~~~~`作为分界线)。

这里有一些盒子:

盒子 A

这是一个嵌套的开放区块。
~~~~~~

盒子 B

这是另一个嵌套的开放区块。
~~~~~~
~~~~

向后兼容

AsciiDoc 语言中的双连字符分隔符形式(--)将被标记为弃用。然而,为了向后兼容,语法仍然必须允许使用传统形式。