Use macro como nome do contador totcount

Use macro como nome do contador totcount

No nível superior do documentambiente, uma macro definida (usando \def) pode ser expandida para o nome de um totcountcontador. Isso, por algum motivo, não funciona dentro de uma definição de ambiente. Tentei várias combinações de \newcommand, \expandafter, \edef, etc., nenhuma delas funcionou.

\documentclass{memoir}

\usepackage{totcount}

\newenvironment{passagequestions}{% This does not work
    \def\counterIDX{passagecounterX}%
    \newtotcounter{c\counterIDX}%
    \total{c\counterIDX}%
    }{%
    }

\begin{document}
    \def\counterID{passagecounter}
    \newtotcounter{c\counterID}% This works
    \total{c\counterID}

    \begin{passagequestions}
        this doesn't work
    \end{passagequestions}
\end{document}

Responder1

Como você está fazendo dentro de um ambiente, você precisa definir \counterIDX "globalmente" usando \gdef:

\documentclass{memoir}

\usepackage{totcount}

\newenvironment{passagequestions}{% This does not work
    \gdef\counterIDX{passagecounterX}%
    \newtotcounter{c\counterIDX}%
    \total{c\counterIDX}%
    }{%
    }

\begin{document}
    \def\counterID{passagecounter}
    \newtotcounter{c\counterID}% This works
    \total{c\counterID}

    \begin{passagequestions}
        this doesn't work
    \end{passagequestions}
\end{document}

informação relacionada