正如我在其他一些问题和我的个人资料页面上所述,我正在编写一个problem-solution
包(我知道,其中一些已经存在)
我已经使用了xkeyval
包和密钥,但是现在,我想为其他包environment
或command
来自不同包(不是我开发的)的包装器命令,该包本身xkeyval
也使用密钥,属于不同的密钥系列。
\providecommand{\somewrapper}[1][]{%
\setkeys{mykeyfamily}{#1}%
% Some stuff not relevant here, e.g. configuration etc.
\theothercommand[#1]{other content} % Not written by me...
}%
然而,这当然会失败,因为包装器命令参数应该包含特定于的键值\theothercommand
。
可以混合吗?换句话说:如何区分里面应该放哪个键值\theothercommand
以及哪个键与我自己的包代码相连?
为了更清楚地说明:两个系列中的键都具有某个名称没有问题,因为我对命令和/或包键使用了特定的命名方案,因此来自不同包的键名称不会发生冲突。
附录:
我想到的一个可能性是使用两个甚至三个参数的包装器命令,其中第一个参数包含属于键系列的键FamilyA
,第二个参数包含来自的键FamilyB
,但这并不合适,因为我必须在顶层更改一些其他命令,并引入其他可选参数。
答案1
好吧,我找到了混合密钥的解决方案——它在软件包手册中有说明xkeyval
,但是却被隐藏了。
\providecommand{\MyCommand}[1][]{%
\setkeys{FamilyA,FamilyB}{#1}%
% Other operations
%
%
}% End of \providecommand
这就要求人们知道其他包的关键系列是如何命名的。
现在的坏消息是:由于其他包使用pgf
密钥(不知道“系列”),这种混合密钥的方式是不好的。