5

I would like to have my \item enumerated in a special order, non-sequential. In the example below (which is my current project) there are always exactly 3 \items.

(To handle user errors where the \item counter exceeds the defined maximal number, it could output a (red) error text for the \item(s), to draw attention that the enumeration list contains too many \items.)

enter image description here

In this case I have used code for circled text from Good way to make \textcircled numbers?

I would like to type

\begin{CircleProcedure}
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\end{CircleProcedure}

instead of the 'full' argument as shown in the MWE below.

Another possible output that I'm thinking of is with a mathematical index, shown as sample No. 2

Below I show a suggested input in an MWE, but with the [] arguments that I would like to avoid.

(For simple and uniform input/output environments are used)

MWE:

\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{enumitem}

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}

\newenvironment{CircleProcedure} {\begin{enumerate}[labelwidth=16mm,leftmargin=16mm,labelsep=2mm]} {\end{enumerate}} \newenvironment{IndexProcedure} {\begin{enumerate}[align=left,labelwidth=9mm,leftmargin=10mm,labelsep=1mm]} {\end{enumerate}}

\begin{document}

\lipsum[1][1-5]

\begin{CircleProcedure} \item[\circled{1}] \lipsum[1][1-2] \item[\circled{2}] \lipsum[1][1-2] \item[(\circled{1}+\circled{2})] \lipsum[1][1-2] \end{CircleProcedure}

\lipsum[1][1-5]

\begin{IndexProcedure} \item[(\textbf{P}{1})] \lipsum[1][1-2] \item[(\textbf{P}{2})] \lipsum[1][1-2] \item[(\textbf{P}_{1+2})] \lipsum[1][1-2] \end{IndexProcedure}

\lipsum[1][1-5]

\end{document}

(I run pdfLaTeX 2023 on overleaf.com)

mf67
  • 666

2 Answers2

5

You can generate your own list and then specify the counters should be represented and link the two (using \AddEnumerateCounter). The counter representations defines what the numbers look like for 1, 2 and 3, and causes an error ("Counter too large") for \item 4 (or higher).

enter image description here

\documentclass{article}

\usepackage{tikz} \usepackage{lipsum} \usepackage{enumitem}

\NewDocumentCommand{\circled}{m}{% \tikz[baseline=(char.base)]{% \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}

\newlist{CircleProcedure}{enumerate}{1} \setlist[CircleProcedure]{% labelwidth=16mm, leftmargin=16mm, labelsep=2mm, label=\circledenum, } \newlist{IndexProcedure}{enumerate}{1} \setlist[IndexProcedure]{% align=left, labelwidth=15mm, leftmargin=15mm, labelsep=0mm, label=\indexenum }

\makeatletter \newcommand{\circledenum}[1]{% \expandafter@circledenum\csname c@#1\endcsname% } \newcommand{@circledenum}[1]{% $\ifcase#1\or\circled{1}\or\circled{2}\or\circled{1}+\circled{2}% \else@ctrerr\fi$% } \AddEnumerateCounter{\circledenum}{@circledenum}{1}

\newcommand{\indexenum}[1]{% \expandafter@indexenum\csname c@#1\endcsname% } \newcommand{@indexenum}[1]{% $\ifcase#1\or\textbf{P}_1\or\textbf{P}_2\or\textbf{P}_1+\textbf{P}_2% \else@ctrerr\fi$% } \AddEnumerateCounter{\indexenum}{@indexenum}{1} \makeatother

\begin{document}

\lipsum[1][1-5]

\begin{CircleProcedure} \item \lipsum[1][1-2] \item \lipsum[1][1-2] \item \lipsum[1][1-2] \end{CircleProcedure}

\lipsum[1][1-5]

\begin{IndexProcedure} \item \lipsum[1][1-2] \item \lipsum[1][1-2] \item \lipsum[1][1-2] \end{IndexProcedure}

\lipsum[1][1-5]

\end{document}

You can also use \label and \ref if needed.

Werner
  • 603,163
4

One method without using enumitem:

\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt] (char) {#1};}}

\newcounter{CircledProcedure} \newenvironment{CircledProcedure}% {\begin{list}{}{ \labelwidth 16mm% \leftmargin 16mm% \labelsep 2mm% \let\makelabel\CircledProcedureLabel \usecounter{CircledProcedure} }}{\end{list}} \newcommand*{\CircledProcedureLabel}{% \ifnum\value{CircledProcedure}<3 \hfill\circled{\theCircledProcedure} \else (\circled{1}+\circled{2}) \fi}

\begin{document}

\begin{CircledProcedure} \item \lipsum[1][1-2] \item \lipsum[1][1-2] \item \lipsum[1][1-2] \end{CircledProcedure}

\end{document}

enter image description here

Stephen
  • 3,826