我想知道如何使用计数器来定义其他新计数器。
像这样:
\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 ...}