定义和修改属性

除了某些只读的内在属性外,任何 AsciiDoc 文档属性(这里的属性)都可以从CLI、剧本、组件描述符或使用属性条目在页头中定义。除非使用修饰符改变了给定属性的优先级,否则优先级匹配该顺序(从高到低)。这些不同的作用域使您能够在所需的粒度级别上定义属性,并能够针对不同的环境或情况覆盖它们的值。

本页解释如何使用属性条目在页级别定义和修改属性。或者,可以使用CLI、剧本或组件描述符在更高的级别设置这些属性。定义或修改属性的结果是相同的(这意味着处理器不关心如何定义它)。

什么是属性条目

属性条目是为页面定义属性和(如果适用)为其赋值的主要机制。您可以将属性条目看作是 AsciiDoc 中的全局变量赋值。

属性条目由两部分组成:名称和值。每个属性项必须在页头的单独一行中输入。属性条目以一个开始冒号( : )开始,紧接着是属性名称,然后是一个结束冒号( : )。这将激活或设置属性,以便您可以在页面中使用它。

= Page Title
:name-of-an-attribute: (1)
1 属性名的前面直接加一个开始冒号( : ),后面直接加一个结束冒号( : )。

在许多情况下,通过在属性条目的名称后输入信息,显式地为属性赋值。该值必须与结束冒号( : )至少偏移一个空格。

= Page Title
:name-of-an-attribute: value of the attribute (1)
1 显式赋值的值与结束冒号( : )至少偏移一个空格。在输入值结束时,按 kbd:[Enter] 。

一些内置的 AsciiDoc 属性不需要在属性条目中显式赋值,因为它们是布尔属性或具有默认值。

= Page Title
:name-of-an-attribute: (1)
1 如果不想显式地为该属性赋值,请在结束冒号( : )后按 kbd:[Enter]键。

内置布尔属性的值总是空的,因为它们唯一接受的值是空字符串。其它内置属性可能有默认值。如果您设置了一个内置属性并将其值保留为空,那么 Antora 将在处理时将默认值(如果有的话)分配给该属性。

设置内置属性

让我们激活名为 sectanchorsAsciiDoc 属性。通过在页头的属性条目中输入其名称来设置属性。

Example 1. Example 1. Set a built-in attribute
= Page Title
:sectanchors: (1)
1 该属性在页头中设置,直接在其名称 sectanchors 前面加上一个开始冒号( : ),然后在其后面加上一个结束冒号( : )。

设置后,sectanchors 将在每个部分标题的左侧添加一个锚。Sectanchors 是一个布尔属性,所以它的值是一个空字符串。

为内置属性分配值

在下一个示例中,让我们为内置的 AsciiDoc 属性赋值。属性 xrefstyle 有三个可以接受的内置值: shortfullbasic

= Page Title
:xrefstyle: short (1)
1 在页眉中设置 xrefstyle 并将其赋值为 short 。显式值必须与结束冒号( : )至少偏移一个空格。

当将短值赋给 xrefstyle 时,任何对带有锚点的块的页内引用都将显示块的标签和编号,如,Listing 1 所示,如果引用中没有指定链接文本。

CAUTION

一些内置的 AsciiDoc 属性在 Antora 环境中不适用。这些属性包括 data-uri、allow-uri-read、docinfo、linkcss、noheader、nofooter、webfonts 和 outfilesuffix 。设置这些属性要么没有效果,要么可能导致 Antora 故障。其它属性,如 imagesdir ,由 Antora 自动设置,不能重写。

定义自定义属性

自定义属性通常存储常用的文本和 url 。然后通过简单地输入他们的名字(而不是重复输入文本或 url )在整个页面中引用他们。在可以引用自定义属性之前,它们必须具有用户定义的名称并被赋值。

属性名必须:

  • 长度至少为一个字符

  • 以单词字符(A-Z, a-z, 0-9, 或 _)开头,并且

  • 只能包含单词字符和连字符,即名称中不能包含 . 和空格。

虽然属性名称中允许使用大写字符,但在存储之前,该名称会自动转换为小写字符。最佳做法是在名称中只使用小写字母,并避免以数字开头。

属性值可以:

  • 是任何内联内容,和

  • 包含换行符,但仅在使用显式换行符( + )的情况下。

在示例2中,使用属性条目定义自定义属性的名称和值。

Example 2. Example 2. Define a custom attribute using an attribute entry
= Page Title
:url-repo: https://gitlab.com/antora/demo/docs-site

现在,您可以通过在一组花括号( {attribute-name} )中输入属性的名称,在页面中任何需要的地方引用该属性。您可以在 URL 创建属性 中看到使用自定义属性替换复杂 URL 的另一个示例。

取消设置属性

内置属性和自定义属性可以取消设置,即关闭,在属性条目的名称中添加一个开头或结尾的bang符号( ! )。

= Page Title
:!sectanchors:
:table-caption!:

一旦取消设置,属性的行为和值将不再对该页可用。

优先级规则

属性可以通过在站点的 playbook 文件中声明来 作用于整个站点 。您可以通过在组件描述文件(即,antora.yml)中声明属性来将其应用于 单个组件版本。在 playbook 或组件描述文件中硬编码设置或取消设置的属性将优先于页面中定义的属性。可以使用 precedence 修饰符 来颠倒这个优先顺序。

内在属性 永远不能被修改,因此被认为是只读的。

有关详细信息,请参阅 站点属性组件版本属性 的优先规则。