我想要使用所有与类似命令\gls
(\gls
、、、、、、、等)相对应的“低级”宏:例如,(带有已定义的词汇表输入键)。\Gls
\GLS
\glspl
\Glspl
\glsname
glssymbol
\glo@myentry@name
\glo@myentry@symbol
myentry
但是我无法在词汇表文档中找到它们的所有名称/结构(我可能错过了!)。
我只发现上面这两个name
和symbol
......
所以,
- 与所有类似命令相对应的所有“低级”宏的完整列表是什么
\gls
?(编辑1:“所有”宏可能都没有必要,但最常见的宏就很好了,就像上面提到的那样)。 - 或者,我可以在哪里找到该列表?
我为什么需要这个?
因为,得益于Marijn 的回答,使用“低级”宏是我将\gls
类似命令的“输出”写入文本文件的唯一方法。
编辑 1 (2 月 21 日):
我在源代码中发现以下内容(其中label
,已经定义了词汇表条目键):
\glo@<label>@text
\glo@<label>@name
\glo@<label>@desc
\glo@<label>@symbol
我们假设这足以满足我的需要。
然而,我找不到大写或复数形式的对应词......
任何想法?
编辑 2 (3 月 5 日)
我大胆地补充了 Nikola Talbot 的回答,其中隐含地指出,大小写转换命令(\GLS
,,\Gls
......)不能扩展,因此不能写入文件(我已经亲自得到了 Nicola Talbot 的确认)。
答案1
用于引用条目的命令在词汇表用户手册(texdoc glossaries
或CTAN镜像)。您正在寻找的命令属于第二项“那些在文档中显示文本而不进行索引或应用任何其他格式的命令(第 5.2 节)。”
5.1 节(包括)中描述的命令\gls
都很强大,而且过于复杂,无法扩展到简单文本(这是写入外部文件时所需的)。这些命令包括索引、格式化命令、超链接和后链接钩子创建的 whatsit,它们可用于附加信息或前瞻(例如,用于后续标点符号)。
5.2 节中描述的命令没有这些额外的负担,但其中一些仍然包含不可扩展的内容。您需要的是所有不改变大小写的\glsentry...
命令,例如\glsentrytext
。
例子:
\documentclass{article}
\usepackage{glossaries}
\newglossaryentry{sample}{name={sample},
text={sample (next use)},plural={samples (next use)},
first={sample (first use)},firstplural={samples (first use)},
symbol={\S},
description={an example}}
\begin{document}
Robust: \gls{sample}, \gls{sample}, \glsfirst{sample},
\glstext{sample}, \glsname{sample}, \glsdesc{sample},
\glssymbol{sample}. Plurals: \glsfirstplural{sample}, \glsplural{sample}.
\typeout{Robust: \gls{sample}, \gls{sample}, \glsfirst{sample},
\glstext{sample}, \glsname{sample}, \glsdesc{sample},
\glssymbol{sample}. Plurals: \glsfirstplural{sample}, \glsplural{sample}.}
Expandable: \glsentryfirst{sample},
\glsentrytext{sample}, \glsentryname{sample},
\glsentrydesc{sample},
\glsentrysymbol{sample}. Plurals: \glsentryfirstplural{sample},
\glsentryplural{sample}.
Whether or not these cause a problem in expandable contents (such as
writing to a file) depends on whether or not the associated field
has problematic content.
\typeout{Expandable: \glsentryfirst{sample},
\glsentrytext{sample}, \glsentryname{sample},
\glsentrydesc{sample},
\glsentrysymbol{sample}. Plurals: \glsentryfirstplural{sample},
\glsentryplural{sample}.}
You can also save the contents of a field
\glsletentryfield{\foo}{sample}{symbol}
\typeout{Symbol: \expandonce{\foo}}
Or test first if the field is set:
\ifglshasfield{symbol}{sample}
{Symbol: \glscurrentfieldvalue.
\typeout{Symbol: \expandonce\glscurrentfieldvalue}}
{No symbol.}
\end{document}
这会在记录中产生以下内容:
Robust: \gls {sample}, \gls {sample}, \glsfirst {sample}, \glstext {sample}, \glsname {sample}, \glsdesc {sample}, \glssymbol {sample}. Plurals: \glsfirstplural {sample}, \glsplural {sample}.
Expandable: sample (first use), sample (next use), sample, an example, \S . Plurals: samples (first use), samples (next use).
Symbol: \S
Symbol: \S
请注意上述 MWE 中的最后一个例子。如果写入延迟,则\glscurrentfieldvalue
在实际执行写入时,的定义可能已经改变。条件\ifglshasfield
在第 5.12 节(“条件”)中描述。