宣告的块样式(也就是块属性列表的第一个位置属性)可以用于修改任何段落和大多数结构性容器的上下文。这种做法被称为块伪装(意味着将一个块伪装成另一个块)。
当使用声明的块样式改变段落的上下文时,该块保留简单的内容模型。当伪装结构容器的上下文时,只允许保留预期内容模型的上下文。
它是如何工作的
如果在一个块上声明的块样式与某个上下文的名称相匹配,它将设置该块的上下文为该值,并且解析后的块样式将保持未设置状态。如果声明的块样式与任何上下文的名称不匹配,它将要么专门化该上下文,要么隐式设置上下文并同时专门化该上下文。对于自定义块如何处理声明的块样式,则由扩展决定,尽管类似的过程会发生。
让我们考虑使用声明的块样式来改变结构容器的上下文的情况。在这种情况下,我们使用声明的块样式将一个文字块更改为清单块。
[listing] .... a > b ....
尽管结构容器的默认上下文是`:literal`,声明的块样式将其更改为`:listing`。但块的解析块样式仍然未设置。
声明的块状风格也可用于将一个段落转换成其他类型的块。该块仍将保留简单的内容模型。让我们考虑一下把一个普通段落变成侧边栏的情况。
[sidebar] This sidebar is short, so a styled paragraph will do.
最后,让我们考虑一下警告块。在一个示例结构容器上声明NOTE块样式可以将其转换为警告块,并且还设置了该块的样式为NOTE。
[NOTE] ==== 记得买牛奶。 ====
这种技术也适用于将一个段落转换为警告块。
[提示] 记得买牛奶。
在允许的情况下,声明的块风格可以用来专门化块的上下文、改变块的上下文,或者两者都进行。
内置排列
下表列出了可以通过声明的块样式更改上下文的结构容器,以及哪些上下文是有效的。
Type | Default context | Masquerading contexts |
---|---|---|
example |
:example |
admonition (designated by the NOTE, TIP, WARNING, CAUTION, or IMPORTANT style) |
listing |
:listing |
literal |
literal |
:literal |
listing (can be designated using the source style) |
open |
:open |
abstract, admonition (designated by the NOTE, TIP, WARNING, CAUTION, or IMPORTANT style), comment, example, literal, listing (can be designated using the source style), partintro, pass, quote, sidebar, verse |
pass |
:pass |
stem, latexmath, asciimath |
sidebar |
:sidebar |
n/a |
quote |
:quote |
verse |
所有可应用于开放块的上下文也可应用于段落。段落同样可以访问`normal`样式,该样式可用于将文字段落还原为普通段落。