在下面的 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}},