每个环境一个计数器,从 0 开始。

每个环境一个计数器,从 0 开始。
\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}从第一个计数器继续的。

相关内容