我想在词汇表中交叉引用词汇表条目,但我不希望这些交叉引用出现页码。目前,我有:
\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