keyreader:如何将选择键值保存到宏

keyreader:如何将选择键值保存到宏

为什么一个choice键不能将它的值作为键保存到宏中cmd,而是像相应的键一样xkeyval \define@choicekey保存?

在下面的示例中,我必须my@key使用回调手动定义。

\documentclass{article}

\usepackage{keyreader}

\krddefinekeys*{CL}[my]{%
   choice/keya/one/
      one,two,three/\def\mykeya{#1};
   choice/keyb/aa/
      aa,bb,cc,dd;
}

\begin{document}
\mykeya% works
and
%\mykeyb% doesn't work
\end{document}

可以xkeyval定义一个bin保存该值的宏:

\define@choicekey*{CL}{keyc}[\mybin]{alpha,beta,gamma,epsilon}[alpha]{}

后者\mybin的价值为keyc

答案1

命令\define@choicekey键值\<macro-prefix>@<key-name>包不会产生用于保存用户输入的宏。\krddefinekeys命令键盘阅读器包装用途键值\define@choicekey背景中。

您请求的功能仅在龙腾包。请尝试以下操作:

\documentclass{article}
\usepackage{ltxkeys}
\makeatletter
\ltxkeys@declarekeys*{fam}[my]{%
% choice/<key name>.{<alternate values>}/<default>/<callback>;
  choice/keya.{one,two,three}/one;
  choice/keyb.{aa,bb,cc,dd}/aa;
% cmd/<key name>/<default>/<callback>;
  cmd/keyc/cc/\def\xc##1{##1xx#1};
}
\makeatother

\begin{document}
\mykeya, \mykeyb\space and \mykeyc
\end{document}

相关内容