我想列一个如下清单:
(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}