
我正在嘗試刪除“.sty”檔案中的計數器。現在我有一些使用相同“.sty”的“.tex”檔案。他們使用相同的“.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}