在参数化 enumitem 下设置枚举计数器

在参数化 enumitem 下设置枚举计数器

这是之前提出的两个问题的变体:使用 enumitem 设置自定义枚举下的枚举计数器寻找带有参数、自定义标签和自定义参考文本的编号列表

下面代码的输出是

(1)一个

(2)B

(3)C.

(U1)一个

(U2)B

(U1)C.

我希望最后一行是

(U3)C.

我应该如何修改环境“测试”以保留参数和正确的引用,但能够轻松修改计数器?

\documentclass{article}

\usepackage{enumitem}

\newcommand\parameter{}
\newenvironment{test}[1]
{\renewcommand\parameter{#1}\begin{Mylist}}{\end{Mylist}}

\newlist{Mylist}{enumerate}{1}
\setlist[Mylist]{label=(\req*), ref=\arabic*}

\newcommand{\req}[1]{\expandafter\inreq\csname c@#1\endcsname}
\newcommand{\inreq}[1]{\parameter \number#1}
\AddEnumerateCounter{\req}{\inreq}{99}

\begin{document}

\begin{enumerate}[label=(\arabic*), ref=\arabic*]
  \item A 
  \item B
\end{enumerate}
\begin{enumerate}[resume*]
  \item C
\end{enumerate}

\begin{test}{U}
    \item A
    \item B
\end{test}
\begin{test}{U} % What should replace [resume*] here ?
    \item C
\end{test}

\end{document}

答案1

您可以将test环境定义为

\newenvironment{test}[2][]
{\begin{enumerate}[series=tests,label=(#2\arabic*),#1]}
{\end{enumerate}}

并使用 恢复它resume=tests

平均能量损失

\documentclass{article}
\usepackage{enumitem}

\newenvironment{test}[2][]
{\begin{enumerate}[series=tests,label=(#2\arabic*),#1]}
{\end{enumerate}}


\begin{document}

\begin{enumerate}[label=(\arabic*), ref=\arabic*]
  \item A
  \item B
\end{enumerate}
\begin{enumerate}[resume*]
  \item C
\end{enumerate}

\begin{test}{U}
    \item A
    \item B
\end{test}
\begin{test}[resume=tests]{U}
    \item C
\end{test}

\end{document}

输出:

在此处输入图片描述

答案2

我会采用更务实的方法:

\documentclass{article}
\usepackage{xparse}
\usepackage{enumitem}

\NewDocumentEnvironment{test}{mO{}}
 {\enumerate[label=(#1\arabic*),ref=\arabic*,#2]}
 {\endenumerate}

\begin{document}

\begin{enumerate}[label=(\arabic*), ref=\arabic*]
  \item A
  \item B
\end{enumerate}
\begin{enumerate}[resume*]
  \item C
\end{enumerate}

\begin{test}{U}
    \item A
    \item B
\end{test}
\begin{test}{U}[resume*]
    \item C
\end{test}

\end{document}

在此处输入图片描述

相关内容