将命令转换为结果

将命令转换为结果

考虑这个例子:

\documentclass{article}

\newcommand{\foo}{}
\newcommand{\currentbar}{\thebar}

\newcounter{bar}
\setcounter{bar}{0}

\makeatletter
\newenvironment{baz}{\addtocounter{bar}{1}}{\g@addto@macro\foo{\currentbar}}
\makeatother

\begin{document}

\begin{baz}
\end{baz}

\begin{baz}
\end{baz}

\foo
\end{document}

我有一个名为的命令\foo、一个名为的计数器bar和一个环境baz。我想在每个终端环境中\foo存储计数器的状态。barbaz

在第一个 的末尾bazbar等于1,所以1应该写入\foo。在第二个 的末尾bazbar等于2,所以\foo应该是12(2 与已经存在的 连接在一起1)。

事实上,\foo实际上最有可能的是,并且在文档末尾调用时\currentbar\currentbar输出。22

我怎样才能“扩展”到\currentbar1使其2位于\foo最后12

答案1

您需要\currentbar在将其添加到时进行扩展\foo

\xappto最简单的方法是使用电子工具箱包装:而不是\g@addto@macro\foo{\currentbar}

\xappto\foo{\currentbar}

当然\usepackage{etoolbox}在序言中是需要的。

相关内容