
Ich möchte eine Liste mit farbigen Zahlen erstellen. Ich habe herausgefunden, dass ich den Befehl \labelenumi erneuern muss, der von der Enumerate-Umgebung zum Beschriften von Elementen verwendet wird. Ich möchte jedoch in der Lage sein, zur Standardeinstellung zurückzukehren, und habe mit diesem Codestück mithilfe des Pakets circledsteps alles erreicht.
\newcommand{\colorlabel}{
\let\oldlabelenumi\labelenumi
\renewcommand{\labelenumi}{
\Circled[inner color=white,fill color=mycolor,outer color=mycolor]{\textsf{\arabic{enumi}}}
}
}
\newcommand{\defaultlabel}{
\renewcommand{\labelenumi}{\oldlabelenumi}
}
Das Problem ist, dass es beim ersten Mal funktioniert, wenn ich \colorlabel und \defaultlabel verwende. Beim zweiten Mal, wenn ich zu farbigen Beschriftungen wechsle, funktioniert es auch, aber wenn ich wieder auf Standard zurückschalte, funktioniert es nicht (wenn es innerhalb der Aufzählungsgruppe verwendet wird, bewirkt \defaultlabel nichts und wenn es außerhalb verwendet wird, wird der Code nicht kompiliert). Ich kann es beheben, indem ich alles, was nicht farbig ist, manuell beschrifte und nie wieder auf Standard zurückschalte, aber ich möchte diese Lösung vermeiden.
Bearbeiten:
Hier ist eine kompilierbare Version des Codes. Wenn Sie den letzten Teil auskommentieren, wird der Code nicht kompiliert.
\documentclass[a4paper,11 pt]{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{circledsteps}
\newcommand{\colorlabel}{
\let\oldlabelenumi\labelenumi
\renewcommand{\labelenumi}{
\Circled[inner color=white,fill color=mycolor,outer color=mycolor]{\textsf{\arabic{enumi}}}
}
}
\newcommand{\defaultlabel}{
\renewcommand{\labelenumi}{\oldlabelenumi}
}
\begin{document}
\definecolor{hardex}{RGB}{204,51,0}
\definecolor{mediumex}{RGB}{204,153,0}
\definecolor{easyex}{RGB}{0,153,51}
\colorlet{mycolor}{easyex}
\newcommand{\ritem}{\colorlet{mycolor}{hardex} \item}
\newcommand{\yitem}{\colorlet{mycolor}{mediumex} \item}
\newcommand{\gitem}{\colorlet{mycolor}{easyex} \item}
\colorlabel
\begin{enumerate}
\gitem green
\yitem yellow
\ritem red
\item red again
\end{enumerate}
\defaultlabel
\begin{enumerate}
\item one
\item two
\end{enumerate}
\colorlabel
\begin{enumerate}
\gitem green
\end{enumerate}
\defaultlabel
%\begin{enumerate}
% \item ?
%\end{enumerate}
\end{document}
Antwort1
Sie müssen initialisieren \oldlabelenumi
, sonst führt ein fehlendes Initial \colorlabel
zum Fehler.
\documentclass[a4paper,11 pt]{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{circledsteps}
\let\oldlabelenumi\labelenumi
\newcommand{\colorlabel}{%
\renewcommand{\labelenumi}{%
\Circled[inner color=white,fill color=mycolor,outer color=mycolor]{\textsf{\arabic{enumi}}}
}%
}
\newcommand{\defaultlabel}{%
\let\labelenumi\oldlabelenumi
}
\definecolor{hardex}{RGB}{204,51,0}
\definecolor{mediumex}{RGB}{204,153,0}
\definecolor{easyex}{RGB}{0,153,51}
\colorlet{mycolor}{easyex}
\newcommand{\ritem}{\colorlet{mycolor}{hardex} \item}
\newcommand{\yitem}{\colorlet{mycolor}{mediumex} \item}
\newcommand{\gitem}{\colorlet{mycolor}{easyex} \item}
\begin{document}
\colorlabel
\begin{enumerate}
\gitem green
\yitem yellow
\ritem red
\item red again
\end{enumerate}
\defaultlabel
\begin{enumerate}
\item one
\item two
\end{enumerate}
\colorlabel
\begin{enumerate}
\gitem green
\end{enumerate}
\defaultlabel
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{document}
Andererseits würde ich eine andere Strategie bevorzugen, nämlich die Definition einer colorenumerate
Umgebung.
\documentclass[a4paper,11 pt]{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{circledsteps}
\newenvironment{colorenumerate}[1][]{%
\begin{enumerate}[#1]
\renewcommand{\labelenumi}{%
\Circled[inner color=white,fill color=mycolor,outer color=mycolor]{\textsf{\arabic{enumi}}}
}%
}{\end{enumerate}}
\definecolor{hardex}{RGB}{204,51,0}
\definecolor{mediumex}{RGB}{204,153,0}
\definecolor{easyex}{RGB}{0,153,51}
\colorlet{mycolor}{easyex}
\newcommand{\ritem}{\colorlet{mycolor}{hardex}\item}
\newcommand{\yitem}{\colorlet{mycolor}{mediumex}\item}
\newcommand{\gitem}{\colorlet{mycolor}{easyex}\item}
\begin{document}
\begin{colorenumerate}
\gitem green
\yitem yellow
\ritem red
\item red again
\end{colorenumerate}
\begin{enumerate}
\item one
\item two
\end{enumerate}
\begin{colorenumerate}
\gitem green
\end{colorenumerate}
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{document}