我想要一个使用几种不同项目颜色(至少三种)的条目列表。基本上类似于描述的内容这里按照 Alan Munn 建议的方向:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\newif\ifgooditem
\gooditemtrue
\newcommand\gooditem{\gooditemtrue\item}
\newcommand\baditem{\gooditemfalse\item}
\begin{document}
\begin{itemize}[label={\ifgooditem\color{green}\else\color{red}\fi\textbullet}]
\gooditem A good item
\baditem A bad item
\end{itemize}
\end{document}
我只是想要至少有第三类,例如\neutralitem
。这该怎么做?我试过了
\newif\ifgooditem
\gooditemtrue
\newif\ifneutralitem
\neutralitemtrue
\newcommand\gooditem{\gooditemtrue\item}
\newcommand\neutralitem{\gooditemfalse\item}
\newcommand\baditem{\gooditemfalse\baditemtrue\neutralitemfalse\item}
和
[label={\ifgooditem\color{green}\ifbaditem\color{red}\else\color{black}\fi\textbullet}]
但它似乎不起作用。
答案1
您可以尝试以下操作:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\newif\ifgooditem
\newif\ifneutralitem
\newif\ifbaditem
\newcommand\gooditem{\gooditemtrue\baditemfalse\neutralitemfalse\item}
\newcommand\neutralitem{\neutralitemtrue\gooditemfalse\baditemfalse\item}
\newcommand\baditem{\baditemtrue\gooditemfalse\neutralitemfalse\item}
\begin{document}
\begin{itemize}[label={
\ifgooditem\color{green}\fi
\ifbaditem\color{red}\fi
\ifneutralitem\color{black}\fi
\textbullet}]
\neutralitem A neutral item
\gooditem A good item
\baditem A bad item
\gooditem A good item
\baditem A bad item
\neutralitem A neutral item
\end{itemize}
\end{document}
答案2
更灵活的解决方案是测试变量的命令,我使用ifthen
字符串比较包来完成此操作。
\documentclass{article}
\usepackage{ifthen}
\usepackage{enumitem}
\usepackage{xcolor}
\newcommand{\itemclass}{}
\newcommand{\myitem}[1]{%
\renewcommand{\itemclass}{#1}\item%
}
\newcommand{\mylabel}{%
\ifthenelse{\equal{\itemclass}{bad}}{\color{red}\textbullet}{%
\ifthenelse{\equal{\itemclass}{good}}{\color{green}\textbullet}{%
\ifthenelse{\equal{\itemclass}{neutral}}{\color{black}\textbullet}{}}}%
}
\begin{document}
\begin{itemize}[label=\mylabel]
\myitem{good} green
\myitem{bad} red
\myitem{neutral} black
\end{itemize}
\end{document}