如何使用 kvoptions 对包中的布尔选项取反

如何使用 kvoptions 对包中的布尔选项取反

在由以下源创建的包中,如果为真,如何将的值更改\optB为— 这样,即使选项已传递给包,写入日志的消息也会变成如图所示(但已传递,如图所示)。true\optA>>> optB is true\optB=falseoptA=true

\RequirePackage{filecontents}
\begin{filecontents}{mypkg.sty}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=MY,prefix=MY@}
\DeclareBoolOption{optA}
\DeclareBoolOption{optB}
\ProcessKeyvalOptions*
% what code here to switch value of optB *if* optA is true?
\ifMY@optB \typeout{>>> optB is true} \else \typeout{>>> optB is false}\fi
\end{filecontents}
%
\documentclass{article}
\usepackage[optA=true,optB=false]{mypkg}
\begin{document}
Hello.
\end{document}

答案1

对于每个布尔选项都会创建三个命令:

  • \if<prefix><option name>它充当 TeX 的条件命令之一,
  • \<prefix><option name>true启用该选项,然后
  • \<prefix><option name>false禁用该选项。

基于这些命令,您可以轻松定义自定义条件来覆盖用户传递的值(调用后\ProcessKeyvalOptions)。对于您来说,它很简单:

\ifMY@optA
    \MY@optBtrue
\fi

相关内容