
Desejo fazer uma lista enumerada com números coloridos. A maneira que encontrei foi renovar o comando \labelenumi usado pelo ambiente enumerado para rotular itens. No entanto, quero poder voltar ao padrão e conseguir tudo usando este trecho de código com a ajuda do pacote 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}
}
O problema é que na primeira vez que uso \colorlabel e \defaultlabel funciona. Na segunda vez que mudo para rótulos coloridos, ele também funciona, mas voltar ao padrão novamente não funciona (se usado dentro do grupo enumerado \defaultlabel não faz nada e, se usado fora, faz com que o código não seja compilado). Posso consertar rotulando manualmente tudo que não está colorido e nunca voltando ao padrão, mas gostaria de evitar essa solução.
Editar:
Aqui está uma versão compilável do código. Se você descomentar a última parte, o código não será compilado.
\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}
Responder1
Você precisa inicializar \oldlabelenumi
, caso contrário, uma inicial ausente \colorlabel
produzirá o erro.
\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 outro lado, prefiro uma estratégia diferente, ou seja, definir um colorenumerate
ambiente.
\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}