创建和使用名称依赖于其他计数器的命令/计数器

创建和使用名称依赖于其他计数器的命令/计数器

我想知道如何使用计数器来定义其他新计数器。

像这样:

\newcounter{foo}
\stepcounter{foo}

%% Perhaps more increments, this depends of the user.

%% And now, to create a new counter and command from foo.

\newcounter{\csname foofoo\thefoo\endcsname}
\def\csname mydyndef\thefoo\endcsname{definition...}

例如,使用 foo = 5,创建计数器 foofoo5 和命令 \mydyndef5。

当然,现在就可以使用它:

This is my example \csname mydyndef\thefoo\endcsname,
with counter \csname thefoofoo\thefoo \endcsname.

但当然,这些对我都不起作用。这就是问题所在:

我怎样才能实现这个目标?

这个问题源于寻找这个问题的纯手动解决方案:新的列表环境:使用“后验”格式的自动枚举,创建一个计数器(label@counterx)并为每个新深度在命令(\label@formatx)中保存格式(由list@depth counter控制):

\newenvironment{labelist}{%%%

  \stepcounter{list@depth} %% Actual depth

  \ifnumcomp{\value{list@depth}}{=}{1} {
     \newcounter{label@counter1}
     \setcounter{label@coutner1}{0}

     \def\label@format1{\Alph{label@counter1}}

     \begin{list}{ \textbf{(\label@format1)}  }
                 { \usecounter{label@counter1 }
  }{
    %% Similar to the first case, but replacing 1 with the actual depth.
  }
}{
   %% Other code not-important here.
}

答案1

  • \newcounter不采用宏标记,而是采用简单名称:

    \newcounter{foofoo\thefoo}
    
  • \def\csname重新定义\csname,您需要\expandafter

    \expandafter\def\csname mydyndef\thefoo\endcsname{definition ...}
    

相关内容