glossaries
使用时如何更改词汇表链接的颜色hyperref
?我只想更改词汇表链接的颜色,而不是所有链接。
答案1
linkcolor
通常,链接颜色是通过包的选项设置的hyperref
。要仅影响glossaries
您必须重新定义该命令\glstextformat
。在文档你可以找到:
链接文本的显示方式取决于
\glstextformat{⟨text⟩}
例如,要使所有链接文本以无衬线字体显示,请执行以下操作:
\renewcommand*{\glstextformat}[1]{\textsf{#1}}
关于此评论,这里有一个例子:
\documentclass[10pt,a4paper]{report}
\usepackage{xcolor}
\usepackage[colorlinks=true]{hyperref}
\usepackage[xindy]{glossaries}
\renewcommand*{\glstextformat}[1]{\textcolor{green}{#1}}
\makeglossaries
\newglossaryentry{A}{name={A}, description={A is A}}
\newglossaryentry{AA}{name={AA}, description={AA is AA}}
\newglossaryentry{B}{name={B}, description={B is B}}
\newglossaryentry{C}{name={C}, description={C is C}}
\newglossaryentry{CC}{name={CC}, description={CC is CC}}
\begin{document}
Here I cite either \gls{A}, \gls{AA}, \gls{B}, \gls{C} or \gls{CC}.
I want three groups in the glossary output, indicated by \textbf{A},
\textbf{B} and \textbf{C} with entries in them according to their initial letter.
\printglossary[style=indexgroup]
\end{document}
答案2
我有一个类似的请求,唯一的区别是我根本不想有任何彩色的词汇表链接。Marco 的解决方案不能让我满意,因为它将所有链接更改为特定颜色。相反,我想保留相应的当前文本颜色。
.
另一种方法可能是在创建超链接之前将超链接颜色设置为当前文本颜色( ),\@linkcolor
然后在新命令中将其重置为全局使用的链接颜色():
\newcommand*{\glsplainhyperlink}[2]{%
\colorlet{currenttext}{.}% store current text color
\colorlet{currentlink}{\@linkcolor}% store current link color
\hypersetup{linkcolor=currenttext}% set link color
\hyperlink{#1}{#2}%
\hypersetup{linkcolor=currentlink}% reset to default
}
然后,覆盖现有的\@glslink
以使用我们的命令:
\let\@glslink\glsplainhyperlink
完整示例:白色背景上的黑色链接和黑色背景上的白色链接:
\documentclass{report}
\usepackage{xcolor}
\usepackage[colorlinks,linkcolor=green]{hyperref}
\usepackage{glossaries}
\makeatletter
\newcommand*{\glsplainhyperlink}[2]{%
\colorlet{currenttext}{.}% store current text color
\colorlet{currentlink}{\@linkcolor}% store current link color
\hypersetup{linkcolor=currenttext}% set link color
\hyperlink{#1}{#2}%
\hypersetup{linkcolor=currentlink}% reset to default
}
\let\@glslink\glsplainhyperlink
\makeatother
\makenoidxglossaries
\newglossaryentry{GPU}{name={GPU}, description={Graphics Processing Unit}}
\begin{document}
I need a faster \gls{GPU}.
\colorbox{black}{\color{white}I need a faster \gls{GPU}.}
\printnoidxglossary
\end{document}
答案3
基于 oreiche 的解决方案,\glsplainhyperlink
像这样定义宏可能会更清楚一些:
\newcommand*{\glsplainhyperlink}[2]{%
\begingroup%
\hypersetup{hidelinks}%
\hyperlink{#1}{#2}%
\endgroup%
}
这样就无需保存和恢复当前链接/文本颜色,因为您只需告诉 hyperref 禁用所有链接装饰即可。需要分组以使设置仅影响组,否则文档中的所有后续链接都将不可见。
完整示例(厚颜无耻地从 oreiche 那里偷来的 :) ):
\documentclass{report}
\usepackage{xcolor}
\usepackage[colorlinks,linkcolor=green]{hyperref}
\usepackage{glossaries}
\makeatletter
\newcommand*{\glsplainhyperlink}[2]{%
\begingroup%
\hypersetup{hidelinks}%
\hyperlink{#1}{#2}%
\endgroup%
}
\let\@glslink\glsplainhyperlink
\makeatother
\makenoidxglossaries
\newglossaryentry{GPU}{name={GPU}, description={Graphics Processing Unit}}
\begin{document}
I need a faster \gls{GPU}.
\colorbox{black}{\color{white}I need a faster \gls{GPU}.}
\printnoidxglossary
\end{document}