我需要一些东西
\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}