在 pgfkeys .code 宏中检索密钥的名称

在 pgfkeys .code 宏中检索密钥的名称

只是为了集中注意力,我正在考虑减少circuitikz包装到一个合理的范围内;现在例如 30 多个生成器中的每一个都有一个不同的键来设置宽度,我发现这是不合理的;晶体管等也是如此。

我想警告用户有关更改,所以我正在考虑更改

\tikzset{/one/two/four/.initial=0.5}

进入

\def\deprecationwarning{\PackageWarning{circuitikz}{%
Please look at the manual: the key /one/two/four is deprecated}}

\tikzset{/one/two/four/.code=\deprecationwarning}

.initial=.*}(这很容易做到,只需在某个区域进行搜索和替换即可)。

问题是: 是否可以检索宏中的键的名称\deprecationwarning? 这样我就可以.initial=blah}用固定字符串替换吗?

如果后续\pgfkeysvalueof使用密钥时出现错误,则可以获得加分......

这是 MWE 用来玩弄这个想法...

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\def\deprecationwarning{\PackageWarning{circuitikz}{%
Please look at the manual: the key /one/two/four is deprecated}}

\tikzset{/one/two/three/.initial=0.5}
% \ctikzset{one/two/four/.initial=0.5}
\tikzset{/one/two/four/.code=\deprecationwarning}

\begin{document}
\tikzset{/one/two/three=3}
\tikzset{/one/two/four=4}
\Huge
*\pgfkeysvalueof{/one/two/three}*\quad *\pgfkeysvalueof{/one/two/four}*
\end{document}

答案1

抱歉造成混淆,我认为您正在寻找\pgfkeyscurrentpath

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\def\deprecationwarning{\PackageWarning{circuitikz}{%
Please look at the manual: the key \pgfkeyscurrentpath\space is deprecated}}

\tikzset{/one/two/three/.initial=0.5}
% \ctikzset{one/two/four/.initial=0.5}
\tikzset{/one/two/four/.code=\deprecationwarning}

\begin{document}
\tikzset{/one/two/three=3}
\tikzset{/one/two/four=4}
\Huge
*\pgfkeysvalueof{/one/two/three}*\quad *\pgfkeysvalueof{/one/two/four}*
\end{document}

相关内容