这是之前提出的两个问题的变体:使用 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}