使用 PGF 密钥为密钥设置别名的最佳方法是什么

使用 PGF 密钥为密钥设置别名的最佳方法是什么

我希望能够将 PGF 密钥设置为其他名称,这可能吗?如果可以,我该怎么做?

例如如果我将键定义为:

 \pgfkeys{path/
    color/.store in=\color@cx
  }

我希望能够将“color”改为“somecolor”,是否也可以为已定义的键设置别名.style

答案1

我通常采用的方法是使用.code\pgfkeysalso在别名目标上执行的处理程序:

\pgfkeys{other path/somecolor/.code={\pgfkeysalso{path/color=#1}}

但是,正如我从 Christian Feuersänger 那里了解到的,这正是.style中的处理程序的定义方式pgfkeys。因此,更简洁的解决方案是:

\pgfkeys{/other path/somecolor/.style={path/color=#1}}

答案2

我扩展了Daniel的想法,用handlers定义了一个处理程序,叫做.alias.代码如下:

\documentclass{article}
\usepackage{pgfkeys}
\begin{document}
\makeatletter
% alias key
\pgfkeys{%
   /handlers/.alias/.code=
      \pgfkeysedef\pgfkeyscurrentpath{%
                  \noexpand\pgfkeysalso{\pgfkeysdefaultpath#1={##1}}},%
      /handlers/.alias/.value required,%
      /handlers/.blank/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@blank}{#1},%
      /handlers/.blank/.default=\pgfkeysnovalue,%
}

\pgfkeys{test/.store in=\storethis,
         tes/.alias=test,}

\pgfkeys{tes=123}
\storethis 

\pgfkeys{test=this is a test}
\storethis
\end{document}

答案3

.forward topgf 手册在第891页。

\documentclass{article}
\usepackage{pgfkeys}
\begin{document}
    \makeatletter
    \pgfkeys{
        path/color/.store in=\color@cx,
        path/somecolor/.forward to=/path/color
    }
    \pgfkeys{path/somecolor=red}
    \color@cx
\end{document}

产生“红色”。

相关内容