带有多个 # 的链接无法正常工作

带有多个 # 的链接无法正常工作

我想在文档中引用在线文档的特定部分。以下是链接:

\documentclass{report}

\usepackage{hyperref}

\begin{document}

\href{https://raytracing-docs.nvidia.com/optix_6_0/guide_6_0/index.html\#host\#graph-nodes}{NVidia}

\end{document}

如您所见,有两个#。如果不对它们进行转义,我会出现此错误:
! Illegal parameter number in definition of \Hy@tempa.

但是如果我逃避两者,第二个链接之后的链接部分将不会被考虑。

我怎样才能使链接正常工作?

答案1

试试这个(希望没有地方有两个连续哈希值的链接)

补充:虽然补丁中的“正确”链接位于 pdf 中,但评论表明并非每个 pdf 查看器都能处理这个问题。因此最好寻找不使用两个哈希的替代链接。

\documentclass{report}
\usepackage{hyperref}
\makeatletter
\begingroup
  \catcode`\$=6 %
  \catcode`\#=12 %
  \gdef\href@$1{\expandafter\href@split$1###\\}%
  \gdef\href@split$1#$2##$3\\$4{%
    \hyper@@link{$1}{$2}{$4}%
    \endgroup
  }%
\endgroup
\makeatother
\begin{document}
\makeatother
\href{https://raytracing-docs.nvidia.com/optix_6_0/guide_6_0/index.html#host#graph-nodes}{NVidia}

\end{document}

答案2

因为我偶然发现一样的问题并打开了一个超链接问题,我想分享开发人员的回复这里:

显然,超过一个#字符不是正确的 URI,解决方案是将#除第一个字符之外的所有字符替换为%23,即在您的示例中

\href{https://raytracing-docs.nvidia.com/optix_6_0/guide_6_0/index.html\#host\%23graph-nodes}{NVidia}

相关内容