如何使用 hyperref 包仅为一个链接着色?

如何使用 hyperref 包仅为一个链接着色?

我正在使用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选项;hidelinkshyperref

(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}

蓝色文本中的彩色链接

相关内容