
В приведенном ниже коде я объявляю ключ /tikz/my key/radius
и настраиваю его /tikz/my key
так, чтобы my key={radius=50pt}
работало using.
Например, это распространенная модель 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
, но это влияет на все последующие параметры на узле, например, он пытается выполнить reslove 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}},