将 \item 放入组中,以便限制列表条目的排版效果

将 \item 放入组中,以便限制列表条目的排版效果

我想要对或环境\item中的每个进行隐式分组,以将排版效果(着色、强调)限制到相应的。itemizeenumerate\item

例如,

\begin{itemize}
\item\color{red}
Cat
\item
Dog
\begin{itemize}

应该表现得像这样:

\begin{itemize}
{\item\color{red}
Cat}
\item
Dog
\begin{itemize}

这将使我能够提供专门的\item类型:

\begin{itemize}
\coloritem[red]
Cat
\item
Dog
\begin{itemize}

其中\coloritem是专门类型的一个例子\item,可以定义如下:

\let\itemaux\item
\newcommand{\coloritem}[1][blue]{\color{#1}\itemaux}

所提供的代码将“* Cat”的颜色更改为红色,但不限于\coloritem,因此“* Dog”也显示为红色,而不是之前活动的颜色\begin{itemize}

答案1

我会重新定义\item为(仅在citemize环境内)在括号中有一个进一步的可选参数,以指定颜色。

诀窍是在环境开始时保存当前颜色。

\documentclass{article}
\usepackage{xcolor}

\usepackage{lipsum} % for context

\NewDocumentEnvironment{citemize}{}{%
  \colorlet{current@color}{.}%
  \NewCommandCopy{\latexitem}{\item}%
  \RenewCommandCopy{\item}{\citem}%
  \itemize
}{\enditemize}

\NewDocumentCommand{\citem}{d()o}{%
  \IfNoValueTF{#1}{\color{current@color}}{\color{#1}}%
  \IfNoValueTF{#2}{\latexitem}{\latexitem[#2]}%
}

\begin{document}

\color{gray!80}

\lipsum[1][1-3]
\begin{citemize}
\item(red) Cat
\item Dog
\end{citemize}
\lipsum[2][1-3]

\bigskip

\color{black}

\lipsum[1][1-3]
\begin{citemize}
\item(red) Cat
\item Dog
\end{citemize}
\lipsum[2][1-3]

\end{document}

ID不是用于itemize该应用程序。

在此处输入图片描述

相关内容