如何将 \gls 命令写入并扩展至文本文件?

如何将 \gls 命令写入并扩展至文本文件?

是否可以扩展该\gls命令以便在文本文件中打印其“输出”?

这里是“MWE.tex”文件的内容:

\documentclass{article}
\usepackage{glossaries-extra}
\makenoidxglossaries

\newglossaryentry{myglsentry}{name={Myglsentry},description={myglsentry desc}}

\newwrite\mytextfile
\immediate\openout\mytextfile=\jobname.txt

\begin{document}
\glsaddall

\immediate\write\mytextfile{\glsname{myglsentry}}

\immediate\closeout\mytextfile

\printnoidxglossary
\end{document}

此 MWE 在‘MWE.txt’中给出以下结果: 在此处输入图片描述

我怎样才能获得这个结果(即命令调用的“输出” \glsname{myglsentry}): 在此处输入图片描述

答案1

一种方法是扩展\writeonce的参数\unexpanded\expandafter(例如参见部分扩展命令`\unexpand\expandafter` 添加空格:如何在文件末尾附加文本) 并使用来自 的最底层的宏glossaries,其中包含具有单个扩展的内容。

\glo@some_entry@name在本例中,包含内容的宏是\glo@myglsentry@name。因为这个宏包含@您需要的符号\makeatletter\makeatother

梅威瑟:

\documentclass{article}
\usepackage{glossaries-extra}
\makenoidxglossaries

\newglossaryentry{myglsentry}{name={Myglsentry},description={myglsentry desc}}

\newwrite\mytextfile
\immediate\openout\mytextfile=\jobname.txt

\begin{document}
\glsaddall
\makeatletter
\immediate\write\mytextfile{\unexpanded\expandafter{\glo@myglsentry@name}}
\makeatother

\immediate\closeout\mytextfile

\printnoidxglossary
\end{document}

相关内容