如何用ifnum计算foreach中的变量?

如何用ifnum计算foreach中的变量?

我想在符合条件的网格上绘制一些点x-y>1,并编写以下代码:

\documentclass[tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \foreach\x in{1,...,10}{
    \foreach\y in{1,...,10}{
    \ifnum \x-\y>1
        \shade[ball color=red] (\x,\y) circle (0.2cm);
    \else
        \relax
    \fi
    }
  }
\end{tikzpicture}
\end{docume

上述代码无法编译成功。

答案1

您需要先评估数值计算 ( \numexpr),然后才能将其作为条件进行测试 ( \ifnum)。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \foreach\x in{1,...,10}{
    \foreach\y in{1,...,10}{
    \ifnum\numexpr\x-\y>1
      \shade[ball color=red] (\x,\y) circle (0.2cm);
    \fi
    }
  }
\end{tikzpicture}

\end{document}

标记>停止 的求值\numexpr\x-\y,将求值结果留在输入流中以供对照1


对于更复杂的评估,使用\fpeval(来自xfpLaTeX3 版):

%...
\usepackage{xfp}
% ...
\ifnum\fpeval{\x^2+\y^2}<10
% or
\ifnum\fpeval{abs(\x-\y)}<3
%...

相关内容