So deklarieren Sie ein Tikz-Verzeichnis oder eine Gruppe von Schlüsseln

So deklarieren Sie ein Tikz-Verzeichnis oder eine Gruppe von Schlüsseln

Im folgenden MWE deklariere ich einen Schlüssel /tikz/my key/radiusund richte ihn /tikz/my keyso ein, dass die Verwendung my key={radius=50pt}funktioniert.

Dies ist beispielsweise ein gängiges Muster decorate, decoration={lots of options here}.

Edit: Ich suche eine .is directoryFlagge, sodass die Schreibweise /tikz/my key/.is directorygleichwertig ist mit /tikz/my key/.code={\pgfkeys{/tikz/my key/.cd,#1}}.

Ich habe versucht, die Einrichtung /tikz/my keymit durchzuführen /tikz/my key/.is family, aber dies wirkt sich auf alle folgenden Optionen des Knotens aus. Beispielsweise versucht es, debug my keyauf zu reslove umzuschalten, /tikz/my key/debug my keyanstatt nur auf /tikz/debug my key.

Gibt es einen ähnlichen Schlüsselhandler, .is familyder den Schlüssel so einstellt, dass er eine Liste von Unterschlüsseln akzeptiert, aber nicht .cdauf die anderen Optionen anwendbar ist?

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

Antwort1

Sie können \pgfkeys im Code verwenden (wenn ich Ihre Frage richtig verstanden habe – ich bin nicht ganz sicher, warum Sie das wollen/brauchen .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}

Übrigens: Sie können in pgfmodulesdecoration.code.tex nachsehen, um herauszufinden, dass es dort auch so gemacht wird:

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

verwandte Informationen