我的 .tex 文件中有多个环境。我想知道是否有办法一次性重置所有计数器?
为了澄清我的意思,假设我们有环境theorem
、proposition
等,而不是使用单独的命令\setcounter{theorem}{0}
、\setcounter{proposition}{0}
等将计数器重置为 0,我想知道是否有办法使用单个命令重置所有计数器。
谢谢
答案1
你不能只是重置全部计数器。嗯,这并不完全正确;但这可能不是您想要的(例如,计数器page
很可能不应被重置...)。
您可以创建一个命令,该命令接受计数器列表,以便进行可能的重置。以下是这样的实现:
\usepackage{chngcntr,etoolbox}
\newcounter{resetdummycounter}
\newcommand{\resetcounterlist}[1]{%
% Add each item to clear-list for resetdummycounter
\renewcommand*{\do}[1]{\counterwithin*{##1}{resetdummycounter}}%
\docsvlist{#1}}% Process list
\newcommand{\resetcounters}{\stepcounter{resetdummycounter}}
\resetcounterlist{<CSV list>}
需要一<CSV list>
组要重置的计数器。然后,发出\resetcounters
将计数器重置<CSV list>
为零。这是一个完整的示例:
\documentclass{article}
\newtheorem{theorem}{Theorem}
\newtheorem{proposition}{Proposition}
\newtheorem{corollary}{Corollary}
\usepackage{chngcntr,etoolbox}
\newcounter{resetdummycounter}
\newcommand{\resetcounterlist}[1]{%
\renewcommand*{\do}[1]{\counterwithin*{##1}{resetdummycounter}}%
\docsvlist{#1}}
\newcommand{\resetcounters}{\stepcounter{resetdummycounter}}
% These counters should be reset via \resetcounters
\resetcounterlist{theorem, proposition, corollary}
\begin{document}
\begin{theorem} Some theorem \end{theorem}
\begin{proposition} Some proposition \end{proposition}
\begin{theorem} Some theorem \end{theorem}
\begin{proposition} Some proposition \end{proposition}
\begin{corollary} Some corollary \end{corollary}
\noindent\hrulefill
\resetcounters% Reset all counters previously marked
\begin{theorem} Some theorem \end{theorem}
\begin{proposition} Some proposition \end{proposition}
\begin{theorem} Some theorem \end{theorem}
\begin{proposition} Some proposition \end{proposition}
\begin{corollary} Some corollary \end{corollary}
\end{document}
请注意,这可能会引起混淆hyperref
。