在包的文档中chngcntr
,
命令引用如下:
\counterwithout{<ctr>}{<..>}
词组:
如果您希望 在两种样式之间切换, 可以针对给定的计数器发出任意数量的
\counterwithin{<ctr>}{<...>}
和命令。\counterwithout{<ctr>}{<...>}
<ctr>
有没有方法可以在<...>
代码部分列出几个计数器,
或者使用通配符删除所有重置触发器?
答案1
chngcntr
不允许在参数中使用计数器名称列表,因此必须单独指定每个命令或循环遍历逗号分隔的列表。
这里有两个解决方案:一个使用expl3
直接循环,另一个(在这篇文章的底部)使用包xassoccnt
(反过来expl3
也使用;-))
该解决方案使用expl3
\seq
变量循环遍历计数器列表\CounterWithout
-\CounterWithin
带星号的变体也可用。
\documentclass{article}
\usepackage{chngcntr}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\CounterWithout}{smm}{%
\seq_set_from_clist:Nn \l_tmpa_seq {#2}
\IfBooleanTF{#1}{%
\seq_map_inline:Nn \l_tmpa_seq {%
\counterwithout*{##1}{#3}
}
}{
\seq_map_inline:Nn \l_tmpa_seq {%
\counterwithout{##1}{#3}
}
}
}
\NewDocumentCommand{\CounterWithin}{smm}{%
\seq_set_from_clist:Nn \l_tmpa_seq {#2}
\IfBooleanTF{#1}{%
\seq_map_inline:Nn \l_tmpa_seq {%
\counterwithin*{##1}{#3}
}
}{%
\seq_map_inline:Nn \l_tmpa_seq {%
\counterwithin{##1}{#3}
}
}
}
\ExplSyntaxOff
\begin{document}
\CounterWithin{figure,table,equation}{section}
\section{Foo}
\subsection{FooFoo}
\subsubsection{FooFooFoo}
\begin{equation}
E=mc^2
\end{equation}
\begin{equation}
E=mc^2
\end{equation}
\begin{figure}
\caption{A caption of a figure}
\end{figure}
\begin{figure}
\caption{Another caption of a figure}
\end{figure}
\begin{table}
\caption{A table caption}
\end{table}
\clearpage
\CounterWithout{subsection,figure,table,equation}{section}
\section{Bar}
\subsection{BarBar}
\subsubsection{BarBarBar}
\begin{equation}
E=mc^2
\end{equation}
\begin{equation}
E=mc^2
\end{equation}
\begin{figure}
\caption{A caption of a figure}
\end{figure}
\begin{figure}
\caption{Another caption of a figure}
\end{figure}
\begin{table}
\caption{A table caption}
\end{table}
\clearpage
\end{document}
另一个解决方案xassoccnt
该xassoccnt
软件包提供了命令\RemoveFromReset
和\AddToReset
,它们作用于计数器列表,其他行为类似于\counterwithout*
和\counterwithin*
,即命令不会更改计数器格式化程序。(因为我是的作者xassoccnt
,所以我必须将这个缺少计数器格式化程序的问题放在下一个版本的待办事项列表中)
\documentclass{article}
\usepackage{xassoccnt}
\begin{document}
\AddToReset{figure,table,equation}{section}
\section{Foo}
\subsection{FooFoo}
\subsubsection{FooFooFoo}
\begin{equation}
E=mc^2
\end{equation}
\begin{equation}
E=mc^2
\end{equation}
\begin{figure}
\caption{A caption of a figure}
\end{figure}
\begin{figure}
\caption{Another caption of a figure}
\end{figure}
\begin{table}
\caption{A table caption}
\end{table}
\clearpage
\RemoveFromReset{subsection,figure,table,equation}{section}
\section{Bar}
\subsection{BarBar}
\subsubsection{BarBarBar}
\begin{equation}
E=mc^2
\end{equation}
\begin{equation}
E=mc^2
\end{equation}
\begin{figure}
\caption{A caption of a figure}
\end{figure}
\begin{figure}
\caption{Another caption of a figure}
\end{figure}
\begin{table}
\caption{A table caption}
\end{table}
\clearpage
\end{document}
答案2
如果你只想删除特定计数器的c
lear ist ,你可以重置:l
<cntr>
\cl@<cntr>
\documentclass{article}
\usepackage{chngcntr}% Not needed for this example
\makeatletter
% Empty out the Clear List for a counter
\newcommand{\allcounterwithout}[1]{\@namedef{cl@#1}{}}
\makeatother
\begin{document}
\section{A section}% 1
\subsection{A subsection}% 1.1
\allcounterwithout{section}% Remove all counter resetting associated with section
\section{A section}% 2
\subsection{A subsection}% 2.2 (should be 2.1 without \allcounterwithout)
\end{document}