Ich möchte meine \item
in einer speziellen Reihenfolge aufzählen lassen, nicht sequenziell. Im folgenden Beispiel (das ist mein aktuelles Projekt) gibt es immer genau 3 \item
s.
(Um Benutzerfehler zu behandeln, bei denen der \item
Zä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 \item
s enthält.)
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 \item
4 (oder höher) einen Fehler („Zähler zu groß“).
\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 \label
und 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}