有什么方法可以防止 hyperref 加下划线:
1)与以下词汇表条目相关的\gls
2)脚注标记\footnote
\footref
3)包装中设置的脚注标记footmisc
?
MWE 用于测试(您需要编译两次)。
\documentclass[a4paper, 12pt]{article}
\usepackage{hyperref}
\usepackage{glossaries}
\usepackage{footmisc}
\hypersetup{
pdfborderstyle={/S/U/W 0.5},%
}
\newglossaryentry{foo}{name=foo, description=bar}
\begin{document}
This document uses the most advanced \gls{foo} technology.
There is also a footnote\footnote{\label{fn}This is the footnote}.
It can be referenced multiple times.\footref{fn}
\end{document}
答案1
正如 Ulrike Fischer 提到的:您必须修改\gls
以及所有其他需要修改链接的命令以本地重置超链接样式。
为此,您可以使用包在要修改的命令开头xpatch
添加一个命令,并在这些命令结尾添加另一个命令。\hypersetup
\hypersetup
但是,这并不总是有效,例如\gls
不是一个处理其参数的完整命令,而是调用内部glossaries
命令\@gls
来处理参数。简化:\gls
重写为\initialstuff\@gls
,这意味着\gls{abc}
被执行为\initialstuff\@gls{abc}
。因此,如果你将它附加\hypersetup
到\gls
它,就会变成\initialstuff\@gls\hypersetup{}
,这意味着\gls{abc}
将被执行为\initialstuff\@gls\hypersetup{}{abc}
,这是行不通的。这里显而易见的解决方案是 patch \@gls
。同样,要将某些内容附加到 ,\footnote
您需要 patch \@footnotetext
。
梅威瑟:
\documentclass[a4paper, 12pt]{article}
\usepackage{hyperref}
\usepackage{glossaries}
\usepackage{footmisc}
\usepackage[nameinlink]{cleveref} % for demonstration purposes
\usepackage{xpatch}
\makeatletter
\xpretocmd{\gls}{\hypersetup{hidelinks}}{}{}
\xapptocmd{\@gls}{\hypersetup{pdfborderstyle={/S/U/W 0.5}}}{}{}
\xpretocmd{\footnote}{\hypersetup{hidelinks}}{}{}
\xapptocmd{\@footnotetext}{\hypersetup{pdfborderstyle={/S/U/W 0.5}}}{}{}
\xpretocmd{\footref}{\hypersetup{hidelinks}}{}{}
\xapptocmd{\footref}{\hypersetup{pdfborderstyle={/S/U/W 0.5}}}{}{}
\makeatother
\hypersetup{
pdfborderstyle={/S/U/W 0.5},%
}
\newglossaryentry{foo}{name=foo, description=bar}
\begin{document}
\section{First section}
\label{sec:first}
This document (See \Cref{sec:first}) uses the most advanced \gls{foo} technology. See again \Cref{sec:first}.
There is also a footnote\footnote{\label{fn}This is the footnote}.
It can be referenced multiple times.\footref{fn} See \Cref{sec:first} for the third time.
\end{document}
结果: