
色付きの数字で列挙されたリストを作成したいです。私が見つけた方法は、enumerate 環境で使用される \labelenumi コマンドを更新して項目にラベルを付けることです。ただし、デフォルトに戻せるようにしたいので、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}
}
問題は、\colorlabel と \defaultlabel を最初に使用したときには機能することです。2 回目に色付きラベルに切り替えると、これも機能しますが、デフォルトに戻すと機能しません (列挙グループ内で使用した場合、\defaultlabel は何も実行されず、外部で使用するとコードがコンパイルされません)。色付きでないすべてのものに手動でラベルを付け、デフォルトに戻さないようにすることで修正できますが、その解決策は避けたいと思います。
編集:
コンパイル可能なバージョンのコードは次のとおりです。最後の部分のコメントを外すと、コードはコンパイルされません。
\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}
答え1
を初期化する必要があります。初期化し\oldlabelenumi
ないと、初期値がないために\colorlabel
エラーが発生します。
\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}
一方、私は別の戦略、つまりcolorenumerate
環境を定義することを好みます。
\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}