如何设置跨项目循环的自定义枚举标签

如何设置跨项目循环的自定义枚举标签

我想要一些看起来像这样的东西:

1.
  A.
  B.
  C.
  D.
2.
  F.
  G.
  H.
  J.
3.
  A.
  B.
  C.
  D.

如此循环下去。注意字母有时不是连续的。

到目前为止

\renewcommand{\labelenumii}{\textbf{\Alph{enumii}.}}

\begin{enumerate}
\item
\begin{enumerate}
\item foo
\item foo
\item foo
\item foo
\end{enumerate}
\item
\begin{enumerate}
\item foo
\item foo
\item foo
\item foo
\end{enumerate}
\end{enumerate}

但显然这只是一遍又一遍地循环 A、B、C 和 D。

答案1

定义一个新的计数器表示,使用计数器的值模 8。最简单的方法是使用expl3。然后用enumitem定义一个合适的列表。

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

\newlist{nelson}{enumerate}{1}
\setlist[nelson,1]{label=\nelsonalph*.,resume}
\AddEnumerateCounter{\nelsonalph}{\donelsonalph}{D}
\newcommand{\nelsonalph}[1]{\expandafter\donelsonalph\csname c@#1\endcsname}

\ExplSyntaxOn
\cs_new:Npn \donelsonalph #1
 {
  \int_case:nn { \int_mod:nn { #1 } { 8 } }
   {
    {0}{J}
    {1}{A}
    {2}{B}
    {3}{C}
    {4}{D}
    {5}{E}
    {6}{F}
    {7}{G}
   }
 }
\ExplSyntaxOff

\begin{document}

\begin{enumerate}
\item
\begin{nelson}
\item foo
\item foo
\item foo
\item foo
\end{nelson}
\item
\begin{nelson}
\item foo
\item foo
\item foo
\item foo
\end{nelson}
\item
\begin{nelson}
\item foo
\item foo
\item foo
\item foo
\end{nelson}
\end{enumerate}
\end{document}

在此处输入图片描述

答案2

您可以使用series以下设施enumitem

\documentclass{Article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}
\item
\begin{enumerate}[label=\Alph*.,series=myseries]
\item foo
\item foo
\item foo
\item foo
\end{enumerate}
\item
\begin{enumerate}[resume*=myseries,start=6]    %% start at F.
\item foo
\item foo
\item foo
\item foo
\end{enumerate}
\item
\begin{enumerate}[resume*=myseries,start=1]    %% start at A. again
\item foo
\item foo
\item foo
\item foo
\end{enumerate}
\end{enumerate}
\end{document}

在此处输入图片描述

答案3

这是一个使用选项enumitem和你自己的柜台:

在此处输入图片描述

\documentclass{article} 

\usepackage{enumitem}

\newcounter{cycleenum}
\newcommand{\cyclealph}[1]{%
  \ifcase\value{#1}% 0
  \or A% 1
  \or B% 2
  \or C% 3
  \or D% 4
  \or F% 5
  \or G% 6
  \or H% 7
  \or J% 8
  \or \setcounter{#1}{1}\cyclealph{#1}%
  \fi}
\newcommand{\cycleitem}{\refstepcounter{cycleenum}\item[\textbf{\cyclealph{cycleenum}.}]}
\begin{document}


\begin{enumerate}
  \item
  \begin{enumerate}[series=cyclealph]
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
  \end{enumerate}

  \item
  \begin{enumerate}[resume,series=cyclealph]
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
    \cycleitem foo
  \end{enumerate}
\end{enumerate}
\end{document}

相关内容