如何在 latex 和 tikz 中使用 mod 操作

如何在 latex 和 tikz 中使用 mod 操作

我需要类似的东西

\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}

在此处输入图片描述

我希望我已经正确理解了这个目标。

相关内容