所有 \gls 类似“低级”宏名称(如 \glo@..@symbol)是什么?

所有 \gls 类似“低级”宏名称(如 \glo@..@symbol)是什么?

我想要使​​用所有与类似命令\gls\gls、、、、、、、等)相对应的“低级”宏:例如,(带有已定义的词汇表输入键)。\Gls\GLS\glspl\Glspl\glsnameglssymbol\glo@myentry@name\glo@myentry@symbolmyentry

但是我无法在词汇表文档中找到它们的所有名称/结构(我可能错过了!)。

我只发现上面这两个namesymbol......

所以,

  • 与所有类似命令相对应的所有“低级”宏的完整列表是什么\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 glossariesCTAN镜像)。您正在寻找的命令属于第二项“那些在文档中显示文本而不进行索引或应用任何其他格式的命令(第 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 节(“条件”)中描述。

相关内容