![如何使用 hyperref 包仅为一个链接着色?](https://linux22.com/image/447216/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20hyperref%20%E5%8C%85%E4%BB%85%E4%B8%BA%E4%B8%80%E4%B8%AA%E9%93%BE%E6%8E%A5%E7%9D%80%E8%89%B2%EF%BC%9F.png)
我正在使用hyperref
带有hidelinks
选项的软件包,但有一个链接我想被着色,我试图在hypersetup
仅包含该特定链接的环境中使用覆盖命令来执行此操作。为什么这不起作用?
\documentclass{minimal}
\usepackage[hidelinks]{hyperref}
\begin{document}
\href{stackexchange.com}{hide this link}\\
{\hypersetup{colorlinks=true}{\href{stackexchange.com}{do not hide this link}}}\\
\href{stackexchange.com}{hide this link}
\end{document}
结果:
该方法反过来也正如预期的那样工作:
\documentclass{minimal}
\usepackage{hyperref}
\begin{document}
\href{stackexchange.com}{do not hide this link}\\
{\hypersetup{hidelinks}{\href{stackexchange.com}{hide this link}}}\\
\href{stackexchange.com}{do not hide this link}
\end{document}
答案1
colorlinks 目前是仅用于前言的选项(如果您使用新的 pdfmanagement,则此选项会发生变化)。如果您只想要一个彩色链接,我建议只使用 \color:
\documentclass{article}
\usepackage[hidelinks]{hyperref}
\usepackage{xcolor}
\begin{document}
\href{stackexchange.com}{hide this link}\\
{\color{red}{\href{stackexchange.com}{do not hide this link}}}\\
\href{stackexchange.com}{hide this link}
\end{document}
答案2
我相信这\hypersetup
实际上仅适用于序言,而且我有点惊讶您的第一个例子(您\hypersetup
在文档正文中调用的地方)竟然起作用了。
[编辑:正如 Ulrike Fischer 指出的那样,\hypersetup
在文档主体中起作用,但并非对所有选项都起作用;fi,colorlinks
仅在序言中起作用。]
\hypersetup{colorlinks}
根据我的假设不是预计在文档正文中起作用,我建议采用以下解决方法:
(1)保存当前文字颜色使用 pkgxcolor
使用自定义名称 ( saved
),以便稍后检索。通常,文本颜色为black
,但我们寻求一种足够灵活的解决方案;
(2)在序言中,将所有链接的颜色设置为所述默认文本颜色( ),有效模仿的allcolors=saved
选项;hidelinks
hyperref
(3)在文档中,设置本地(在组内)将所有链接的颜色改为所需的颜色(类似于您自己的方法)。
\documentclass{article}
\usepackage{xcolor}
\colorlet{saved}{.} % saves the current text color as "saved"
\usepackage[colorlinks]{hyperref}
\hypersetup{allcolors=saved}
\begin{document}
\href{stackexchange.com}{hide this link}
{\hypersetup{allcolors=magenta}{\href{stackexchange.com}{do not hide this link}}}
\href{stackexchange.com}{hide this link}
\end{document}
这是除序言中black
设置以外的默认文本颜色:\color{blue}