![将 \xrightarrow 的箭头设为超链接](https://linux22.com/image/419042/%E5%B0%86%20%5Cxrightarrow%20%E7%9A%84%E7%AE%AD%E5%A4%B4%E8%AE%BE%E4%B8%BA%E8%B6%85%E9%93%BE%E6%8E%A5.png)
为了不让包含大量新符号的大型文档的读者感到失望,我为所引入的每个符号都创建了一个指向其定义位置的超链接,以便读者可以随时参考该定义(尤其是当符号超载时)。
我使用的符号之一是使用\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}
主要问题是,在不干扰数学间距的情况下添加它是相当困难的。