资源ID坐标
坐标语法和顺序
一个资源ID包含五个坐标:版本、组件、模块、家族和文件。Antora通过根据文件、标准目录集和组件版本描述符中的信息为源文件构建资源ID。您可以使用分配给资源的资源ID坐标序列引用任何其他资源,无论每个资源所属的组件版本如何。
图1显示了完全限定资源ID中的坐标类型及其顺序。
-
当前页面的组件版本和模块与目标资源的关系,
-
目标资源的家族,以及
-
用于引用目标资源的AsciiDoc语法。
图2中, satellites.adoc是当前页面,文件名为 modes.adoc的资源是被xref宏引用的目标资源。以下各节描述了如何确定目标资源的每个坐标的值以及何时使用每个坐标。
组件坐标
antora.yml文件中的 名称键指定。
:)。如果指定了组件坐标但未指定版本坐标,则将选择该组件的最新版本。
模块坐标
模块目录。
:)。
link、
kbd、
menu等,您可能需要通过在坐标的该部分前加上反斜杠来转义该部分。例如,像
monolink和
redmenu这样的模块坐标可能需要在资源ID中输入为
mono\link和
red\menu。
家庭坐标
家庭坐标标识目标资源所属家庭的名称。该家庭来源于存储资源的家庭目录。在构建资源ID时,从家庭名称的末尾删除“s”,并用美元符号($)替换。有效的家庭坐标包括page$、image$、partial$、example$和attachment$。
是否需要在资源ID中输入家庭坐标取决于:
-
目标资源的家庭,以及
-
用于引用目标资源的AsciiDoc语法。
例如,如果您使用xref宏引用页面,则默认情况下不需要page$家庭坐标,因为当未指定家庭坐标时,xref宏会自动应用它。以下表列出了根据被引用的资源和引用资源的语法确定是否需要家庭坐标的情况。
| 被引用的资源 | 引用资源的语法 | 是否需要家庭坐标? |
|---|---|---|
|
Xref宏 |
是,需要 |
|
|
包含指令 |
是,需要 |
|
|
块图像宏 |
||
|
内联图像宏 |
||
|
Xref宏 |
是,需要 |
|
|
Xref宏 |
不需要,不需要家庭坐标。请参阅Xref宏和页面链接。 |
|
|
包含指令 |
不需要,不需要家庭坐标。请参阅包含页面。 |
|
|
包含指令 |
是,需要 |
文件坐标
文件坐标指定目标资源源文件相对于家庭目录的路径。文件坐标必须指定资源的文件扩展名,除非:
位于家庭目录根目录的资源的文件坐标是资源源文件的名称和文件扩展名。
📂 modules
📂 admin
📂 pages (1)
📄 modes.adoc (2)
| 1 | pages家庭目录 |
| 2 | 存储在pages目录根目录的页面 |
例如,在示例1中显示的modes.adoc的文件坐标是modes.adoc,因为它存储在pages家庭目录的根目录中。
如果目标资源位于家庭目录的子目录中,则文件坐标必须指定到目标资源的家庭相对目录路径。
📂 modules
📂 admin
📂 pages
📄 modes.adoc (1)
📂 fields (2)
📂 level (3)
📄 routes.adoc (4)
📄 terrain.adoc (5)
| 1 | 存储在pages目录根目录的页面 |
| 2 | pages目录中的子目录 |
| 3 | fields子目录中的子目录 |
| 4 | 存储在level子目录中的页面 |
| 5 | 存储在level子目录中的页面 |
在示例2中显示的页面terrain.adoc存储在level子目录中。对于terrain.adoc的文件坐标是fields/level/terrain.adoc。如果modes.adoc(当前页面)引用terrain.adoc(目标资源),则在目标资源的资源ID中指定的文件坐标是fields/level/terrain.adoc。如果terrain.adoc(当前页面)引用modes.adoc(目标资源),则在目标资源的资源ID中指定的文件坐标是modes.adoc。请记住,目标资源的文件坐标始终是从家庭目录计算的。
当目标资源和当前页面都位于家庭目录的同一子目录中时,可以使用相对路径标记./来缩写目标资源文件坐标的家庭相对目录路径。
📂 modules
📂 admin
📂 pages
📂 fields
📂 level
📄 routes.adoc (1)
📄 terrain.adoc (2)
| 1 | 存储在level子目录中的页面 |
| 2 | 存储在level子目录中的页面 |
在示例3中显示的页面routes.adoc和terrain.adoc都存储在level子目录中。如果routes.adoc(当前页面)引用terrain.adoc(目标资源),则在目标资源的资源ID中可以将文件坐标指定为./terrain.adoc,而不是fields/level/terrain.adoc。