我尝试让枚举恢复其编号,但每章都重新开始。我找到了一种在这里重新启动计数器的方法:
https://tex.stackexchange.com/a/348942
然而,当涉及到某些环境(例如证明)时,该解决方案不会恢复计数器。
这是我目前所得到的(但在证明之后它没有恢复计数器):
\documentclass{book}
\usepackage{enumitem}
\usepackage{etoolbox}
\usepackage{amsthm}
% include the chapter number
\setlist[enumerate]{label=\thechapter.\arabic{*},resume}
% restart the enumerate list every chapter
\preto\chapter{%
\restartlist{enumerate}%
}
\begin{document}
\chapter{one}
\begin{enumerate}
\item first
\item second
\end{enumerate}
more
\begin{proof}
\begin{enumerate}
\item third
\item fourth
\end{enumerate}
\end{proof}
more
\begin{enumerate}
\item fifth
\item sixth
\end{enumerate}
\chapter{two}
\begin{enumerate}
\item first
\item second
\end{enumerate}
more
\begin{enumerate}
\item third
\item fourth
\end{enumerate}
\end{document}
答案1
看起来像enumitem
在本地保存恢复数据(计数器等),并LaTeX
在当前组结束后忘记这些保存的数据。您可以修补命令\enit@setresumekeys
并在其中替换\def
为\gdef
。由于有两个\def
条目,我不得不使用两次(它在类似\patchcmd
中定义。更改后的代码:etoolbox
\preto
\documentclass{book}
\usepackage{enumitem}
\usepackage{etoolbox}
\usepackage{amsthm}
% include the chapter number
\setlist[enumerate]{label=\thechapter.\arabic{*},resume}
% restart the enumerate list every chapter
\preto\chapter{%
\restartlist{enumerate}%
}
\makeatletter
\patchcmd{\enit@setresumekeys}{\def}{\gdef}{}{}
\patchcmd{\enit@setresumekeys}{\def}{\gdef}{}{}
\makeatother
\begin{document}
\chapter{one}
\begin{enumerate}
\item first
\item second
\end{enumerate}
more
\begin{proof}
\begin{enumerate}
\item third
\item fourth
\end{enumerate}
\end{proof}
more
\begin{enumerate}
\item fifth
\item sixth
\end{enumerate}
\chapter{two}
\begin{enumerate}
\item first
\item second
\end{enumerate}
more
\begin{enumerate}
\item third
\item fourth
\end{enumerate}
\end{document}
第一页: