Benutzerdefinierte nicht sequentielle Aufzählung

Benutzerdefinierte nicht sequentielle Aufzählung

Ich möchte meine \itemin einer speziellen Reihenfolge aufzählen lassen, nicht sequenziell. Im folgenden Beispiel (das ist mein aktuelles Projekt) gibt es immer genau 3 \items.

(Um Benutzerfehler zu behandeln, bei denen der \itemZähler die definierte Maximalzahl überschreitet, könnte bei den (s) ein (roter) Fehlertext ausgegeben werden \item, um darauf aufmerksam zu machen, dass die Aufzählungsliste zu viele \items enthält.)

Bildbeschreibung hier eingeben

In diesem Fall habe ich Code für eingekreisten Text verwendet vonGute Möglichkeit, \textkreiste Zahlen zu erstellen?

Ich möchte tippen

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

anstelle des „vollständigen“ Arguments, wie im MWE unten gezeigt.

Eine andere mögliche Ausgabe, die mir in den Sinn kommt, ist ein mathematischer Index, dargestellt als Beispiel Nr. 2

Nachfolgend zeige ich einen Vorschlag für die Eingabe in einem MWE, allerdings mit den []Argumenten, die ich vermeiden möchte.

(Dafür werden einfache und einheitliche Ein-/Ausgabeumgebungen verwendet)

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}

(Ich verwende pdfLaTeX 2023 aufoverleaf.com)

Antwort1

Man kann eine eigene Liste generieren und dann angeben, welche Zähler dargestellt werden sollen und diese dann verknüpfen (mit \AddEnumerateCounter). Die Zählerdarstellungen legen fest, wie die Zahlen für 1, 2 und 3 aussehen und verursachen bei \item4 (oder höher) einen Fehler („Zähler zu groß“).

Bildbeschreibung hier eingeben

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

Sie können bei Bedarf auch \labelund verwenden.\ref

Antwort2

Eine Methode ohne Verwendung von 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}

Bildbeschreibung hier eingeben

verwandte Informationen