我正在编写一个文档,其中的词汇表条目来自索引。这很有效,直到我添加条件文本,指示是否添加了描述。看起来 TeX 陷入了无界递归,但我似乎无法理解这一点。如果不添加索引条目,这就可以正常工作。任何帮助都非常感谢。
\documentclass{article}
\usepackage{imakeidx}
\usepackage{enumitem}
\usepackage[automake]{glossaries}
\makeindex
\makeatletter
\def\ifentry#1#2#3{%
\edef\tmp{#1}%
\ifx\tmp\@empty%
#3%
\else%
#2%
\fi%
}
\makeatother
\newglossarystyle{descriptiontest}{%
\setglossarystyle{indexgroup}
\renewcommand{\glossentry}[2]{
\item \textbf{{\glossentryname{##1}}}
\edef\tmp{\glsentrydesc{##1}}
\ifentry\tmp{Description: '\tmp'}{No description}
}
}
\newglossaryentry{ham}{name={ham}, description={goes with eggs\index{ham}}}
\newglossaryentry{eggs}{name={eggs}, description=}
\makeglossaries
\begin{document}
\glsaddall
\printglossary[style=descriptiontest]
\end{document}
答案1
由 Nicola Talbot 在 comp.text.tex 上整理:
词汇表包附带条件命令,用于测试是否已设置键。\ifglshasdesc 不仅测试空描述,还测试描述是否仅设置为 \nopostdesc