AsciiDoc提供了多种创建链接(又称超链接)到其他可寻址资源的方法。这一部分的页面记录了如何在AsciiDoc中添加和自定义链接。

网址和链接

链接的[.term]目标*是一个https://en.wikipedia.org/wiki/URL[统一资源定位符^] (URL),也就是一个网址。读者点击以导航到该目标的文本被称为[.term]*链接文本

Note
您可能有时会看到使用URI来代替URL的情况。虽然在某些情况下URI在技术上更加正确,但是URL是公认的术语。

URL是唯一资源的网络地址。URL可以是绝对的,也可以是相对的。一个绝对URL包含协议、权威部分(即域名)、可选的文件扩展名的路径,以及以查询字符串和片段形式的元数据(例如,https://example.org/asciidoc/links.html?source=home)。你可能会认识到绝对URL,就是你在网页浏览器的位置栏中输入的,比如这个页面的URL。相对URL是绝对URL的一部分,从根路径或子路径之后开始(例如,guides/getting-started.html)。

由于绝对URL具有明确且可识别的语法,AsciiDoc处理器会检测URL(除非被转义)并在应用宏替换步骤的任何地方自动将它们转换为链接。这也适用于普通电子邮件地址。您可以在autolinks.html中了解更多关于此行为的信息。要链接到相对URL,您必须明确将其指定为链接宏的目标。

链接相关的宏

如果你不想直接显示裸露的URL或电子邮件地址作为链接文本,你可能想要自定义那个文本。或者你可能想要给链接添加一些属性,比如一个角色。为此,你可以使用URL宏,或者如果你要链接到一个复杂的URL,则使用更明确的链接宏。(你也可以使用链接宏通过相对URL或者不被识别为绝对URL的URL制作一个指向可寻址资源的链接)。

当链接到一个电子邮件地址时,您可以使用专门的mailto宏来增强链接,并预填充主题和正文文本。

编码保留字符

如果URL包含保留字符,例如双引号(")、空格或不受限制的AsciiDoc格式化标记,您需要使用URI编码对这些字符进行编码。例如,双引号编码为`%22`。下划线编码为`%5F`。如果您不编码这些字符,URL可能会被破坏或导致处理器失败。

假设我们正在创建一个URL,其中包含一个名为`q`的查询字符串参数,该参数包含保留字符:

https://example.org?q=label:"Requires docs"

要对URL进行编码,请在浏览器中打开开发者工具,并将URL传递给`encodeURI`函数进行编码:

encodeURI('http://example.org?q=label:"Requires docs"')

我们在AsciiDoc文档中会使用的编码后的URL是:

https://example.org?q=label:%22Requires%20docs%22

根据Web应用程序的功能,空格字符可以编码为 + 而不是 %20

隐藏URL协议

如果链接文本是一个裸露的URL(又称URI),无论该链接是自动创建的还是使用链接相关的宏创建的,你可以配置AsciiDoc处理器来隐藏该方案(例如,https://)。隐藏方案可以使URL更易读——或许甚至更易于被不太熟悉技术术语的人识别。

要配置AsciiDoc处理器以在不显示方案部分的情况下显示链接的URL,请在AsciiDoc文档的头部设置`hide-uri-scheme`属性。

= 文件标题
隐藏URI方案

https://asciidoctor.org
  1. 请注意在属性名中使用`uri`而不是`url`。

当设置了`hide-uri-scheme`属性时,上述URL将如下显示给读者:

请注意URL中缺少_https://_。链接目标中仍然会存在该前缀。