Como deletar um contador?

Como deletar um contador?

Estou tentando excluir um contador no meu arquivo ".sty". No momento tenho alguns arquivos ".tex" que usam o mesmo ".sty". Eles usam o mesmo arquivo ".sty" para usar o \newcommands. Porém, quando vou fazer um novo contador às vezes o contador pode ter o mesmo nome. Quando for esse o caso, recebo um erro do compilador, pois estou tentando criar algo que já está definido. Existe uma maneira de excluir o contador?

Um exemplo do que está acontecendo no meu código pode ser visto abaixo:

\newcommand{\addMsg}[1] % This would be in the file.sty
{
    \newcounter{#1}
}

\addMsg{nameOfCounter}  % This would be in File1.tex
\addMsg{nameOfCounter}  % This would be in File1.tex

Lembre-se de que muitas pessoas podem editar esses arquivos, portanto, em file1.texalguém pode colocar \addMsg{Counter1}e em file2.texalguém também pode colocar \addMsg{Counter1}. Portanto, não posso simplesmente garantir que todos os contadores tenham nomes diferentes.

Responder1

Você não pode desdefinir um contador. Você poderia sobrescrever sua definição, mas desperdiçaria memória do contador (o que não é um problema, hoje em dia, mas...), ou precisaria mexer na implementação de nível inferior. Muito mais fácil é definir uma \providecountermacro que só defina um contador se ele ainda não existir:

\documentclass{article}
\makeatletter
\def\providecounter#1{%
  \@ifundefined{c@#1}%
    {\newcounter{#1}}{\@newctr}}
\makeatother

\providecounter{mycounter}
\providecounter{mycounter}

\begin{document}
\end{document}

informação relacionada