xcolor包中的可变参数

xcolor包中的可变参数

这不管用,我很难想出一个最低限度在职的例如,但我想做这样的事情,我有一个范围将命令作为变量:

\usepackage{xcolor}
\definecolor{mycolor1}{RGB}{126,169,105}
\definecolor{mycolor2}{RGB}{26,69,15}

\newcommand{\ColorVariable1}{mycolor1}
% or
\DeclareRobustCommand{\RobustColorVariable1}{mycolor1}

允许我在文档主体的多个位置执行如下操作:

\textcolor{\ColorVariable1}{Some text in a variable color}

我可以通过为所有彩色文本部分分配新颜色(如下所示)来一次性更改它们的颜色。多变的而不是像我现在所做的那样,使用编辑器全局搜索并在文本的所有位置替换 mycolor1 和 mycolor2。

\newcommand{\ColorVariable1}{mycolor2}

我知道我可以在文档正文中做类似的事情(但不能针对参数):

\def\somestring{Replace \somestring with this text.}

有些东西也与命令类似,但这似乎对参数不起作用:

\newcommand{name}[num][default]{definition}

有没有办法在 LaTeX 中做这样的事情?

答案1

xcolor提供了\colorlet。定义一个“颜色变量”,使用它并重新分配颜色可以在以下示例中看到:

\documentclass{article}

\usepackage{xcolor}
\definecolor{mycolor1}{RGB}{126,169,105}
\definecolor{mycolor2}{RGB}{26,69,15}

\colorlet{ColorVariable1}{mycolor1}

\begin{document}
\textcolor{ColorVariable1}{Some text in a variable color}

\verb|\colorlet{ColorVariable1}{mycolor2}|
\colorlet{ColorVariable1}{mycolor2}

\textcolor{ColorVariable1}{The color of the variable color can also be
changed.}
\end{document}

结果

答案2

以下似乎是一种更合适的用法,其中您定义\ColorVariable采用两个参数 - 第一个是颜色编号,第二个是您想要着色的文本:

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\definecolor{mycolor1}{RGB}{126,169,105}
\definecolor{mycolor2}{RGB}{26,69,15}
\makeatletter
\newcommand{\ColorVariable}[2]{%
  \textcolor{\ifnum#1>2 black\else mycolor#1\fi}{#2}}
\makeatother
\begin{document}
\ColorVariable{1}{Some text in a variable colour}.

Some text in a variable \ColorVariable{2}{colour}.

Some \ColorVariable{3}{text} in a \ColorVariable{1}{variable} \ColorVariable{2}{colour}.
\end{document}

black如果指定的数字大于X定义的颜色总数,则内置一个测试来将颜色设置为mycolorX

相关内容