
Deseo hacer una lista enumerada con números de colores. La forma que encontré es renovar el comando \labelenumi utilizado por el entorno de enumeración para etiquetar elementos. Sin embargo, quiero poder volver al valor predeterminado y haber logrado todo usando este código con la ayuda del paquete 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}
}
El problema es que la primera vez que uso \colorlabel y \defaultlabel funciona. La segunda vez que cambio a etiquetas de colores también funciona, pero volver al valor predeterminado no funciona (si se usa dentro del grupo de enumeración \defaultlabel no hace nada y si se usa fuera, el código no se compila). Puedo solucionarlo etiquetando manualmente todo lo que no está coloreado y nunca volviendo al valor predeterminado, pero me gustaría evitar esa solución.
Editar:
Aquí hay una versión compilable del código. Si descomentas la última parte, el código no se compilará.
\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}
Respuesta1
Debe inicializar \oldlabelenumi
; de lo contrario, una inicial faltante \colorlabel
produce el error.
\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}
Por otro lado, preferiría una estrategia diferente, es decir, definir un colorenumerate
entorno.
\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}