Genealogytree/tcolorbox - 将命令作为参数传递给节点

Genealogytree/tcolorbox - 将命令作为参数传递给节点

使用该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}

相关内容