如何为不同的模块定义具有相同键的属性?

问题描述

我想在不同的模块中使用相同的键属性,但值不同。

我在 antora.yml 中定义了属性,但是好像没有办法区分模块。

我该怎么办?

解决方法

antora.yml 中的属性定义对于包含 antora.yml 的组件是全局的。无法将这些属性定位到特定模块。但是它们很容易在使用它们的页面中被覆盖。

例如,如果您在 antora.yml 中定义一个属性:

asciidoc:
  attributes:
    foo: bar

然后,无论您在组件页面中的何处使用 {foo},您都会在生成的 HTML 中看到 bar

要在特定页面中覆盖它:

:foo: FOO

当在同一页面上的任何位置遇到 {foo} 属性时,在该定义之后,您会在生成的 HTML 中看到 FOO

如果一个模块中有多个页面需要共享相同的定义,则可以将这些定义放入单独的 Asciidoc 文件中,例如 attributes.adoc。如果将该文件放入模块的 partials 文件夹中,则可以将其包含在任何需要属性定义的模块页面中:

include::partial$attributes.adoc[]

您不必在 attributes.adoc 中定义所有属性,只需为模块重新定义那些属性即可。