- 为什么在转换后包含下划线 (
_
) 或插入符号 (^
) 的URL不起作用? -
这个问题的发生是因为标记解析器将URL的一部分(即链接目标)理解为有效的文本格式标记。大多数轻量级标记语言都有这个问题,因为它们不使用基于语法的解析器。AsciiDoc语言计划在未来更谨慎地处理URL(参见[Asciidoctor issue #281^]Asciidoctor issue #61https://github.com/asciidoctor/asciidoctor/issues/61)。值得庆幸的是,有许多方法可以通过AsciiDoc传递机制包含任意复杂度的URL。
Example 1. 解决方案A获取链接行为的最简单方法是将其分配给一个属性。
= 文件标题 :link-with-underscores: https://asciidoctor.org/now_this__link_works.html 这个URL有重复的下划线 {link-with-underscores}。
AsciiDoc处理器在链接分配给属性时不会断开含有下划线的链接,因为内联格式化标记是在属性之前被替换的。在对文档的其余部分进行格式化(加粗、强调、等宽字体等)时,URL保持隐藏。
Example 2. 方案B这个URL有重复的下划线传递:宏[https://asciidoctor.org/now_this__link_works.html]。
pass宏会从文档中移除URL,对URL应用`宏`的替换,然后在整个文档的替换完成后,将处理过的URL恢复到其原来的位置。
或者,你可以使用双加号内联宏(
++
)仅包围URL。然而,当你使用这种方法时,AsciiDoc处理器将不再把它识别为URL,所以你必须使用明确的`link`前缀。这个URL有重复的下划线链接:https://asciidoctor.org/now_this__link_works.html。
要了解更多信息,请查看[Asciidoctor问题#625^](https://github.com/asciidoctor/asciidoctor/issues/625)。