我在准备一本厚书时使用glossaries
。 的标准设置glossaries
对我来说效果很好,但有一个例外。这是一个外来词词汇表,有些词汇表条目贯穿了整本书,我不想为它们添加所有的页码。相反,我希望页码参考为各个地方。
这是我第一次尝试使用条件句,答案是这个问题作为起点。目标是,如果有最多十二页和/或页码范围需要引用,则引用所有页码,如果更多,则生成各个地方而不是页码。
这是我的起点,但在这里我已经得到了各个地方有多个页码,并且没有单个页码。
\documentclass{article}
\usepackage{xstring}
\usepackage[shortcuts]{glossaries}
\newif\ifmulti %replace with something like \ifmorethan{#}?
\newglossarystyle{mylist}{%
\renewenvironment{theglossary}{\begin{description}}{\end{description}}%
\renewcommand*{\glossaryentryfield}[5]{%
\multifalse%
\IfSubStr*{\detokenize{##5}}{delimN}{\multitrue}{\relax}%
\IfSubStr*{\detokenize{##5}}{delimR}{\multitrue}{\relax}%
\item[\glsentryitem{##1}\glstarget{##1}{##2}] ##3\glspostdescription \space {%
\ifmulti \emph{passim} \else \fi ##5}%
}%
}
\makeglossaries
\glsaddkey
{extra}
{\relax}
{\glsentryextra}
{\Glsentryextra}
{\glsextra}
{\Glsextra}
{\GLSextra}
\newglossaryentry{veda}
{
name=veda,
description={Religious text with hymns to the gods. The Vedas consist of Sama Veda, Rig Veda, Yajur Veda and Atharva Veda},
text=veda,
plural=vedas,
sort=veda
}
\newglossaryentry{viparit}
{
name={vipar\={\i}t karna},
description={Acting contrary to one’s own nature},
text=viparit karna,
extra={Vipar\={\i}t karna\={\i}},
sort=viparit karna
}
\newglossaryentry{wasiat}
{
name={wasiyat, wasiat},
description={Precept, commandment},
text=wasiat,
extra=wasiyat,
sort=wasiyat
}
\begin{document}
\gls{veda}
\gls{viparit}
\glsextra{wasiat}
\newpage
\gls{viparit}
\glsextra{veda}
\newpage
\gls{veda}
\printglossary[toctitle=\mbox{Glossary of Foreign Words},style=mylist]
\end{document}
后续问题:在\newglossaryentry
相关的几个描述中添加一些内容,阻止人们使用数字,这样会更容易吗?我可以直接输入, \emph{passim}
到description=
字段中,然后以某种方式关闭该特定条目的页码引用?