
Я пытаюсь удалить счетчик в моем файле ".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}