我正在尝试开发部分代码,条件是如果函数的某些变量输入等于零,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}