将符号添加到词汇表条目并限制在描述字段中?

将符号添加到词汇表条目并限制在描述字段中?

我使用了杰弗里·琼斯关于如何创建各种词典(未修改的代码):

    \documentclass{article}
\newcommand*{\glossaryname}{Dictionary}
\usepackage[nonumberlist]{glossaries}
\newcommand{\dictentry}[2]{%
  \newglossaryentry{#1}{name=#1,description={#2}}%
  \glslink{#1}{}%
}
\makeglossaries

\begin{document}
\dictentry{aardvark}{an animal}%
\dictentry{lion}{another animal, but with
  a really long description that spills over many, many, many, many, many, 
  many, many, many, many, many, many, many, many, many, many, many, many, 
  many, many, many, many, many, many, many, many, many, many lines}
\dictentry{zebra}{yet another animal}%
\printglossary[style=list]%
\end{document}

我的第一个问题是:我如何添加其他字段(或者是否可能),例如词汇表提供的符号字段,这样我只需要添加带有符号的最后一个括号,\dictentry{concept}{description}{symbol}(我还不习惯摆弄 newcommand 函数,我试过但未能添加符号字段)

第二个问题是:使用词汇表包时,描述字段的长度是否有限制?我之所以问这个问题,是因为使用上面描述的设置,当条目太大时(输出文档中大约有 8-9 行文本),条目似乎不会添加到 gls 文件中。

答案1

我只能回答你的第二个问题——引用词汇表常见问题解答:

如果您的描述非常长,则可能会超出 makeindex 的缓冲区。在这种情况下,请尝试定义一个存储长描述的命令,并在定义条目时使用该命令。

完整信息可参见这里

编辑:引用词汇表文档第 117 页:

注意不要使描述太长,因为makeindex缓冲区有限。\@glo@desc因此,被定义为一个简短的命令,以阻止冗长的描述。如果您确实有一个非常长的描述,或者您需要段落分隔符,请定义一个包含描述的单独命令,并将其用作描述键的值。

答案2

自发布此问题和其他答案以来,软件包glossaries已发生更改。如果您仍遇到此问题,请更新您的 版本glossaries。请注意\newglossaryentry仍然是一个“短”命令,因此您不能有段落分隔符(除了通过\glspar)。\longnewglossaryentry允许显式段落分隔符。

最好定义序言中的所有条目,因此你的 MWE 最好写成:

\documentclass{article}
\newcommand*{\glossaryname}{Dictionary}
\usepackage[nonumberlist]{glossaries}
\newcommand{\dictentry}[2]{%
  \newglossaryentry{#1}{name=#1,description={#2}}%
  \glsadd{#1}%
}
\makeglossaries

\dictentry{aardvark}{an animal}%
\dictentry{lion}{another animal, but with
  a really long description that spills over many, many, many, many, many, 
  many, many, many, many, many, many, many, many, many, many, many, many, 
  many, many, many, many, many, many, many, many, many, many lines}
\dictentry{zebra}{yet another animal}%

\begin{document}
\printglossary[style=list]%
\end{document}

有一个symbol键可以用来添加符号,这样你就可以改变\dictentry符号的定义

\newcommand{\dictentry}[3]{%
  \newglossaryentry{#1}{name=#1,description={#2},symbol={#3}}%
  \glsadd{#1}%
}

或者,添加一个可选参数并提供符号(以及通过该参数提供的任何其他信息):

\newcommand{\dictentry}[3][]{%
  \newglossaryentry{#2}{name=#2,description={#3},#1}%
  \glsadd{#2}%
}

现在你可以这样做:

\dictentry[symbol={symbol here}]{aardvark}{an animal}

或者

\dictentry[plural={geese}]{goose}{a bird}

您需要一个显示符号的词汇表样式。样式list不显示,但tree样式显示。glossaries风格画廊显示所有预定义样式的示例图像,或者您可以定义自定义样式。glossaries画廊

相关内容