keya
对于由以下定义的键
\define@key{fam}{keya}[\def\y#1{#1}]{\def\x##1{##1x#1}}
这键值包装用途
\def\KV@def#1#2[#3]#4{%
\begingroup\toks@{#3}%
\xdef\@gtempa{\expandafter\noexpand\csname KV@#1@#2\endcsname{\the\toks@}}%
\endgroup
\expandafter\let\csname KV@#1@#2@default\endcsname\@gtempa
\expandafter\def\csname KV@#1@#2\endcsname##1{#4}%
}
将默认值定义为
\KV@fam@keya@default{\KV@fam@keya{defau}}
这种定义默认值的方式称为标准格式由键值包。诸如幻想VRB不遵守这个标准。键值包说这样的包虐待默认值格式。
我一直想知道为什么键值包选择以这种方式定义键的默认值,而不是像
\def\KV@fam@keya@default{defau}
如果没有 eTeX,这实际上应该是
\newtoks\toksa
\toksa{defau}
\edef\KV@fam@keya@default{\the\toksa}
或类似的东西。
答案1
“为什么”这个问题总是很难回答,尤其是在几十年后。我认为,我试图引入通用键值系统的原始激励示例包括“默认”操作不直接对应于将值传递给键的情况,调用单独的 ..@default 命令名意味着可以定义默认情况来执行任何操作。