我试图让\href
下面代码中的两个函数使用不同的选项无需调用宏或全局默认值。
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{www.overleaf.com}{link1}
\href{www.overleaf.com}{link2}
\end{document}
我们的想法是,其中一个将继续采用默认值,并通过第二个,我相信,选项hidelinks = true
:保留可点击属性但删除默认蓝框。我已经看到很多例子展示了如何使用宏来实现这一点,但由于我只想在极少数情况下使用非默认行为,所以我更喜欢使用选项范围\href
直接。
这在精神上与@CephBirk 给出的答案非常相似如何对不同的 \href 命令使用不同的颜色?但我不知道如何让它移除盒子而不是改变颜色。
答案1
您传递的选项\href
将传递到href
选项组,但处理链接外观的选项属于Hyp
选项组。如果您不想将界面保留到选项href
组,那么这就足够了:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\DeclareRobustCommand*{\Myhref}[1][]{% definition copied form hyperref.sty
\begingroup
\setkeys{Hyp}{#1}% Changed href to Hyp
\@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}%
}
\makeatother
\begin{document}
\Myhref{www.overleaf.com}{link1}
\Myhref[hidelinks]{www.overleaf.com}{link2}
\Myhref{www.overleaf.com}{link3}
\end{document}
打印结果为:
如果您仍要使用标准选项,\href
那么您需要做更多的事情:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\DeclareRobustCommand*{\Myhref}[1][]{%
\begingroup
\hypersetup{#1}%
\inner@href % Call an "inner href"
}
\DeclareRobustCommand*{\inner@href}[1][]{%
\setkeys{href}{#1}%
\@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}%
}
\makeatother
\begin{document}
\Myhref{www.overleaf.com}{link1}
\Myhref[hidelinks]{www.overleaf.com}{link2}
\Myhref{www.overleaf.com}{link3}
\end{document}
然后\Myhref
命令有二可选参数:
\Myhref[<Hyp-options>][<href-options>]{<link>}{<text>}