我有一个布尔键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
相同,因此我们可以使用前缀)。这可用于定义一个动作,我们可以使用该动作来设置的键(我通过定义一个宏来代替 来实现此目的)。choice
true
false
unknown-choice
map
text
pgf
\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}