这不管用,我很难想出一个最低限度在职的例如,但我想做这样的事情,我有一个范围将命令作为变量:
\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
。