在某些情况下,我会创建一些(大量)此类按钮
\def\myshow{1}% 1 'yes', '0' no
进而\ifnum\myshow=1 .... \fi
但我不得不说,这不太正确。
那么:创建这样的按钮的正确(且没有问题)方法是什么?也许可以用pgfkeys
?
\documentclass[border=2mm, tikz]{standalone}
\usepackage{tikz}
\begin{document}
\def\myshow{1}% 1 'yes', '0' no
\begin{tikzpicture}[]
\coordinate[label=A](A) at (0,0);
\coordinate[label=right:B](B) at (2,0);
\coordinate[label=C](C) at (2,1);
\ifnum\myshow=1
\draw[red, thick] (A) -- (B) -- (C) --cycle;
\else% nothing
\fi
\end{tikzpicture}
\end{document}
答案1
在任何情况下,您都不应尝试覆盖诸如\show
、之类的命令\meaning
。也没有必要这样做。除了/.is if
可以与 组合的键之外gernot 的评论有/.is choice
密钥处理程序。这是另一种避免命名空间问题并与 配合使用的方法\ifnum
。底层tikz
工作原理也有点像这样。
\documentclass[border=2mm, tikz]{standalone}
\usepackage{tikz}
\begin{document}
\pgfkeys{/cis/.cd,show/.initial=1}
\begin{tikzpicture}[]
\coordinate[label=A](A) at (0,0);
\coordinate[label=right:B](B) at (2,0);
\coordinate[label=C](C) at (2,1);
\ifnum\numexpr\pgfkeysvalueof{/cis/show}=1
\draw[red, thick] (A) -- (B) -- (C) --cycle;
\else% nothing
\fi
\end{tikzpicture}
\begin{tikzpicture}[/cis/show=0]
\coordinate[label=A](A) at (0,0);
\coordinate[label=right:B](B) at (2,0);
\coordinate[label=C](C) at (2,1);
\ifnum\numexpr\pgfkeysvalueof{/cis/show}=1
\draw[red, thick] (A) -- (B) -- (C) --cycle;
\else% nothing
\fi
\end{tikzpicture}
\end{document}
至于/.is if
。
\documentclass[border=2mm, tikz]{standalone}
\usepackage{tikz}
\begin{document}
\newif\ifcisshow
\tikzset{cis/.cd,show/.is if=cisshow,show/.default=true,show=true}
\begin{tikzpicture}[]
\coordinate[label=A](A) at (0,0);
\coordinate[label=right:B](B) at (2,0);
\coordinate[label=C](C) at (2,1);
\ifcisshow
\draw[red, thick] (A) -- (B) -- (C) --cycle;
\else% nothing
\fi
\end{tikzpicture}
\begin{tikzpicture}[cis/show=false]
\coordinate[label=A](A) at (0,0);
\coordinate[label=right:B](B) at (2,0);
\coordinate[label=C](C) at (2,1);
\ifcisshow
\draw[red, thick] (A) -- (B) -- (C) --cycle;
\else% nothing
\fi
\end{tikzpicture}
\end{document}
正如前面提到的,/.is choice
这是另一种选择,但如果选项不仅仅是布尔值,这才最有意义。