xkeyval
提供\DeclareOptionX
有效地定义了一个键\define@key
,但它可以用作包选项。
我怎么能够\DeclareOptionX
表现出这样的行为\define@choicekey
或\define@boolkey
会怎样?
我已经完成了以下操作,但并不理想。
\documentclass{article}
\usepackage{xkeyval}
\newcounter{testcounter}
\usepackage{filecontents}
\begin{filecontents}{testpackage.sty}
\define@boolkey{testpackage}{ffoo}{}
\DeclareOptionX{foo}{\setkeys{testpackage}{ffoo=#1}}
\ProcessOptionsX
\ifKV@testpackage@ffoo
\def\foo{Foo}
\else
\def\foo{Fail}
\fi
\end{filecontents}
\usepackage[foo=true]{testpackage}
\begin{document}
\foo
\end{document}
这不是很好,因为错误并不涉及它所针对的键应该指用户设置的密钥。
是否存在一些我所忽略的明显方法?
答案1
您不必使用\DeclareOptionX
来设置选项xkeyval
。与任何其他 LaTeX 的 keyval 包一样,任何设置为键的内容都可以作为相应系列的选项。因此,您可以直接使用\define@choicekey
或:\define@boolkey
\define@choicekey*{fam}{key}{val1,Val2,VAL3}{You chose: #1}
\ProcessOptionsX<fam>
key
在加载包含代码的包或类时,可将其作为选择键使用。