我正在使用 TikZ 编写一个复杂图表,其中某些节点使用的颜色取决于输入变量的值。我不能将颜色本身用作输入变量,因为除颜色之外的某些东西也会发生变化。
我还没有写过这个,所以无法提供 MWE,但是想法是:
- 使用 \ifthenelse 检查输入参数(例如 #1)的值。
- 为一系列变量分配一些颜色,比如,如果变量 #1 取一个值,则 boxcolor=red!90!black,flatcolor=blue!30!green,juxtaposecolor=yellow;如果变量 #1 取另一个值,则分配上述另一组颜色。
- 绘制图表,直接使用 boxcolor、flatcolor、juxtaposecolor 等,以及基于它们计算的颜色(boxcolor!40!flatcolor)。
我如何在新命令中执行此操作?是否可以先以某种方式设置颜色变量,然后在随后的一些常见代码块中使用?
答案1
\documentclass[margin = 1cm]{standalone}
\usepackage{tikz}
\begin{document}
\def\test#1{%
\ifnum#1>10 %
\colorlet{main}{red}%
\else
\ifnum#1>1 %
\colorlet{main}{blue}%
\else
\colorlet{main}{brown}%
\fi
\fi
}
\begin{tikzpicture}
\foreach \x in{-1,5,12}
{
\test{\x}
\draw[main] (\x,0)circle(2);
}
\end{tikzpicture}
\end{document}
当 #1 > 10 时,main = 红色;且 1 < #1 <= 10 时,main = 蓝色;否则,main = 棕色。