使用该genealogytree
包(基于该tcolorbox
包),我尝试将命令作为选项传递给给定节点。
在下面的 MWE 中,选项box={colback=MyColor}
可以传递给节点Parent
,但是保存到命令中的相同参数\Child
不能传递给节点Child
。
有人能解释我如何解决这个问题吗?
\documentclass{standalone}
\usepackage{genealogytree}
\begin{document}
\newcommand{\Child}{box={colback=red!30}}
\begin{tikzpicture}
\genealogytree{
child{
g[box={colback=blue!30}]{Parent}
c[\Child]{Child}
}
}
\end{tikzpicture}
\end{document}
答案1
您需要先扩展\Child
一次,然后 PGFKeys 才能解析它。
/tikz/style
这可以通过密钥和处理程序来完成.expand once
,为了更容易访问,我定义了一个/gtr/style
使用它们的,而无需您.expand once
每次都明确写入。
但是,由于它是 PGFKeys,因此您应该直接使用样式,例如
Child/.style={box={colback=red!30}}
我在第一张图中已经做到了。
代码
\documentclass[tikz]{standalone}
\usepackage{genealogytree}
\gtrset{style/.style={/tikz/style/.expand once={#1}}}
\begin{document}
\begin{tikzpicture}
\genealogytree[% or \gtrset{Child/.style={…}} in the preamble
Child/.style={box={colback=red!30}}
]{
child{
g[box={colback=blue!30}]{Parent}
c[Child]{Child}
}
}
\end{tikzpicture}
\begin{tikzpicture}
\newcommand{\Child}{box={colback=red!30}}
\genealogytree{
child{
g[box={colback=blue!30}]{Parent}
c[style=\Child]{Child}
}
}
\end{tikzpicture}
\end{document}