
Im folgenden MWE deklariere ich einen Schlüssel /tikz/my key/radius
und richte ihn /tikz/my key
so 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 directory
Flagge, sodass die Schreibweise /tikz/my key/.is directory
gleichwertig ist mit /tikz/my key/.code={\pgfkeys{/tikz/my key/.cd,#1}}
.
Ich habe versucht, die Einrichtung /tikz/my key
mit durchzuführen /tikz/my key/.is family
, aber dies wirkt sich auf alle folgenden Optionen des Knotens aus. Beispielsweise versucht es, debug my key
auf zu reslove umzuschalten, /tikz/my key/debug my key
anstatt nur auf /tikz/debug my key
.
Gibt es einen ähnlichen Schlüsselhandler, .is family
der den Schlüssel so einstellt, dass er eine Liste von Unterschlüsseln akzeptiert, aber nicht .cd
auf 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}},