Latex edef和TOTCUNT

Latex edef和TOTCUNT,latex,counter,expansion,Latex,Counter,Expansion,在以下MWE中 \documentclass{article} \usepackage{totcount} \edef\name{} \edef\create#1{\noexpand\newtotcounter{t#1}} \def\setname#1{\edef\name{#1}} \begin{document} \setname{est} \create{\name} \setname{estnew} \create{\name} Total counts: \total{test

在以下MWE中

\documentclass{article}

\usepackage{totcount}
\edef\name{}
\edef\create#1{\noexpand\newtotcounter{t#1}}
\def\setname#1{\edef\name{#1}}

\begin{document}
\setname{est} \create{\name}

\setname{estnew} \create{\name}

Total counts: \total{test}, \total{testnew}

\addtocounter{test}{10}
The test: \thetest

\addtocounter{testnew}{5}
The new test: \thetestnew
\end{document}
我想创建名称部分由我的命令
\name
确定的计数器。这很好,因为计数器是正确创建的。但是,
totcount
仅适用于
testnew
而不适用于
test
。换句话说,输出是:

Total counts: ??, 5
The test: 10
The new test: 5
检查aux文件时,似乎只设置了
testnew
。事实上,我有两行完全相同的

\expandafter\ifx\csname c@testnew@totc\endcsname\relax\newcounter{testnew@totc}\fi\setcounter{testnew@totc}{5}

显然,我的扩展有问题,但我不确定如何解决。

我根据答案找到了解决方案。我的印象是,
edef
扩展了(现在显然)错误的参数。因此,
\create
命令必须使用
edef
定义新命令,以便扩展新命令

\edef\create#1{%
 \begingroup\edef\tmp{\endgroup\noexpand\newtotcounter{t#1}}
  \tmp}

我根据答案找到了解决办法。我的印象是,
edef
扩展了(现在显然)错误的参数。因此,
\create
命令必须使用
edef
定义新命令,以便扩展新命令

\edef\create#1{%
 \begingroup\edef\tmp{\endgroup\noexpand\newtotcounter{t#1}}
  \tmp}