如何从词汇表条目中获取描述?

如何从词汇表条目中获取描述?

我使用以下命令定义我的条目:

\newglossaryentry{foo}{name={foo}, description={foo description}}

我可以使用 \Gls{foo} 在文本中引用它,它会将 href 链接放在词汇表中。是否可以从词汇表条目中获取带有描述的原始字符串?例如

The term \gls{foo} is defined as: \GlsDesc{foo}

或者类似这样。我希望它输出原始描述文本,而不在文本中间添加 hreflinks 等。

因此其输出将是:

The term foo is defined as: foo description

是否可以 ?

编辑:如果描述中对另一个词汇表条目的引用不会中断那就太好了:

\newglossaryentry{bar}{name={bar}, description={bar description}}
\newglossaryentry{foo}{name={foo}, description={foo and \gls{bar} description}}

This is foo desc: \glsdesc{foo}

引用被打破了,这是输出:

This is foo desc: foo and ``gls-bar`` description

而不是预期的:

This is foo desc: foo and bar description

答案1

此命令称为\glsdesc{<your key>}类似于symbol命令,此命令有三个版本:

\glsdesc{<your key>}
\Glsdesc{<your key>} 
\GLSdesc{<your key>}

当然还有带星号的版本:

\glsdesc*{<your key>}
\Glsdesc*{<your key>} 
\GLSdesc*{<your key>}

后者应该可以满足你的要求。

答案2

上述问题的第一部分已经由@bloodworks 正确回答。所以我只讨论第二部分,就像我最初的评论一样。

情况如下:为了简化使用脆弱的词汇表定义中的命令,glossaries软件包使用 LaTeX 2ε 内核命令'清理' namedescription和键的值。结果,这些值中的每一个都被替换为保留相应symbol\@onelevel@sanitize未扩张意义。

name显然,此过程在将、description和键的值写入symbol输出词汇表文件(即文件扩展名为 的辅助文件.gls)时很方便。另一方面,当其中一个值直接通过\glsname\glsdesc或排版时,此过程可能会失败\glssymbol

简而言之,如果您想使用 引用词汇表条目\glsname\glsdesc或者\glssymbol您可能考虑完全关闭清理程序。为此,请将glossaries包加载为

\usepackage[sanitize=none]{glossaries}

或者,您可以仅对受影响的三个密钥中的部分密钥禁用清理程序。例如,尝试

\usepackage[sanitize={description=false}]{glossaries}

当然,关闭清理程序可能需要对现有的词汇表定义进行调整:脆弱的命令必须受到保护(例如,通过\protect在 LaTeX 2ε 内核中添加前缀)或在使用前使其变得健壮(例如,\robustify通过 etoolbox包裹)。

相关内容