
Estoy intentando eliminar un contador en mi archivo ".sty". Ahora tengo algunos archivos ".tex" que usan el mismo ".sty". Usan el mismo archivo ".sty" para usar \newcommands
. Sin embargo, cuando voy a crear un nuevo contador, a veces el contador puede tener el mismo nombre. Cuando ese es el caso, aparece un error del compilador porque estoy intentando crear algo que ya está definido. ¿Hay alguna manera de borrar el contador?
A continuación se puede ver un ejemplo de lo que está sucediendo en mi código:
\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
Tenga en cuenta que muchas personas pueden editar estos archivos, por lo que file1.tex
alguien puede ponerlos \addMsg{Counter1}
y file2.tex
alguien también puede ponerlos \addMsg{Counter1}
. Por lo tanto, no puedo simplemente asegurarme de que todos los contadores tengan nombres diferentes.
Respuesta1
No se puede anular la definición de un contador. Podrías sobrescribir su definición, pero entonces desperdiciarías memoria de contador (no es un problema hoy en día, pero...), o tendrías que alterar su implementación de nivel inferior. Mucho más fácil es definir una \providecounter
macro que sólo defina un contador si aún no existe:
\documentclass{article}
\makeatletter
\def\providecounter#1{%
\@ifundefined{c@#1}%
{\newcounter{#1}}{\@newctr}}
\makeatother
\providecounter{mycounter}
\providecounter{mycounter}
\begin{document}
\end{document}