Edef и Totcount - PullRequest
       22

Edef и Totcount

1 голос
/ 01 марта 2020

В следующем MWE

\documentclass{article}

\usepackage{totcount}
\edef\name{}
\edef\create#1{\noexpand\newtotcounter{t#1}}
\def\setname#1{\edef\name{#1}}

\begin{document}
\setname{est} \create{\name}

\setname{estnew} \create{\name}

Total counts: \total{test}, \total{testnew}

\addtocounter{test}{10}
The test: \thetest

\addtocounter{testnew}{5}
The new test: \thetestnew
\end{document}

я хочу создать счетчики, чье имя частично определяется моей командой \name. Это работает хорошо, в том смысле, что счетчики созданы правильно. Однако totcount работает только для testnew, но не для test. Другими словами, вывод:

Total counts: ??, 5
The test: 10
The new test: 5

Проверка файла aux, кажется, установлен только testnew. На самом деле у меня есть две идентичные строки

\expandafter\ifx\csname c@testnew@totc\endcsname\relax\newcounter{testnew@totc}\fi\setcounter{testnew@totc}{5}

Очевидно, что проблема с моим расширением, но я не уверен, как это исправить.

1 Ответ

0 голосов
/ 01 марта 2020

Я нашел решение на основе ответа здесь . У меня сложилось впечатление, что edef расширяет аргументы, которые (теперь очевидно) ложны. Таким образом, команда \create должна определить новую команду, используя edef, чтобы новая команда раскрылась.

\edef\create#1{%
 \begingroup\edef\tmp{\endgroup\noexpand\newtotcounter{t#1}}
  \tmp}
...