expkv:根据关键字不同的输出

expkv:根据关键字不同的输出

我需要一些东西

\cmd[map]---> “S1 S2 S3” (输出)

\cmd---> “S0” (输出) 或等价地 \cmd[map=false]---> “S0” (输出)

这是钥匙吗, boolTF?我该怎么办?

错误的 MWE:

\documentclass{article}
\usepackage{xcolor}
\usepackage{expkv}
\usepackage{expkv-def}

\ekvdefinekeys{cmd}{
  ,data color = \mycolor
   % .............. ?????
}
\newcommand\cmd[1][]{\begingroup
\ekvset{cmd}{#1}%
\mycolor\color{}%
S1 S2 S3
\endgroup}

\begin{document}
\cmd[color=red]
\end{document}

答案1

如果我正确理解了你的问题,你想要创建一个宏,S1 S2 S3如果map使用了该键(和或设置为 true),则该宏将扩展为,否则S0

最简单的方法是使用一个boolTF只接受值true或 的键false,如果省略了一个值,则使用true。以下 MWE 显示了如何使用它:

\documentclass{article}
\usepackage{xcolor}
\usepackage{expkv}
\usepackage{expkv-def}

\ekvdefinekeys{cmd}{
  ,data color = \mycolor
  ,boolTF map = \mymapTF
}
\newcommand\cmd[1][]
  {%
    \begingroup
    \ekvset{cmd}{#1}%
    \mycolor\color{}%
    \mymapTF{S1 S2 S3}{S0}%
    \endgroup
  }

\begin{document}
\cmd[color=red]

\cmd[map]

\cmd[color=red,map]

\cmd[color=red,map=true]

\cmd[color=red,map=false]
\end{document}

相关内容