使用锚点的超链接有时不起作用

使用锚点的超链接有时不起作用

我不确定这是网站配置问题还是hyperref软件包问题。以下两个链接是正确的(您可以通过将第一个参数复制\href{}{}并粘贴到浏览器中来验证)。

\href{https://en.wikipedia.org/wiki/Global_warming#Regional_trends}{Climate Change: Regional Trends}

\href{http://www.imperial.ac.uk/a-z-research/#group-M}{A-Z Research: Group M}

但是,单击第二个链接的 pdf 文件时不是工作。似乎试图打开的违规链接是

http://www.imperial.ac.uk/a-z-research/%23group-M

其中#已被 替换。但是,维基百科链接似乎在 URL 中%23显示为。#

那么,在生成 PDF 时我可以做什么来获得两个都这些链接可以正常工作。我更希望能够做到这一点,而不必手动点击链接并确定是否需要调整。

代码:

\documentclass{article}
\usepackage{hyperref}

\begin{document}

\href{https://en.wikipedia.org/wiki/Global_warming#Regional_trends}{Climate Change: Regional Trends}

\href{http://www.imperial.ac.uk/a-z-research/#group-M}{A-Z Research: Group M}

\end{document}

答案1

看来,在 Preview、Safari、TexShop 和 Skim 的当前版本(2020 年 3 月)中,单击链接时,所有#符号都会(错误地)转换为%23。考虑到以下情况,可以安全地将此称为这四个应用程序中的 bug:

URL 标准,第 4.3 节,每个有效 url 中 url-fragment 字符串前的 U+0023(#)应该始终是显式的,而不是百分比编码的。因此,所有三个测试浏览器的行为也都没有问题。

有效的 URL 字符串必须是带片段的相对 URL 字符串或带片段的绝对 URL 字符串。 - 带片段的相对 URL 字符串必须是相对 URL 字符串,后面可选跟着 U+0023 (#) 和 URL 片段字符串。 - 带片段的绝对 URL 字符串必须是绝对 URL 字符串,后面可选跟着 U+0023 (#) 和 URL 片段字符串。

最初由 @muzimuzhi 在https://github.com/latex3/hyperref/issues/110#issuecomment-593082128

答案2

根据评论,这是TeXShoppdf 查看器的问题,因为单击 Acrobat 中的链接似乎有效。

相关内容