
Ich versuche, einen Zähler in meiner „.sty“-Datei zu löschen. Im Moment habe ich einige „.tex“-Dateien, die dieselbe „.sty“-Datei verwenden. Sie verwenden dieselbe „.sty“-Datei \newcommands
. Wenn ich jedoch einen neuen Zähler erstelle, kann es sein, dass der Zähler denselben Namen hat. In diesem Fall erhalte ich einen Compilerfehler, da ich versuche, etwas zu erstellen, das bereits definiert ist. Gibt es eine Möglichkeit, den Zähler zu löschen?
Unten sehen Sie ein Beispiel dafür, was in meinem Code passiert:
\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
Bedenken Sie, dass diese Dateien von vielen Leuten bearbeitet werden können. Daher file1.tex
kann jemand in \addMsg{Counter1}
und file2.tex
jemand anderes auch einfügen \addMsg{Counter1}
. Daher kann ich nicht einfach sicherstellen, dass alle Zähler unterschiedlich benannt sind.
Antwort1
Sie können die Definition eines Zählers nicht rückgängig machen. Sie könnten seine Definition überschreiben, aber dann würden Sie Zählerspeicher verschwenden (heutzutage kein Problem, aber ...) oder Sie müssten mit der Implementierung auf niedrigerer Ebene herumspielen. Viel einfacher ist es, ein Makro zu definieren, \providecounter
das einen Zähler nur dann definiert, wenn er noch nicht existiert:
\documentclass{article}
\makeatletter
\def\providecounter#1{%
\@ifundefined{c@#1}%
{\newcounter{#1}}{\@newctr}}
\makeatother
\providecounter{mycounter}
\providecounter{mycounter}
\begin{document}
\end{document}