我有类似的东西
\definecolor{color1}{HTML}{cccdf1}
\newif\ifCond
\tikzset{
cond/.is if=Cond,Cond/.default=false,
bgCol/.is choice,
bgCol/blue/.code={\tikzset{myrect/.style={fill=color1}}},
bgCol/red/.code={\tikzset{myrect/.style={fill=red}}},
}
\newcommand{\myTikZdrawing}[1][Cond=false]{
\begin{tikzpicture}[#1]
\draw (0,0) rectangle (1,1);
\ifCond
\draw[myrect] (0,0) rectangle (0.5,0.5) node[midway] {text};
\fi
\end{tikzpicture}
}
现在我想在文档中稍后使用宏时使用一些 tikz 键指定节点文本的内容。
答案1
您可以将 pgf 键的值存储在您填写节点的某个宏中。pgf 键可以更改。
\documentclass{article}
\usepackage{tikz}
\definecolor{color1}{HTML}{cccdf1}
\newif\ifCond
\tikzset{
Cond/.is if=Cond,Cond/.default=true,
myrect/.style={},
my text/.store in=\mytext,
my text={A},
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) node[midway]
{\mytext};
\fi
\end{tikzpicture}
}
\begin{document}
\myTikZdrawing
\bigskip
\myTikZdrawing[Cond]
\bigskip
\myTikZdrawing[Cond,bgCol=blue,my text=B]
\bigskip
\myTikZdrawing[Cond,bgCol=red,my text=C]
\bigskip
\end{document}
如果您不想在此“浪费”宏,您可以使用\pgfkeysvalueof
密钥/.initial
处理程序。
\documentclass{article}
\usepackage{tikz}
\definecolor{color1}{HTML}{cccdf1}
\newif\ifCond
\tikzset{
Cond/.is if=Cond,Cond/.default=true,
myrect/.style={},
my text/.initial={A},
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)
node[midway]
{\pgfkeysvalueof{/tikz/my text}};
\fi
\end{tikzpicture}
}
\begin{document}
\myTikZdrawing
\bigskip
\myTikZdrawing[Cond]
\bigskip
\myTikZdrawing[Cond,bgCol=blue,my text=B]
\bigskip
\myTikZdrawing[Cond,bgCol=red,my text=C]
\bigskip
\end{document}
结果如上。