Enumitem,在部分恢复、重置

Enumitem,在部分恢复、重置

我正在尝试使用它enumitem来制作一个在某个部分连续运行然后重置的列表。

这个问题和接受的答案看起来很有希望:如何使用 chngcntr 和带有简历的 enumitem newlist?,但是当我尝试的时候它似乎并没有起到什么作用。

需要它的作者的要求只是Problems环境应该可以在同一个部分内多次使用,在部分内连续编号,并在新的部分重置。

有任何想法吗?

\documentclass[a4paper]{article}
\usepackage{enumitem}
\newlist{xxx}{enumerate}{1}
\setlist[xxx]{
    label=\thesection.\arabic*.,
    % no end dot in ref
    ref=\thesection.\arabic*,
    resume=myProblems,
  }
\usepackage{etoolbox}
\preto\section{%
  \restartlist{xxx}%
} 

\newenvironment{Problems}{%
  \paragraph{\textbf{Exercises}}%
  \begin{xxx}}{\end{xxx}}

\begin{document}


\section{test}

\begin{Problems}
  \item A
\end{Problems}

\subsection{subtest}

\begin{Problems}
  \item B
\end{Problems}

\section{test 2}

\begin{Problems}
  \item C
\end{Problems}

\end{document}

答案1

计数器重置(resume=myProblems)存储在宏中\enit@resume@series@myProblems。将其重新定义为空似乎有帮助:

\documentclass[a4paper]{article}
\usepackage{enumitem}
\newlist{xxx}{enumerate}{1}
\setlist[xxx]{
    label=\thesection.\arabic*.,
    % no end dot in ref
    ref=\thesection.\arabic*,
    resume=myProblems,
  }
\usepackage{etoolbox}
\makeatletter
\preto\section{%
  \let\enit@resume@series@myProblems\@empty
}
\makeatother

\newenvironment{Problems}{%
  \paragraph{\textbf{Exercises}}%
  \begin{xxx}}{\end{xxx}}

\begin{document}


\section{test}

\begin{Problems}
  \item A
\end{Problems}

\subsection{subtest}

\begin{Problems}
  \item B
\end{Problems}

\section{test 2}

\begin{Problems}
  \item C
\end{Problems}

\end{document}

结果

相关内容