Keyvalue-command:添加布尔键选项

Keyvalue-command:添加布尔键选项

我有一个布尔键map,可以生成 TikZ 内容(右列),例如

在此处输入图片描述

我想再补充一下钥匙-选项就像map=red
我可以访问 TikZ 选项,在 的意义上\node[text=<color>]
在示例中,第一个输出应显示为红色。
(第二个示例在这里没有变化,因为没有使用 map 选项。)

做到这一点的最好方法是什么?

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

\newcommand\TheSymbol{%
\begin{tikzpicture}[]
\node[]  {S0};
\end{tikzpicture}}

\newcommand\TheMap{\foreach \n in {1,2,3}{%
\begin{tikzpicture}[]
\node[] {S0(\n)};
\end{tikzpicture}}}


\ekvdefinekeys{cmd}{
  ,boolTF map = \mymapTF
}
\newcommand\cmd[1][]{%
    \begingroup
    \ekvset{cmd}{#1}%
    \mymapTF{\TheMap}{\TheSymbol}%
    \endgroup
}


% For the presentation: 
\usepackage[most]{tcolorbox}
\tcbset{colback=white, colframe=white, fontupper=\ttfamily,
enhanced, borderline south={1pt}{-2pt}{black}, listing side text}
\begin{document}
\begin{tcblisting}{}
\cmd[map]         
\end{tcblisting}

\begin{tcblisting}{}
\cmd[]        
\end{tcblisting}
\end{document}

答案1

从 0.4 版(于 2020-07-04 发布)开始,expkv-def可以为未知选择定义一个动作(由于键在内部与具有选择和适当动作的键boolTF相同,因此我们可以使用前缀)。这可用于定义一个动作,我们可以使用该动作来设置的键(我通过定义一个宏来代替 来实现此目的)。choicetruefalseunknown-choicemaptextpgf\mymap@node\node

\documentclass{article}
\usepackage{tikz}
\usepackage{expkv}
\usepackage{expkv-def}[2020-07-04]

\newcommand\TheSymbol{%
\begin{tikzpicture}[]
\node[]  {S0};
\end{tikzpicture}}

\makeatletter
\newcommand\TheMap{\foreach \n in {1,2,3}{%
\begin{tikzpicture}[]
\mymap@node {S0(\n)};
\end{tikzpicture}}}

\ekvdefinekeys{cmd}{
   boolTF map = \mymapTF
  ,unknown-choice map=\let\mymapTF\@firstoftwo\def\mymap@node{\node[{text=#1}]}
}
\newcommand*\mymap@node{\node}
\makeatother
\newcommand\cmd[1][]{%
    \begingroup
    \ekvset{cmd}{#1}%
    \mymapTF{\TheMap}{\TheSymbol}%
    \endgroup
}


% For the presentation: 
\usepackage[most]{tcolorbox}
\tcbset{colback=white, colframe=white, fontupper=\ttfamily,
enhanced, borderline south={1pt}{-2pt}{black}, listing side text}
\begin{document}
\begin{tcblisting}{}
\cmd[map]\par
\cmd[map=true]\par
\cmd[map=green]\par
\cmd[map=red]\par
\end{tcblisting}

\begin{tcblisting}{}
\cmd[]\par
\cmd[map=false]\par
\end{tcblisting}
\end{document}

在此处输入图片描述

相关内容