
여러 항목이 있는 경우 특정 방식으로 형식이 지정되고 단일 항목이 있는 경우 다른 방식으로 형식이 지정되는 열거를 수행하고 싶습니다. 이 같은:
여러 항목이 포함된 목록:
#1 Item1
#2 Item2
#3 Item3
단일 항목이 포함된 목록:
* SingleItem
현재 enumitem
패키지를 사용하여 목록 형식을 지정하고 있으므로 사용하면 좋지만 다른 솔루션도 환영합니다.
답변1
매크로를 사용하여 목록을 반복 etoolbox
하고 이를 특수 enumerate
환경 에 공개하는 빠르고 더러운 시험 솔루션
설명:
\IntelligentEnumerate
세 가지 인수가 포함된 래퍼입니다.
- 첫 번째는 선택적 인수 열거에 대한 레이블 및 기타 설정을 포함하는 선택 사항입니다.
- 첫 번째 항목은 쉼표로 구분된 목록으로 목록 항목을 포함합니다(필수).
- 세 번째 항목은 다시 선택 사항이며 단일 항목 '목록'에 대한 옵션을 포함합니다.
\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}