将 \xrightarrow 的箭头设为超链接

将 \xrightarrow 的箭头设为超链接

为了不让包含大量新符号的大型文档的读者感到失望,我为所引入的每个符号都创建了一个指向其定义位置的超链接,以便读者可以随时参考该定义(尤其是当符号超载时)。

我使用的符号之一是使用\xrightarrow来自amsmath[1] 的标记箭头,并且我希望箭头是指向其定义的超链接,而不是标签(出于外部原因,主要是标签本身有时应该是对其他地方的引用)。

当然,将整体嵌入\xrightarrow到中\hyperlink{...}也会使标签成为一个链接,这是我不想要的(请参见下面的示例,我用它colorlinks=true来强调哪个部分是链接,哪个不是)。

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{hyperref}
\hypersetup{
    colorlinks=true
}

\newtheorem{definition}{Definition}

\begin{document}

\begin{definition}[\hypertarget{Arrow}{Arrow}]
    Here I define \(A\xrightarrow{\text{\rm long label}} B\).
\end{definition}

\[A \hyperlink{Arrow}{\xrightarrow{\textrm{long label}}} B\]

\end{document}

上面代码的结果,我们看到箭头和标签都是红色的,也就是链接。

查看有关\xrightarrow(例如这里),似乎可以通过(最坏情况)重新定义命令来实现,但我不太习惯这样amsmath做。另外,我查看了hyperref手册,找到了一个命令来从标签中排除一些文本(执行类似操作hyperlink{Arrow}{\xrightarrow{\exclude{\text{long label}}}}),但我找不到这样的命令。


备注:问题是关于取消标签的链接,而不仅仅是删除颜色(这是在MWE中添加的以澄清问题,但最终不会打开)。


[1] 背景是我定义了一个标记转换系统的转换(针对计算机科学家)。

答案1

链接不会链接“内容”。它们只会添加一个矩形注释框。内容只与决定框的大小有关。因此,如果您想要较小的链接区域,则需要隐藏不应添加到框中的内容。例如

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{hyperref}
\hypersetup{
    %colorlinks=true %show box
}

\newtheorem{definition}{Definition}

\begin{document}

\begin{definition}[\hypertarget{Arrow}{Arrow}]
    Here I define \(A\xrightarrow{\text{long label}} B\).
\end{definition}

\[A \xrightarrow{\text{long label}}
    \llap{\hyperlink{Arrow}{\hphantom{$\xrightarrow{\text{long label}}$}\rule{0pt}{4pt}}\kern2pt} B\]

\end{document}

主要问题是,在不干扰数学间距的情况下添加它是相当困难的。

在此处输入图片描述

相关内容