我需要类似的东西
\ifnum \j mod 2 = 0
休息但不知道如何做到这一点
在第 22 行。
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{0pt}%
\newcommand{\grade}{
\foreach \k in {0,...,9}{
\draw[dashed] (\k,0) -- ++(0,10);
\draw[dashed] (0,\k) -- ++(10,0);
}
}
\begin{document}
\foreach \j in {1,...,9}{
\foreach \i in {1,...,9}{
\begin{tikzpicture}[y=-1cm]
\clip[fill=white] (1,1) rectangle (10,10);
\grade
%animation
\ifnum \j < 5
\fill[blue] (\i,\j) rectangle ++(1,1);
\else
\fill[blue] (\j,\i) rectangle ++(1,1);
\fi
\end{tikzpicture}
}
}
\end{document}
答案1
正如 egreg 提到的,已经有可用的原语。此外,CVS 版本的 TikZ/PGF 2.1 将带来iseven,isodd,isprime
函数。但是,您也可以使用稍微多余的ifthenelse
函数,如下所示:
\documentclass{article}
\usepackage{tikz}
\newcommand{\grade}{
\foreach \k in {0,...,9}{
\draw[dashed] (\k,0) -- ++(0,10) (0,\k) -- ++(10,0);
}
}
\begin{document}
\begin{tikzpicture}[y=-1cm]\grade
\foreach \j in {1,...,9}{
\foreach \i in {1,...,9}{
\pgfmathparse{Mod(\j,2)==0?1:0}
\ifnum\pgfmathresult>0
\fill[blue] (\i,\j) rectangle ++(1,1);
\else
\fill[blue] (\j,\i) rectangle ++(1,1);
\fi
}
}
\end{tikzpicture}
\end{document}
我希望我已经正确理解了这个目标。