我有一个列表,我需要表现得像总是恢复。有了这个enumitem
包,我知道我可以series=<name>
在第一的列表,并resume*=<name>
使用随后的列表。
但是,我的问题是我在宏中定义了这些列表,而宏不知道哪个将是第一个(因此它可以指定选项series=<name>
),哪个将是后续的(需要一个resume*=<name>
)。此外,任何项目(包括第一个)都可能重复,因此如果任何一个项目被假定为第一个,则计数将被重置。
我怎样才能定义所有始终独立于顺序继续编号的内容?
笔记:
- A黑客解决方案是在调用宏时传入
series=
和resume*
选项,但我不想这样做。
代码:
\documentclass{article}
\usepackage{enumitem}
\newlist{MyList}{enumerate}{2}
\setlist[MyList]{label={\arabic*)}}
\newcommand*{\ListA}{%
\begin{MyList}[series=ResumedList]
\item Item A
\end{MyList}
}
\newcommand*{\ListB}{%
\begin{MyList}[resume*=ResumedList]
\item Item B
\end{MyList}
}
\begin{document}
\ListA
\ListB
\ListB
\ListA
Number of list items = \arabic{MyListi}
\ifnum\arabic{MyListi}=4\relax
\textbf{PASS}: Correct count
\else
\textbf{FAIL}: Incorrect count. Count should be 4.
\fi
\end{document}
答案1
有几集吗?如果没有,那么这个就行了
\documentclass{article}
\usepackage{enumitem}
\newlist{MyList}{enumerate}{2}
\setlist[MyList]{
label=(\arabic*),
resume
}
\newcommand*{\ListA}{%
\begin{MyList}
\item Item A
\end{MyList}
}
\newcommand*{\ListB}{%
\begin{MyList}
\item Item B
\end{MyList}
}
\begin{document}
\ListA
\ListB
\ListB
\ListA
Number of list items = \arabic{MyListi}
\ifnum\arabic{MyListi}=4\relax
\textbf{PASS}: Correct count
\else
\textbf{FAIL}: Incorrect count. Count should be 4.
\fi
\end{document}