我使用以下命令定义我的条目:
\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ε 内核命令'清理' name
、description
和键的值。结果,这些值中的每一个都被替换为保留相应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
包裹)。