
在下面的 mwe 中,我聲明了一個 key /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}},