我正在尝试实现这个效果现有问题:\gls
应该产生超链接,但没有分散注意力的框架,而所有其他链接都照常运行。
这回答这个问题的答案是将边框颜色改为白色。但是,这往往会掩盖参考文献周围的标点符号。因此,我尝试将其设置pdfborder
为零,但似乎没有效果。
经过反复尝试,我最终得到了这个 MWE:
\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{glossaries}
\newacronym{foo}{foo}{foobar}
\makenoidxglossaries
\defglsentryfmt[\glsdefaulttype]{\hypersetup{linkbordercolor=green,pdfborder=0 0 0.1}\glshyperlink[\glsgenentryfmt]{\glslabel}}
\begin{document}
\section{\label{x}Foo}
In Section~\ref{x} we saw that \gls{foo}.
\printnoidxglossaries
\end{document}
请注意,实际上有两个边框,一个受我的设置影响,一个不受影响。您还可以看到句号几乎完全被遮挡,因此白色边框是不可取的。第二个超链接来自哪里?我如何影响它的外观?
答案1
用 指定的格式\defglsentryfmt
表示在诸如 之类的命令的超链接中使用的文本\gls
。由于\defglsentryfmt
已被重新定义为使用\glshyperlink
,这会插入超链接,这会导致嵌套超链接。
实际上,最好只是重新定义用于生成超链接的命令。在内部,这是\@glslink
但\glsenablehyper
将其分配给 的值\glsdohyperlink
,因此您只需重新定义\glsdohyperlink
然后使用\glsenablehyper
。像这样:
\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{glossaries}
\newacronym{foo}{foo}{foobar}
\makenoidxglossaries
\renewcommand*{\glsdohyperlink}[2]{%
{\hypersetup{linkbordercolor=green}\hyperlink{#1}{#2}}}
\glsenablehyper
\begin{document}
\section{\label{x}Foo}
In Section~\ref{x} we saw that \gls{foo}.
\printnoidxglossaries
\end{document}
这产生了