同一列表中的多个计数器

同一列表中的多个计数器

我想列一个如下清单:

(1a)项目

(1b)项目

(2a)项目

(2b)项目

...

(10a)项目

(10b)项目

等等。这是我现在正在做的一个最小示例,它没有我真正想要的格式,而且也相当麻烦,因为我必须将一个列表嵌入另一个列表中。

\documentclass{article}
\usepackage{enumitem}
\begin{enumerate}[label=\arabic*]
\item
    \begin{enumerate}[label=\alph*.]
        \item item 1a
        \item item 1b
    \end{enumerate}
\item 
    \begin{enumerate}[label=\alph*.]
        \item item 2a
        \item item 2b
    \end{enumerate}
\end{enumerate}

答案1

\itema用和标记\itemb

\documentclass{article}
\usepackage{enumitem}

\newenvironment{enumerateab}[1][]
 {\enumerate[label=\theEABII,before=\setcounter{EABI}{0},#1]}
 {\endenumerate}
\newcounter{EABI}
\newcounter{EABII}[EABI]
\makeatletter
\renewcommand{\theEABII}{\arabic{EABI}\@alph{\numexpr\c@EABII+1}}
\makeatother
\newcommand\itema{\stepcounter{EABI}\item}
\newcommand\itemb{\stepcounter{EABII}\item}

\begin{document}

\begin{enumerateab}
\itema item 1a
\itemb item 1b
\itema\label{foo} item 2a
\itemb item 2b
\end{enumerateab}

Item \ref{foo} is nice.

\end{document}

在此处输入图片描述

或者,如果你总是交替“a”和“b”:

\documentclass{article}
\usepackage{enumitem}

\newenvironment{enumerateab}[1][]
 {\enumerate[label=\theEABII,before=\setcounter{EABI}{0}\itematrue,#1]%
  \let\latexitem\item\let\item\itemab}
 {\endenumerate}
\newif\ifitema
\newcounter{EABI}
\newcounter{EABII}[EABI]
\makeatletter
\renewcommand{\theEABII}{\arabic{EABI}\@alph{\numexpr\c@EABII+1}}
\makeatother

\newcommand\itemab{%
  \ifitema
    \stepcounter{EABI}\itemafalse\latexitem
  \else
    \stepcounter{EABII}\itematrue\latexitem
  \fi
}

\begin{document}

\begin{enumerateab}
\item item 1a
\item item 1b

\item\label{foo} item 2a
\item item 2b
\end{enumerateab}

Item \ref{foo} is nice.

\end{document}

答案2

定义你自己的表示

\documentclass{article}
\usepackage{enumitem}
\usepackage{xparse}
\ExplSyntaxOn\makeatletter
\NewDocumentCommand\arabicalph{ m }
{ \int_if_odd:nTF { \the\value{#1}} 
 { \int_eval:n {(\the\value{#1} + 1)/2 }a}
 { \int_eval:n {\the\value{#1} / 2 } b}}
\ExplSyntaxOff

\begin{document}


\begin{enumerate}[label=\arabicalph{enumi}]

        \item item 1a
        \item item 1b

        \item item 2a
        \item item 2b

\end{enumerate}
\end{document}

在此处输入图片描述

备注:这里的语法label= \arabicalph*不起作用,但是现在尝试找出原因已经太晚了......

答案3

pairitem以下是使用附加计数器并手动设置项目编号表示的实现:

在此处输入图片描述

\documentclass{article}

\newcounter{pairitem}
\newenvironment{pairenumerate}
  {\begin{enumerate}% Regular enumerate
     \let\olditem\item% Store \item
     \renewcommand{\theenumi}{\thepairitem\ifodd\value{enumi}a\else b\fi}% \item counter + reference
     \renewcommand{\labelenumi}{(\theenumi)}% Counter representation in list
     \setcounter{pairitem}{0}% Restart numbering
     \renewcommand{\item}{% Update \item to check whether enumi is odd (for 'a'/'b' suffic
       \ifodd\value{enumi}\else\stepcounter{pairitem}\fi
       \olditem
     }}
  {\end{enumerate}}

\begin{document}

\begin{pairenumerate}
  \item item 1a
  \item item 1b

  \item\label{foo} item 2a
  \item item 2b
\end{pairenumerate}

Item~\ref{foo} is nice.

\end{document}

相关内容