停止在页面列表中显示词汇表交叉引用

停止在页面列表中显示词汇表交叉引用

我想在词汇表中交叉引用词汇表条目,但我不希望这些交叉引用出现页码。目前,我有:

\documentclass{report}
\usepackage{hyperref}
\usepackage[xindy]{glossaries}\makeglossaries

\newglossaryentry{LaTeX}{
  name=LaTeX,
  description={A typesetting engine for producing beautiful \glspl{document}}
}
\newglossaryentry{document}{
  name=document,
  description={A file that contains a bunch of text}
}

\begin{document}

This is a sentence about \gls{LaTeX} and \glspl{document}.
\glsaddall
\clearpage
\printglossary

\end{document}

“document” 的条目显示它在第 1 页和第 2 页被引用,但我只希望它显示第 1 页的引用。但是,我想保留从“LaTeX”条目到“document”条目的超链接。

答案1

\glshyperlink[document]{document}在词汇表描述中用代替\glsps

\documentclass{report}
\usepackage{hyperref}
\usepackage[xindy]{glossaries}\makeglossaries

\newglossaryentry{LaTeX}{
  name=LaTeX,
  description={A typesetting engine for producing beautiful \glshyperlink{document}{document}}
}
\newglossaryentry{document}{
  name=document,
  description={A file that contains a bunch of text}
}

\begin{document}

This is a sentence about \gls{LaTeX} and \glspl{document}.
\glsaddall
\clearpage
\printglossary

\end{document}

答案2

根据 jlab 的回答以及对词汇表包的进一步检查,我能够将以下部分添加到我的序言中,通过\gls仅在命令评估范围内重新定义命令系列来解决问题\printglossary。 (如果您使用其他命令来打印词汇表,例如\printglossaries,则应在调用中替换该命令名称\AddToHook

\makeatletter
\AddToHook{cmd/printglossary/before}{%
    % SAVE THE ORIGINAL DEFINITIONS
    \let\o@gls\gls%
    \let\o@Gls\Gls%
    \let\o@glspl\glspl%
    \let\o@Glspl\Glspl%
    %
    % NEW DEFINITIONS THAT DON'T PRODUCE PAGE ENTRIES
    \renewcommand*\gls[1]{\glshyperlink[\glsentryname{#1}\@empty]{#1}}%
    \renewcommand*\Gls[1]{\glshyperlink[\Glsentryname{#1}\@empty]{#1}}%
    \renewcommand*\glspl[1]{\glshyperlink[\glsentryplural{#1}\@empty]{#1}}%
    \renewcommand*\Glspl[1]{\glshyperlink[\Glsentryplural{#1}\@empty]{#1}}%
}
\AddToHook{cmd/printglossary/after}{%
    % RESTORE ORIGINAL DEFINITIONS AFTER GLOSSARY
    \let\gls\o@gls%
    \let\Gls\o@Gls%
    \let\glspl\o@glspl%
    \let\Glspl\o@Glspl%
}
\makeatother

如果词汇表位于文档的末尾,则可以简化,因为我们不需要恢复原始行为:

\makeatletter
\AddToHook{cmd/printglossary/before}{%
    \renewcommand*\gls[1]{\glshyperlink[\glsentryname{#1}\@empty]{#1}}%
    \renewcommand*\Gls[1]{\glshyperlink[\Glsentryname{#1}\@empty]{#1}}%
    \renewcommand*\glspl[1]{\glshyperlink[\glsentryplural{#1}\@empty]{#1}}%
    \renewcommand*\Glspl[1]{\glshyperlink[\Glsentryplural{#1}\@empty]{#1}}%
}
\makeatother

相关内容