如何声明 tikz“目录”或键组

如何声明 tikz“目录”或键组

在下面的 mwe 中,我声明了一个键/tikz/my key/radius,并且我进行了设置/tikz/my key以便使用my key={radius=50pt}有效。

例如,这是一种常见的模式decorate, decoration={lots of options here}

编辑:我正在寻找一个.is directory标志,以便书写/tikz/my key/.is directory相当于/tikz/my key/.code={\pgfkeys{/tikz/my key/.cd,#1}}

我尝试使用 进行设置/tikz/my key/tikz/my key/.is family但这会影响节点上的所有以下选项,例如,它会尝试重新解决debug my key/tikz/my key/debug my key不是仅仅解决/tikz/debug my key

是否有类似的密钥处理程序.is family,将密钥设置为接受子密钥列表,但不适.cd用于其他选项?

\documentclass{article}
\usepackage{tikz}
\begin{document}

\tikzset{
  %/tikz/my key/.is family,
  /tikz/my key/.code={
    \tikzset{%
      my key/.cd,%
      #1%
    }
  },
  /tikz/my key/radius/.initial=10pt,
  /tikz/my key/radius/.default=10pt,
}

\tikzset{
  debug my key/.style={
    my key/radius/.show value,
  }
}

\tikz\node[my key={radius=50pt}, debug my key] {};

\end{document}

答案1

您可以在代码中使用 \pgfkeys (如果我正确理解了您的问题 - 我不太清楚您为什么想要/需要.is family

\documentclass{article}
\usepackage{tikz}
\begin{document}

\tikzset{
  /tikz/my key/.is family,
  /tikz/my key/.code={
    \pgfkeys{/tikz/my key/.cd,#1}
    }
  ,
  /tikz/my key/radius/.initial=10pt,
  /tikz/my key/radius/.default=10pt,
}

\tikzset{
  debug my key/.style={
    my key/radius/.show value,
  }
}

\tikz\node[my key={radius=50pt}, debug my key, line width=2pt,draw] {blblblb };

\end{document}

顺便说一句:您可以查看 pgfmodulesdecoration.code.tex 发现它也是在那里完成的:

 /pgf/decoration/.code={\pgfkeys{/pgf/decoration/.cd,#1}},

相关内容