How to define an enumerate environment in which the label is omitted when item number is just one and displayed as usual when item number is more than one?
1 Answer
You can typeset the environment inside a box just to get the number of items and then retypeset it:
\usepackage{environ}
\makeatletter
\NewEnviron{fenumerate}
{\setbox0=\vbox{\enumerate\BODY\endenumerate\expandafter}%
\expandafter\def\expandafter\@tempfenum\expandafter{\the\value{\@enumctr}}%
\begin{enumerate}
\ifnum\@tempfenum=\@ne\expandafter\def\csname label\@enumctr\endcsname{}\fi
\BODY
\end{enumerate}}
\makeatother
First of all, the infrastructure set up by environ gathers the environment's text; then it typesets it in a temporary box and at the end the value of the relevant counter (enumi
, enumii
, enumiii
or enumiv
) is stored in \@tempfenum
, which is used for the "real" typesetting.
Usage:
\begin{fenumerate}
\item this won't get a number
\end{fenumerate}
\begin{fenumerate}
\item this will have a number
\item since it's followed by another item
\end{fenumerate}
thmtools
in which (page 3) a packageunique
is mentioned. But I cannot find it in CTAN. The package might give any help?