\newenvironment{Group}[1]{
\newcounter{#1}
}
但如果我想增加计数器,我必须指定计数器。
\begin{Group}{derp}
\arabic{derp}
\stepcounter{derp}
\arabic{derp}
\end{Group}
我希望能够做到:
\being{Group}{foo}
\IncAndShowCounter % keep a counter for this group only
\end{Group}
答案1
正如我在评论中所说,我不确定你到底想做什么,所以这里有两种可能性。在这两种情况下,都有一个\IncAndShowCounter
宏可以完成我认为你想要的功能。但每种情况的做法都不同。
每个环境一个计数器,从 0 开始。
在这里,我分配一个名为的计数器Group
,并将其设置为 0 \begin{Group}
。
\documentclass{article}
\newcounter{Group}
\newenvironment{Group}{%
\setcounter{Group}{0}%
}{}
\newcommand*\IncAndShowCounter{%
\stepcounter{Group}%
\arabic{Group}%
}
\begin{document}
\begin{Group}
\IncAndShowCounter\ first
\IncAndShowCounter\ second
\IncAndShowCounter\ third
\end{Group}
\begin{Group}
\IncAndShowCounter\ A
\IncAndShowCounter\ B
\IncAndShowCounter\ C
\end{Group}
\end{document}
您可以看到每个环境内的计数器都重置。
每种类型一个共享计数器Group
。
这里将创建一个可在所有这些环境中访问的\begin{Group}{foo}
计数器。将有一个不相关的计数器。foo
\begin{Group}{bar}
\documentclass{article}
\newenvironment{Group}[1]{%
\expandafter\ifx\csname c@#1\endcsname\relax
\newcounter{#1}%
\fi
\newcommand*\IncAndShowCounter{%
\stepcounter{#1}%
\arabic{#1}%
}%
}{}
\begin{document}
\begin{Group}{foo}
\IncAndShowCounter\ first
\IncAndShowCounter\ second
\IncAndShowCounter\ third
\end{Group}
\begin{Group}{bar}
\IncAndShowCounter\ x
\IncAndShowCounter\ y
\IncAndShowCounter\ z
\end{Group}
\begin{Group}{foo}
\IncAndShowCounter\ A
\IncAndShowCounter\ B
\IncAndShowCounter\ C
\end{Group}
\end{document}
注意第二个计数器是如何\begin{Group}{foo}
从第一个计数器继续的。