
以下の 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
にreslove しようとします。/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}},