Использовать макрос в качестве имени счетчика totcount

Использовать макрос в качестве имени счетчика totcount

На верхнем уровне среды documentмакрос, определенный (с использованием \def), может быть расширен до имени счетчика totcount. По какой-то причине это не работает внутри определения среды. Я пробовал различные комбинации \newcommand, \expandafter, \edef, и т. д., ни одна из которых не сработала.

\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}

решение1

Поскольку вы делаете это внутри среды, вам необходимо определить \counterIDX «глобально», используя \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}

Связанный контент