如何让 Tikz 在某些条件下忽略绘图?

如何让 Tikz 在某些条件下忽略绘图?

我正在尝试开发部分代码,条件是如果函数的某些变量输入等于零,tikz 不会绘制某些部分图纸。这是一个 MWE(尽管 MWE 不起作用,因为我无法处理此处的条件):

\documentclass[border = 2mm]{standalone}
\usepackage{tikz}

\newcommand{\drawin}[1]{\draw[line width=\ifnum#1=0 0\fi] (0,0) -- (#1,0) -- (#1,#1) -- (0,#1) -- (0,0);}

\begin{document}

\begin{tikzpicture}

\drawin{5}
\drawin{3}

\end{tikzpicture}

\end{document}

\drawin在上面的代码中,如果等于零,我希望 Tikz 忽略绘图函数#1。请注意,我不想将线宽的值设置为零,只是为了不显示绘图。我希望​​代码本身忽略绘图。

答案1

我认为您正在寻找:

\newcommand{\drawin}[1]{%
\ifnum#1=0
\else
\draw (0,0) -- (#1,0) -- (#1,#1) -- (0,#1) -- (0,0);
\fi
}

答案2

这是一个也可以使用非整数参数的版本。还有一个使用rectangle路径构造的第二个较短的版本。

\documentclass[border = 2mm]{standalone}
\usepackage{tikz}

\newcommand{\drawin}[1]{%
\pgfmathtruncatemacro{\itest}{ifthenelse(#1==0,0,1)}%
\ifnum\itest=1
\draw (0,0) -- (#1,0) -- (#1,#1) -- (0,#1) -- (0,0);
\fi}

\begin{document}

\begin{tikzpicture}

\drawin{5}
\drawin{3}
\drawin{2.5}
\drawin{0}

\end{tikzpicture}

\renewcommand{\drawin}[1]{%
\pgfmathtruncatemacro{\itest}{ifthenelse(#1==0,0,1)}%
\ifnum\itest=1
\draw (0,0) rectangle (#1,#1);
\fi}
\begin{tikzpicture}

\drawin{5}
\drawin{3}
\drawin{2.5}
\drawin{0}

\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容