我想在符合条件的网格上绘制一些点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
(来自xfp
LaTeX3 版):
%...
\usepackage{xfp}
% ...
\ifnum\fpeval{\x^2+\y^2}<10
% or
\ifnum\fpeval{abs(\x-\y)}<3
%...