宣告的块样式(也就是块属性列表的第一个位置属性)可以用于修改任何段落和大多数结构性容器的上下文。这种做法被称为块伪装(意味着将一个块伪装成另一个块)。

当使用声明的块样式改变段落的上下文时,该块保留简单的内容模型。当伪装结构容器的上下文时,只允许保留预期内容模型的上下文。

它是如何工作的

如果在一个块上声明的块样式与某个上下文的名称相匹配,它将设置该块的上下文为该值,并且解析后的块样式将保持未设置状态。如果声明的块样式与任何上下文的名称不匹配,它将要么专门化该上下文,要么隐式设置上下文并同时专门化该上下文。对于自定义块如何处理声明的块样式,则由扩展决定,尽管类似的过程会发生。

让我们考虑使用声明的块样式来改变结构容器的上下文的情况。在这种情况下,我们使用声明的块样式将一个文字块更改为清单块。

[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`样式,该样式可用于将文字段落还原为普通段落。