假设我定义了一些特殊节点,这些节点使用嵌套相当深的几个 pgfkey。我想.cd
在定义样式时使用命令;但随后我很难从目录中“返回”。让我们看这个例子:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{dir/two/.initial=1, dir/one/.initial=1}
\tikzset{my/.style={circle, draw, dir/.cd, one=0}}
\tikzset{my2/.style={circle, draw, dir/.cd, one=0, /tikz/.cd}}
\begin{tikzpicture}[
]
\node[my] at(0,0) {A};
\node[my, color=blue] at (1,0) {B};
\node[my2, color=blue] at (2,0) {C};
\end{tikzpicture}
\end{document}
第二个node
失败
keycdup.tex|10 error| Package pgfkeys Error: I do not know the key '/tikz/dir/color', to which you passed 'blue', and I am going to ignore it. Perhaps you misspelled it.
现在,这种风格my2
解决了这个问题,明确.cd
指出了tikz
键的根源……但我觉得它一点也不优雅。
有没有办法在.style
定义中“限定范围”.cd
命令?
答案1
您可以定义一个indir
如下所示的键,它使用\pgfqkeys
似乎是为此而制作的:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{dir/two/.initial=1,
dir/one/.initial=1,indir/.code=\pgfqkeys{/tikz/dir}{#1}}
\tikzset{my/.style={circle, draw, indir={one=0}}}
\tikzset{my2/.style={circle, draw, dir/.cd, one=0, /tikz/.cd}}
\begin{tikzpicture}[
]
\node[my] at(0,0) {A};
\node[my, color=blue] at (1,0) {B};
\node[my2, color=blue] at (2,0) {C};
\end{tikzpicture}
\end{document}