
내 ".sty" 파일에서 카운터를 삭제하려고 합니다. 지금은 동일한 ".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}