考虑以下简单的代码:
\documentclass[11pt]{article}
\begin{document}
\begin{itemize}
\item plain text
\item I want this to be blue
\item another text
\end{itemize}
\end{document}
代码的结果是
现在,假设我想将第二个项目的文本颜色设为蓝色。可以手动使用该textcolor
命令,但问题是,在我的实际示例中,有很多地方可以更改文本,并且这些地方经常被修改。因此,最好编写一个宏来简单地更改颜色。
问题:我如何定义类似这样的自定义命令\blueitem
,以便将上述代码中\item
的替换为\blueitem
可得到所需的结果?或者,作为替代方案,也可以考虑使用宏来代替\item[color=blue]
来\item
给出结果。
编辑:Sandy G 的答案在与环境一起使用时不起作用proof
。例如:
\documentclass[11pt]{article}
\usepackage{amsthm}
\usepackage{xcolor}
\let\olditem\item\renewcommand{\item}[1][black]{\color{#1}\olditem}
\begin{document}
\begin{itemize}
\item[blue] abc
\begin{proof}
abc.
\end{proof}
\end{itemize}
\end{document}
此代码给出错误消息
Package xcolor Error: Undefined color `\hskip \labelsep \itshape Proof\relax '. a
结果是:
请注意,没有“证明”符号。
答案1
您可以重新定义\item
使用来接受颜色的可选参数xcolor
。
\documentclass[11pt]{article}
\usepackage{xcolor}
\let\olditem\item\renewcommand{\item}[1][black]{\color{#1}\olditem}
\begin{document}
\begin{itemize}
\item plain text
\item[blue] I want this to be blue
\item[red] another text
\item one more
\end{itemize}
\end{document}
这种方法的主要问题是某些环境使用列表,并且会产生不良后果。值得注意的是,proof
fromamsthm
是一个列表,因此这种方法行不通。更好的解决方案是创建一个新命令,例如\citem
接受可选颜色参数:
\newcommand{\citem}[1][black]{\color{#1}\item}
这种方法的一个缺点是会改变列表中位于其下方的\citem
所有 s 的颜色。因此,使用无颜色(默认为黑色)将列表的其余部分改回黑色。然后,您可以在同一个列表中使用和。\item
\citem
\item
\citem
\documentclass[11pt]{article}
\usepackage{amsthm}
\usepackage{xcolor}
\newcommand{\citem}[1][black]{\color{#1}\item}
\begin{document}
\begin{itemize}
\citem[blue] abc
\begin{proof}
abc.
\end{proof}
\citem[red] abc
\begin{proof}
abc.
\end{proof}
\end{itemize}
\end{document}
答案2
这是实现此目的的一种方法:
\documentclass[11pt]{article}
\usepackage{xcolor}
\newcommand\colitem[2]{%
{\color{#1}\item {#2}}
}
\newcommand\reditem[1]{%
\colitem{red}{#1}
}
\newcommand\blueitem[1]{%
\colitem{blue}{#1}
}
\begin{document}
\begin{itemize}
\reditem {plain text}
\blueitem {I want this to be blue}
\item another text
\end{itemize}
\end{document}
输出将会像这样: