Как удалить счетчик?

Как удалить счетчик?

Я пытаюсь удалить счетчик в моем файле ".sty". Сейчас у меня есть несколько файлов ".tex", которые используют один и тот же ".sty". Они используют один и тот же файл ".sty" для использования \newcommands. Однако, когда я пытаюсь создать новый счетчик, иногда счетчик может иметь то же имя. В этом случае я получаю ошибку компиляции, так как я пытаюсь создать что-то, что уже определено. Есть ли способ удалить счетчик?

Пример того, что происходит в моем коде, можно увидеть ниже:

\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

Имейте в виду, что многие люди могут редактировать эти файлы, поэтому file1.texкто-то может поместить \addMsg{Counter1}, а file2.texкто-то может также поместить \addMsg{Counter1}. Таким образом, я не могу просто убедиться, что все счетчики названы по-разному.

решение1

Вы не можете отменить определение счетчика. Вы можете перезаписать его определение, но тогда вы будете тратить память счетчика (в наши дни это не проблема, но...), или вам придется возиться с их реализацией на более низком уровне. Гораздо проще определить макрос, \providecounterкоторый определяет счетчик только в том случае, если он еще не существует:

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

\providecounter{mycounter}
\providecounter{mycounter}

\begin{document}
\end{document}

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