マクロを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}

関連情報