如果枚举仅包含单个项目,如何以不同的方式格式化枚举?

如果枚举仅包含单个项目,如何以不同的方式格式化枚举?

我想进行枚举,如果枚举包含多个项,则采用某种格式,如果枚举包含单个项,则采用另一种格式。如下所示:

包含多个项目的列表:

#1 Item1
#2 Item2
#3 Item3

包含单个项目的列表:

* SingleItem

我目前正在使用enumitem包来格式化我的列表,因此使用它会很好,但任何其他解决方案都会受到欢迎。

答案1

一个快速而粗糙的试验解决方案,使用宏循环遍历列表etoolbox并将其发布到专门的enumerate环境

描述:

\IntelligentEnumerate是一个具有三个参数的包装器:

  1. 第一个是可选的,包含枚举可选参数的标签和其他设置
  2. 第一个包含列表项,以逗号分隔的列表(强制)
  3. 第三个也是可选的,包含单个项目“列表”的选项

\documentclass[11pt,a4paper]{article}

\usepackage{enumitem}

\usepackage{xparse}

\usepackage{etoolbox}


\def\myitemlist{}

\newcounter{somecounter}

\newcommand{\additemtolist}[1]{%
\stepcounter{somecounter}%
\listgadd{\myitemlist}{#1}%
}


\NewDocumentCommand{\IntelligentEnumerate}{+O{label={\#\arabic*}}+m+O{label={\textasteriskcentered}}}{%
  \setcounter{somecounter}{0}
  \forcsvlist{\additemtolist}{#2}%
  \ifnumgreater{\value{somecounter}}{1}{%
    \renewcommand*{\do}[1]{%
    \item ##1
    }
    \begin{enumerate}[#1]
      \dolistloop{\myitemlist}
    \end{enumerate}
  }{%
    \begin{enumerate}[#3]
    \item  #2
    \end{enumerate}
  }%   
  \def\myitemlist{}% 'Clear' the list at the end 
}



\begin{document}

\IntelligentEnumerate{First, Second, Third}


\IntelligentEnumerate[label={\Roman*}]{First, Second, Third}


\IntelligentEnumerate{This is a single Item}

\IntelligentEnumerate{This is a single Item}[label={$\int$}]



\end{document}

在此处输入图片描述

相关内容