Wie lösche ich einen Zähler?

Wie lösche ich einen Zähler?

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.texkann jemand in \addMsg{Counter1}und file2.texjemand 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, \providecounterdas 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}

verwandte Informationen