我希望能够将 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 to
pgf 手册在第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}
产生“红色”。