Como declarar um “diretório” ou grupo de chaves tikz

Como declarar um “diretório” ou grupo de chaves tikz

No mwe abaixo, declaro uma key /tikz/my key/radiuse configurei /tikz/my keypara que using my key={radius=50pt}funcione.

Este é um padrão comum, por exemplo decorate, decoration={lots of options here}.

Editar: estou procurando um .is directorysinalizador, para que a escrita /tikz/my key/.is directoryseja equivalente a /tikz/my key/.code={\pgfkeys{/tikz/my key/.cd,#1}}.

Tentei configurar /tikz/my keycom /tikz/my key/.is family, mas isso afeta todas as opções a seguir no nó, por exemplo, ele tenta reativar debug my keyem /tikz/my key/debug my keyvez de apenas /tikz/debug my key.

Existe um manipulador de chaves semelhante ao .is familyque define a chave para aceitar uma lista de subchaves, mas não se aplica .cdàs outras opções?

\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}

Responder1

Você pode usar \pgfkeys dentro do código (se eu entendi sua pergunta corretamente - não sei bem por que você deseja/precisa do .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}

A propósito: você pode procurar em pgfmodulesdecoration.code.tex para descobrir que isso também acontece lá:

 /pgf/decoration/.code={\pgfkeys{/pgf/decoration/.cd,#1}},

informação relacionada