Как объявить «каталог» tikz или группу ключей

Как объявить «каталог» tikz или группу ключей

В приведенном ниже коде я объявляю ключ /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}},

Связанный контент