
На верхнем уровне среды 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}