创建页面链接
在本页中,您将学习如何将正确的资源 ID 坐标分配给 xref
宏:
-
目标页面和当前页面属于相同的组件版本和模块
-
目标页存储在 pages 目录的根目录中
-
目标页存储在 pages 目录的子目录中
-
目标页和当前页存储在 pages 目录的同一子目录中
-
目标页面和当前页面属于不同的模块
-
目标页面和当前页面属于不同的组件版本
-
目标页面和当前页面不属于同一个组件版本,页面链接应该始终使用目标页面的最新版本
-
目标页面和当前页面属于同一个组件,但目标页面属于不同的版本
如果您不熟悉 Antora 资源ID、它的坐标或如何使用 xref 宏,请参见 |
在同一个模块中页面链接
您所做的大多数交叉引用可能是在组件版本中属于同一模块的页面之间。当当前页面和目标页面属于同一个组件版本和模块时,AsciiDoc xref
宏只需要目标页面的资源 ID
的文件坐标。
- TIP
-
目标页是当前页引用的页源文件。通过将目标页的资源ID分配给当前页内容中的
xref
宏来引用目标页。当前页面是包含引用目标页面的xref
宏的页面源文件。
示例1 显示了当前页面中分配给 xref
宏的目标页面的文件坐标。
xref:file-coordinate-of-target-page.adoc[optional link text] (1)
xref:file-coordinate-of-target-page.adoc#fragment[optional link text] (2)
1 | 有关如何设置 xref 宏的分步说明,请参见 使用 xref 宏创建链接 。 |
2 | 一个可选的片段,表示目标页中的一个元素ID,可以在目标页的文件坐标之后分配。 |
目标页的文件坐标总是从页面族目录的根计算。这意味着目标页文件坐标的结构取决于目标页是存储在 pages
族目录的根目录还是存储在 pages
目录的子目录中。
xref:target-page-filename.adoc[optional link text] (1)
xref:path/to/target-page-filename.adoc[optional link text] (2)
xref:./target-page-filename.adoc[optional link text] (3)
1 | 目标页存储在 pages 目录的根目录时的文件坐标。 |
2 | 当目标页存储在 pages 目录的子目录中,但当前页不存储在同一子目录中时,目标页的文件坐标。 |
3 | 当目标页和当前页存储在 pages 目录的同一子目录中时,目标页的文件坐标。 |
下面几节提供文件坐标结构的示例。
在 pages 目录根的文件坐标
当目标页存储在 pages 族目录的根目录时,文件坐标是目标页的文件名和文件扩展名。
xref:target-page-filename.adoc[optional link text]
让我们使用示例4中列出的一些页面作为本节示例的基础。
📄 antora.yml (1)
📂 modules
📂 la-garita (2)
📂 pagesAlian (3)
📄 ridge.adoc
📄 willow-creek.adoc
📂 ROOT (4)
📂 pagesAlian (5)
📄 index.adoc
📄 ranges.adoc
1 | 将组件版本定义为 colorado 5.2 |
2 | 定义一个名为 la-garita 的模块 |
3 | 在页面(pages)目录创建页面 |
4 | 定义 ROOT 目录 |
5 | 在 pages 目录创建页面 |
使用上面示例4中属于 la-garita
模块的两个页面,让我们从 ridge.adoc
引用 willow-creek.adoc
。这意味着源文件 willow-creek.adoc
是目标页面,而 ridge.adoc
是当前页面。示例5显示了在 ridge.adoc
页面中链接到 willow-creek.adoc
页面的 xref
宏。
The xref:willow-creek.adoc[trailhead] is north of town.
willow-creek.adoc
页面的文件坐标仅由其文件名和文件扩展名 willow-creek.adoc
构成,因为它存储在 pages
目录的根目录中。目标页面的文件坐标始终是从 pages
族目录的根目录计算的。
让我们看一下示例6中显示的另一个 xref
宏,该 xref
宏在 index.adoc
页面(当前页面)引用了 ranges.adoc
页面(目标页面)。
The Rocky Mountains consists of xref:ranges.adoc[numerous mountain ranges].
只有目标页面的文件坐标需要在 xref
宏中指定,因为这两个页面都属于 ROOT
模块和 colorado 5.2
组件版本。ranges.adoc
的文件坐标是 ranges.adoc
,因为它存储在 pages
目录的根目录中。当目标页面存储在子目录 pages
目录中时,请参见文件与页面相对目录路径的文件坐标和文件与相对路径标记的文件坐标示例。
pages 相对目录路径的文件坐标
当当前页不与目标页存储在同一子目录中时,目标页的页相对目录路径在其文件坐标中是必需的。如果两个页面都存储在同一子目录中,请参阅使用相对路径令牌的文件坐标。
xref:path/to/target-page-filename.adoc[optional link text]
让我们参考来自 ranges.adoc
的 faq.adoc
。在示例8中可以看到,这两个页面都属于 colorado 5.2
组件版本的 ROOT
模块。
📄 antora.yml (1)
📂 modules
📂 ROOT (2)
📂 pages (3)
📄 index.adoc
📄 ranges.adoc
📂 terms (4)
📄 faq.adoc
📄 signs.adoc
1 | 将组件版本定义为 colorado 5.2 |
2 | 定义 ROOT 模块 |
3 | 在 pages 目录中创建页面 |
4 | pages 中的子目录,包含页面的源文件 |
例9中的 xref 宏从 ranges.adoc (当前页面)创建了一个链接到 faq.adoc 页面(目标页面)的链接。
See the xref:terms/faq.adoc[].
如示例9所示,faq.adoc
文件的文件路径为 terms/faq.adoc
。分配给 xref
宏的文件路径包括目标页面相对于页面的目录路径以及其文件名和文件扩展名,因为 faq.adoc
存储在子目录 terms
中。如果当前页面和目标页面存储在同一子目录中,则可以使用相对路径符号 ./
代替页面相对路径。
带有相对路径标记的文件坐标
如果目标页面和当前页面存储在页面目录中的同一子目录中,则可以将目标页面文件坐标的页面相关目录路径替换为相对路径符号,./
。
xref:./target-page-filename.adoc[optional link text]
让我们从 signs.adoc
引用 faq.adoc
。示例11显示,两个文件都存储在页面目录的 terms
子目录中,并且两个文件都属于同一个模块和组件版本。
📄 antora.yml
📂 modules
📂 ROOT (1)
📂 pagesAlian (2)
📄 index.adoc
📂 terms (3)
📄 faq.adoc
📄 signs.adoc
1 | 定义 ROOT 模块 |
2 | 在 pages 目录创建页面 |
3 | pages 中的子目录,包含页面的源文件 |
当目标页面和当前页面存储在页面目录的同一子目录中时,可以使用相对路径符号 ./
缩写目标页面的文件路径。示例12中的 xref
宏从 signs.adoc
页面(当前页面)链接到 faq.adoc
页面(目标页面)。
See the xref:./faq.adoc[].
如示例12所示,当从 signs.adoc
引用 faq.adoc
时,faq.adoc
的文件路径为 ./faq.adoc
。两个页面都存储在 terms
子目录中,因此目标页面的文件路径的相对目录路径被替换为 ./
符号。
在不同模块中页面链接
当目标页和当前页不属于同一个模块时,必须在 xref
宏中指定目标页的模块坐标和文件坐标。
xref:module:file-coordinate-of-target-page.adoc[optional link text] (1)
1 | 当目标页面和当前页面属于相同的组件版本但不属于相同的模块时,将目标页面的模块和文件坐标分配给 xref 宏。 |
使用 colorado 5.2
组件版本中的两个页面,如示例14所示,让我们在 willow-creek.adoc (当前页面)中引用 ranges.adoc
(目标页面)。
📄 antora.yml (1)
📂 modules
📂 la-garita (2)
📂 pages
📄 willow-creek.adoc
📂 ROOT (3)
📂 pages
📄 index.adoc
📄 ranges.adoc
1 | 将组件版本定义为 colorado 5.2 |
2 | 定义一个名为 la-garita 的模块 |
3 | 定义 ROOT 模块 |
willow-creek.adoc
页面属于 la-garita
模块,但 ranges.adoc
属于 ROOT
模块。示例15中的 xref
宏从页面 willow-creek.adoc
(当前页面)链接到 ranges.adoc
页面(目标页面)。
Only xref:ROOT:ranges.adoc[one pass is open] in the winter.
如示例15所示,目标页面的模块坐标是 ROOT
,其文件坐标是 range.adoc
。
在不同组件版本中页面链接
当目标页面和当前页面属于不同的文档组件时,您必须在 xref
宏中指定至少目标页面的组件、模块和文件路径坐标。您几乎总是也会指定版本坐标。
xref:version@component:module:file-coordinate-of-target-page.adoc[optional link text] (1)
xref:component:module:file-coordinate-of-target-page.adoc[optional link text] (2)
1 | 当目标页面和当前页面不属于相同的组件版本时,将目标页面的版本、组件、模块和文件坐标分配给 xref 宏。 |
2 | 如果没有指定版本坐标,Antora 将在运行时使用目标页面组件的最新版本来完成资源ID。此行为仅适用于目标页面和当前页面属于不同文档组件的情况。 |
让我们从 index.adoc
引用 elevation.adoc
。index.adoc
页面属于组件版本 colorado 5.2
(示例17)。elevation.adoc
页面属于组件版本 wyoming 1.0
(示例18)。
📄 antora.yml (1)
📂 modules
📂 la-garita
📂 pagesAlian
📄 willow-creek.adoc
📂 ROOT
📂 pagesAlian
📄 index.adoc
📄 ranges.adoc
1 | 将组件版本定义为colorado 5.2 |
📄 antora.yml (1)
📂 modules
📂 sierra-madre
📂 pagesAlian
📄 elevation.adoc
📄 wilderness-areas.adoc
1 | 将组件版本定义为 wyoming 1.0 |
在示例19中,xref
宏从 index.adoc
(当前页面) 链接到 elevation.adoc
(目标页面) 。
Do you know xref:1.0@wyoming:sierra-madre:elevation.adoc[how elevation is measured]?
因为目标页面属于 wyoming 1.0
组件版本,而当前页面属于 colorado 5.2
,所以分配给 xref
宏的资源 ID 指定了目标页面的版本、组件、模块和文件路径坐标。如示例19所示,目标页面的版本坐标为 1.0
,组件坐标为 wyoming
,模块坐标为 sierra-madre
,文件路径坐标为 elevation.adoc
。
在示例 20 中,从页面 elevation.adoc
引用 ranges.adoc
页面。目标页面 ranges.adoc
属于 colorado 5.2
的 ROOT
模块,而当前页面属于 wyoming 1.0
。
xref:5.2@colorado::ranges.adoc[]
请注意,在示例20中,资源ID中似乎缺少了模块坐标 ROOT
。当在资源ID中指定了组件坐标,并且目标页面属于 ROOT
模块时,无需显式指定模块坐标 ROOT
。但是,您仍必须输入模块坐标后跟随的冒号( :
)。在文件路径坐标 ranges.adoc
之前,可以看到这个冒号。这种简写方式仅适用于指定组件坐标且目标页面的模块坐标为 ROOT
的情况。在所有其他需要模块坐标的情况下,必须指定模块的名称。
链接到一个页面的最新版本
- TIP
-
此行为仅适用于目标页面和当前页面属于不同文档组件的情况
如果在分配给 xref
宏的资源ID中未指定版本,且目标页面和当前页面不属于同一组件,则 Antora 在运行时使用目标页面组件的最新版本的版本坐标来完成资源ID。
让我们从 willow-creek.adoc
页面(当前页面)引用 elevation.adoc
页面(目标页面)。elevation.adoc
属于组件版本 wyoming 1.0
(示例21)。willow-creek.adoc
属于组件版本 colorado 5.2
(示例22)。
📄 antora.yml (1)
📂 modules
📂 sierra-madre
📂 pagesAlian
📄 elevation.adoc
📄 wilderness-areas.adoc
1 | 将组件版本定义为 wyoming 1.0 |
📄 antora.yml (1)
📂 modules
📂 la-garita
📂 pagesAlian
📄 willow-creek.adoc
1 | 将组件版本定义为 colorado 5.2 |
如果您希望示例23中的 xref
宏始终链接到 elevation.adoc
页面的最新版本,则不要在目标页面的资源ID中指定版本坐标。
xref:wyoming:sierra-madre:elevation.adoc[How are peaks measured]? (1)
1 | 直接在宏前缀 xref: 之后,分配目标页面的资源ID,从其组件坐标开始。 |
当 Antora 运行时,它将根据其版本排序规则和最新版本标准将 wyoming 1.0
确定为 wyoming
组件的最新版本。因为示例23中未指定版本坐标,Antora 将使用最新的 wyoming
组件的版本坐标 1.0
完成分配给 xref
宏的资源ID。请记住,此行为仅适用于目标页面和当前页面属于不同组件的情况。
几个月后,让我们将新组件版本 wyoming 1.5
添加到站点,如例24所示。
📄 antora.yml (1)
📂 modules
📂 sierra-madre
📂 pagesAlian
📄 elevation.adoc
📄 wilderness-areas.adoc
1 | 定义组件版本为 wyoming 1.5 |
下次生成站点时,Antora 将确定 wyoming 1.5
(而不是 wyoming 1.0
)是 wyoming
组件的最新版本。
xref:wyoming:sierra-madre:elevation.adoc[How are peaks measured]?
由于 Antora 现在将 wyoming 1.5
识别为 wyoming
组件的最新版本,因此 Antora 将在运行时使用最新 wyoming
组件的版本坐标 1.5 来完成示例25中目标页面的资源ID。
- WARNING
-
仅当未指定版本坐标且目标页面和当前页面属于不同组件时,链接到最新版本的此行为才适用。如果在资源ID中未指定版本和组件坐标,则 Antora 假定目标页面属于与当前页面相同的组件版本,并使用当前页面的版本和组件坐标来完成目标页面的资源ID。
同一个组件,不同版本的页面链接
当当前页面和目标页面属于同一个组件,但目标页面属于组件的不同版本时,您将指定版本、模块(如果它与当前页面的模块不同)和文件坐标。
xref:version@module:file-coordinate-of-target-page.adoc[optional link text] (1)
xref:version@file-coordinate-of-target-page.adoc[optional link text] (2)
1 | 当目标页与当前页不属于相同的版本和模块时,将目标页的版本、模块和文件坐标分配给 xref 宏。 |
2 | 当目标页与当前页属于不同的版本时,将目标页的版本和文件坐标分配给 xref 宏。 |
让我们使用属于 colorado 5.2 (例27)和 colorado 6.0 (例28)的页面作为本节示例的基础。
📄 antora.yml (1)
📂 modules
📂 get-started
📂 pagesAlian
📄 tour.adoc
📂 la-garita
📂 pagesAlian
📄 willow-creek.adoc
1 | 将组件版本定义为 colorado 5.2 |
📄 antora.yml (1)
📂 modules
📂 la-garita
📂 pagesAlian
📄 willow-creek.adoc
1 | 将组件版本定义为 colorado 6.0 |
请注意,示例27中的 colorado 5.2
组件版本具有属于 get-started
模块的 tour.adoc
页面。但是,示例28中的 colorado 6.0
没有此类模块或页面。让我们从属于 colorado 6.0
组件版本的 willow-creek.adoc
页面(当前页面)引用 tour.adoc
页面(目标页面)。在示例29中,分配给 xref
宏的资源ID指定了目标页面的版本、模块和文件路径坐标,因为目标页面属于与当前页面不同的版本和模块。
Last year's xref:5.2@get-started:tour.adoc[excursions] were riveting!
如示例29所示,目标页面的版本坐标为 5.2
,模块坐标为 get-started
,文件路径坐标为 tour.adoc
。