到目前为止,我有这样的事情:
\newif\ifCond
\tikzset{
cond/.is if=Cond,Cond/.default=false,
}
\newcommand{\myTikZdrawing}[1][Cond=false]{
\begin{tikzpicture}[#1]
\draw (0,0) rectangle (1,1);
\ifCond
\draw (0,0) rectangle (0.5,0.5);
\fi
\end{tikzpicture}
}
到目前为止,这可以用于(取消)激活绘制第二个矩形。但现在我想在执行此宏时设置第一个矩形的背景颜色(最好再次使用 tikz 键)。
到目前为止,我尝试使用.is choice
密钥进行如下操作:
\definecolor{color1}{HTML}{cccdf1}
\newif\ifCond
\tikzset{
cond/.is if=Cond,Cond/.default=false,
bgCol/blue/.style={fill=color1},
}
\newcommand{\myTikZdrawing}[1][Cond=false]{
\begin{tikzpicture}[#1]
\draw (0,0) rectangle (1,1);
\ifCond
\draw (0,0) rectangle (0.5,0.5);
\fi
\end{tikzpicture}
}
现在我可以传递[bgCol=blue]
给绘制命令,但是在文档中稍后使用此宏时我没有找到从外部设置此选项的方法。
有什么建议么?
答案1
像这样吗?
\documentclass{article}
\usepackage{tikz}
\definecolor{color1}{HTML}{cccdf1}
\newif\ifCond
\tikzset{
Cond/.is if=Cond,Cond/.default=true,
myrect/.style={},
bgCol/.is choice,
bgCol/blue/.code={\tikzset{myrect/.style={fill=color1}}},
bgCol/red/.code={\tikzset{myrect/.style={fill=red,draw=cyan,dashed}}},
}
\Condtrue
\newcommand{\myTikZdrawing}[1][Cond=false]{
\begin{tikzpicture}[#1]
\draw (0,0) rectangle (1,1);
\ifCond
\draw[myrect] (0,0) rectangle (0.5,0.5);
\fi
\end{tikzpicture}
}
\begin{document}
\myTikZdrawing
\bigskip
\myTikZdrawing[Cond]
\bigskip
\myTikZdrawing[Cond,bgCol=blue]
\bigskip
\myTikZdrawing[Cond,bgCol=red]
\bigskip
\end{document}