只有當枚舉只有一個項目時,如何以不同的方式格式化它?

只有當枚舉只有一個項目時,如何以不同的方式格式化它?

我想做一個枚舉,如果它有多個項目,則以某種方式格式化,但如果它有一個項目,則以不同的方式格式化。像這樣的東西:

包含多個項目的清單:

#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}

在此輸入影像描述

相關內容