相关问题 |
接受的决定
规范将引入一个新的结构容器(即块状形式)用于开放块,该容器使用可变长度的分隔符。这些分隔符将由四个或更多的波浪号字符组成,单独放在一行上(例如,~~~~
)。
决策总结
通过这次添加,用于开放块的结构性容器将与其他可重用的结构性容器保持一致(分隔符至少四个字符),并且支持嵌套(通过改变分隔符的长度)。
开放块是唯一一个其结构容器具有统一定界线且长度受限(两个字符而不是标准的至少四个字符)的块。它不仅外观不同,两个连字符的定界符形式(--
)阻止了开放块被直接嵌套在另一个开放块内部,因为定界符的长度不能变化。
嵌套开放块对于表示 AsciiDoc 本身不支持的层次结构元素非常有用(例如,在不使用嵌入式 HTML 的情况下支持登录页面的自定义布局),包含复杂列表项的内容,或允许扩展定义自定义块的边界而不推断其他语义。 在这些场景中,使用开放块作为容器不应限制在该容器内使用开放块。 可以说,开放块是最通用的块,然而它的使用极为有限,因为它不能嵌套。
仅仅允许改变 --
分隔符的长度是不够的,因为由四个或更多连字符 ----
组成的分隔线已经被用于列表块。因此,更改分隔符字符(从 -
到 ~
)是必要的。之所以选用四个或更多波浪线 (~~~~
) 作为分隔线,是因为波浪线通常存在于键盘上,而且这些字符位于行中间,作为分隔线更容易读取。
要查看导致这一决定的完整讨论,包括额外的理由、需求、问题和被舍弃的替代方案,请查看 问题 #27。
语言变化示例
以下是一个开放区块的示例,它使用新的可变长度分隔符形式(~~~~
)来标记。
~~~~ 这是一个用新标准长度分隔线划定的开放区块。 ~~~~
在下一个例子中,两个开放块直接嵌套在一个父开放块内(分别使用`~~~~~~和
~~~~`作为分界线)。
这里有一些盒子: 盒子 A 这是一个嵌套的开放区块。 ~~~~~~ 盒子 B 这是另一个嵌套的开放区块。 ~~~~~~ ~~~~
向后兼容
AsciiDoc 语言中的双连字符分隔符形式(--
)将被标记为弃用。然而,为了向后兼容,语法仍然必须允许使用传统形式。