\href: 由于 URL 编码哈希符号 (# => %23) 导致链接断开

\href: 由于 URL 编码哈希符号 (# => %23) 导致链接断开

我尝试使用\href包含 HTML 锚点指针的 Web URL 链接。因此,我在 URL 中使用井号 ( #)。例如,链接页面https://github.com/latex3/hyperref#bug-reports

这是一个简单的例子:

\documentclass{article}
\usepackage{hyperref}
\begin{document}

\href{https://github.com/latex3/hyperref#bug-reports}{link with hash that doesn't work}

\href{https://en.wikibooks.org/wiki/LaTeX/Hyperlinks#Commands}{link with hash where it works}

\end{document}

问题是,在生成 PDF 时,井号会被 URL 转义字符替换%23。如果我单击 PDF 中的链接,浏览器将以以下形式获取链接:

https://github.com/latex3/hyperref%23bug-reports

但这会导致 GitHub 出现 404 错误。

如果我将地址栏中的替换为,就可以加载正确的页面%23#

在其他页面(例如 wikibooks)上,带有 URL 转义的链接可以#工作(如上例所示)。

是否可以关闭链接中井号的 URL 转义?

我在 MacOS Catalina 上使用 pdfTeX 3.14159265-2.6-1.40.21(TeX Live 2020)。

答案1

正如评论中所述,这里的问题不是 LaTeX,也不是浏览器,而是 pdf 查看器。MacOS 上的某些 PDF 查看器似乎会转换由 LaTeX 正确插入的 PDF 中的井号。

有一张桌子此错误报告显示 MacOS 上的哪些 pdf 查看器会产生问题:

存在哈希问题的 PDF 查看器表格

这个漏洞似乎是苹果公司的问题,于今年 3 月 2 日报告。目前还没有修复。我认为目前的解决方法是使用不同的 PDF 查看器。

这个问题也可能是这个问题

答案2

我没有资格对之前的回复发表评论,但我想指出的是,当您选择菜单选项下载 PDF 格式的文档时,Google Docs 也会犯此错误。我使用 URL 缩短器来解决这个问题。

答案3

我想指出一些更复杂的事情正在发生。@nnn 正确地指出,一些 OSX 的查看器已损坏。

pdfTeX 3.141592653-2.6-1.40.24使用on编译代码OSX 10.15.7并使用 Preview 11.0 打开,第一的链接失败,#替换为%23,但是第二链接工作正常。我看不出这两个链接和 的使用有什么区别#。还请注意 是23的 ASCII 十六进制值#。一定有更复杂的事情发生。

为了提供有用的答案,OSX 10.15.7 上的 Google Chrome(v.99.0.4844.83)将正确打开这些文件。

相关内容