TikZ:创建一个按钮来显示或不显示某些内容

TikZ:创建一个按钮来显示或不显示某些内容

在某些情况下,我会创建一些(大量)此类按钮

\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这是另一种选择,但如果选项不仅仅是布尔值,这才最有意义。

相关内容