禁用词汇表某些条目中的超链接

禁用词汇表某些条目中的超链接

我正在使用词汇表在我的论文中有很多包。有些条目在整个文档中出现的频率很高。我想禁用这些条目的超链接,但保留所有其他条目的超链接。

我曾尝试将其放在\glsdisablehyper频繁条目之前,但没有成功。

答案1

对于这些“频繁出现”的条目,请使用带星号的版本glossaries“用户命令”(例如\gls*),以抑制超链接。

\documentclass{article}

\usepackage{hyperref}

\usepackage{glossaries}
\makeglossaries

\newglossaryentry{electrolyte}{name=electrolyte,
    description={solution able to conduct electric current}}

\newglossaryentry{pi}{name={\ensuremath{\pi}},
    description={ratio of circumference of circle to its diameter},sort=pi}

\begin{document}

Some text about \gls{electrolyte} and \gls*{pi}.

\printglossaries

\end{document}

答案2

如果您升级到最新版本glossaries(撰写本文时为 v4.09),则可以加入hyper使用条目时设置键默认值的机制。这是一个简单示例,它仅禁用特定条目的超链接(ut):

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\usepackage{glossaries}
\makeglossaries

% dummy entries copied from example-glossaries-brief.tex

\newglossaryentry{lorem}{name={lorem},description={ipsum}}

\newglossaryentry{dolor}{name={dolor},description={sit}}

\newglossaryentry{amet}{name={amet},description={consectetuer}}

\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}

\newglossaryentry{ut}{name={ut},description={purus}}

\newglossaryentry{elit}{name={elit},description={vestibulum}}


\renewcommand*{\glslinkcheckfirsthyperhook}{%
 \ifdefstring\glslabel{ut}%
 {\setkeys{glslink}{hyper=false}}%
 {}%
}

\begin{document}

Use the entries: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Use the entries again: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Force the hyperlink on: \gls+{ut} or \gls[hyper=true]{ut}.

\printglossaries

\end{document}

得出的结果为:

生成的文档的图像

对于更通用的解决方案,您可以列出所有不应具有超链接的条目的标签(例如,使用 提供的内部列表宏etoolbox),或者您可以user1在定义条目时使用键来将其标识为不应具有超链接的条目。例如:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\usepackage{glossaries}
\makeglossaries

% dummy entries copied from example-glossaries-brief.tex

\newglossaryentry{lorem}{name={lorem},description={ipsum}}

\newglossaryentry{dolor}{name={dolor},description={sit},user1={off}}

\newglossaryentry{amet}{name={amet},description={consectetuer},user1={off}}

\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}

\newglossaryentry{ut}{name={ut},description={purus},user1={off}}

\newglossaryentry{elit}{name={elit},description={vestibulum}}


\renewcommand*{\glslinkcheckfirsthyperhook}{%
 % Get the value of the user1 field
 \glsletentryfield{\thisvalue}{\glslabel}{useri}%
 % Test this value
 \ifdefstring\thisvalue{off}%
 {\setkeys{glslink}{hyper=false}}%
 {}%
}

\begin{document}

Use the entries: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Use the entries again: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Force the hyperlink on: \gls+{ut} or \gls+{dolor}.

\printglossaries

\end{document}

得出的结果为:

生成的文档的图像

另一种可能性是在第一次使用时允许超链接,然后在后续使用时禁用它:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\usepackage{glossaries}
\makeglossaries

% dummy entries copied from example-glossaries-brief.tex

\newglossaryentry{lorem}{name={lorem},description={ipsum}}

\newglossaryentry{dolor}{name={dolor},description={sit},user1={off}}

\newglossaryentry{amet}{name={amet},description={consectetuer},user1={off}}

\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}

\newglossaryentry{ut}{name={ut},description={purus},user1={off}}

\newglossaryentry{elit}{name={elit},description={vestibulum}}


\renewcommand*{\glslinkcheckfirsthyperhook}{%
  \ifglsused{\glslabel}
  {%
    % Get the value of the user1 field
    \glsletentryfield{\thisvalue}{\glslabel}{useri}%
    % Test this value
    \ifdefstring\thisvalue{off}%
   {\setkeys{glslink}{hyper=false}}%
   {}%
  }%
  {}%
}

\begin{document}

Use the entries: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Use the entries again: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Force the hyperlink on: \gls+{ut} or \gls+{dolor}.

\printglossaries

\end{document}

得出的结果为:

生成的文档的图像

编辑:提供了一种更简单的方法glossaries-extra扩展包。使用此包,您可以为每个条目分配一个类别。默认值为,general但可以通过使用category键覆盖。这只是一个标签(避免使用特殊字符),用于独立于标识符type和来识别特定条目组parent。(例如,\newabbreviation将类别设置为abbreviation并将\newacronym类别设置为acronym。)

类别可以具有相关属性。该nohyper属性表示这些条目的超链接应默认为关闭。例如,我可以有一个common类别(表示常用术语),其nohyper属性为开启:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\usepackage{glossaries-extra}
\makeglossaries

\glssetcategoryattribute{common}{nohyper}{true}

% dummy entries copied from example-glossaries-brief.tex

\newglossaryentry{lorem}{name={lorem},description={ipsum}}

\newglossaryentry{dolor}{name={dolor},description={sit},category={common}}

\newglossaryentry{amet}{name={amet},description={consectetuer},category={common}}

\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}

\newglossaryentry{ut}{name={ut},description={purus},category={common}}

\newglossaryentry{elit}{name={elit},description={vestibulum}}

\begin{document}

Use the entries: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Use the entries again: \gls{lorem}, \gls{dolor}, \gls{amet},
\gls{adipiscing}, \gls{ut}, \gls{elit}.

Force the hyperlink on: \gls+{ut} or \gls+{dolor}.

\printglossaries

\end{document}

答案3

nonumber您可以在创建首字母缩略词/词汇表条目时,通过设置选项来定义是否在末尾列出页码true。使用glossaries-extra此选项可能如下所示:

\newabbreviation[nonumberlist=true]{foo}{Foo}{Foo description}
\longnewglossaryentry{bar}{name={Bar},nonumberlist=true}{Bar description}

相关内容