在新命令中为变量名称分配颜色

在新命令中为变量名称分配颜色

我正在使用 TikZ 编写一个复杂图表,其中某些节点使用的颜色取决于输入变量的值。我不能将颜色本身用作输入变量,因为除颜色之外的某些东西也会发生变化。

我还没有写过这个,所以无法提供 MWE,但是想法是:

  1. 使用 \ifthenelse 检查输入参数(例如 #1)的值。
  2. 为一系列变量分配一些颜色,比如,如果变量 #1 取一个值,则 boxcolor=red!90!black,flatcolor=blue!30!green,juxtaposecolor=yellow;如果变量 #1 取另一个值,则分配上述另一组颜色。
  3. 绘制图表,直接使用 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 = 棕色。

相关内容