Как отформатировать перечисление по-другому, только если оно содержит один элемент?

Как отформатировать перечисление по-другому, только если оно содержит один элемент?

Я хочу сделать перечисление, которое форматируется одним способом, если в нем несколько элементов, и другим способом, если в нем один элемент. Что-то вроде этого:

Список с несколькими пунктами:

#1 Item1
#2 Item2
#3 Item3

Список с одним элементом:

* SingleItem

В настоящее время я использую enumitempackage для форматирования своих списков, поэтому было бы неплохо использовать его, но любые другие решения будут приветствоваться.

решение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}

введите описание изображения здесь

Связанный контент