我想创建一个自动逐项列举环境,其中项目的颜色字体是交替的。
假设有以下列表:
\begin{itemize}
\item A
\item B
\item C
\item D
\item E
\end{itemize}
我想要一个代码,其中 A、C 和 E 有颜色 #1,而 B 和 D 有颜色 #2。
是的,我知道我可以创建一个替代的 \item 命令(\coloreditem 或类似命令),但我希望使用自动化方法。因此,如果我在列表中的其他两个项目之间动态插入一个新项目,则无需(手动)更改新项目后每个项目的配色方案。
答案1
像这样?
\documentclass[]{article}
\usepackage{xcolor}
\usepackage{duckuments}
\usepackage{letltxmacro}
\newif\iffirstcoloreditem
\newcommand*\colorizeitemize[2]
{%
\LetLtxMacro\itemBAK\item
\renewcommand*\item[1][]
{%
\iffirstcoloreditem
\firstcoloreditemfalse
\color{#1}%
\else
\firstcoloreditemtrue
\color{#2}%
\fi
\if\relax\detokenize{##1}\relax
\itemBAK
\else
\itemBAK[##1]%
\fi
}%
}
\begin{document}
\bgroup
\colorizeitemize{blue}{red}
\duckitemize
\duckenumerate
\duckdescription
\egroup
\end{document}
答案2
\item
您可以在包中的每个宏前添加自定义宏xpatch
。在下面的示例中,\choosecolor
宏被定义为使用切换按钮来交替颜色。
梅威瑟:
\documentclass{article}
\usepackage{xcolor}
\usepackage{xpatch}
\newtoggle{tcolor}
\newcommand{\choosecolor}{%
\iftoggle{tcolor}%
{\color{\colorone}\togglefalse{tcolor}}%
{\color{\colortwo}\toggletrue{tcolor}}%
}
\pretocmd{\item}{\choosecolor}{}{}
\begin{document}
\def\colorone{red}
\def\colortwo{blue}
\begin{itemize}
\item first item
\item second item
\item third item
\end{itemize}
Text after itemize
\end{document}
结果: