“命令后附加”中的“pgfkeysvalueof”

“命令后附加”中的“pgfkeysvalueof”

使用以下代码,我尝试用 覆盖默认值bcol=redbcol=green但显然不起作用(两种情况下都使用初始值)。是否有合理的解决方案来实现这个想法(添加由传递给另一个节点的键控制的节点)?

请注意,我简化了我的原始示例 - 我有更复杂的形状,一个从属于另一个,并且都采用多个参数。

\documentclass[border=5pt,multi,tikz]{standalone}

\tikzset{
  bbox/.style={
    draw,
    append after command={node[fill=\pgfkeysvalueof{/tikz/bcol},at=(\tikzlastnode.north east)] {}}
  }
}

\tikzset{%
  bcol/.initial=red,
}

\begin{document}
\begin{tikzpicture}
  \node [bbox, draw] {};
  \node [bbox, xshift=15pt, bcol=green, draw] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

这个问题与 Ti 关系不大Z 但使用 TeX 分组。也就是说,您无法在节点的本地组内设置颜色。避免此问题的方法之一是

\documentclass[border=5pt,multi,tikz]{standalone}

\tikzset{
  bbox/.style={
    draw,
    append after command={[#1]
    node[fill/.expanded=\pgfkeysvalueof{/tikz/bcol},at=(\tikzlastnode.north east)] {}}
  }
}

\tikzset{%
  bcol/.initial=red,
}

\begin{document}
\begin{tikzpicture}
  \node [bbox, draw] {};
  \node [bbox={bcol=green}, xshift=15pt, draw] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容