考虑以下 MWE
\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}
\path[black] (0,-1) node{$N=0$} (-1,0) node{$g=0$};
\path[black] (1,-1) node{$\cdots$} (-1,1) node{$\vdots$};
\path[black] (-1,2) node{$b_q$};
\foreach \i in {0,...,5}
\foreach \j in {0,...,5}{
\draw (\i,\j) circle(3pt);
\ifnum \j > 3+\i
\fill[blue] (\i,\j) circle(2pt);
\fi
}
\end{tikzpicture}
\end{document}
在这种情况下,蓝点是 y 坐标大于 3 的点。当我更改
\ifnum \j > 3+\i
到
\ifnum \j > \i+3
蓝点变成 y 坐标大于相应 x 坐标的点。
在这两种情况下,我都无法得到我想要的结果,即蓝点是 y 坐标大于相应 x 坐标的点加3.
我曾尝试\i+3
用{}
、用()
甚至用来包含该表达式{()}
,但都不起作用。
答案1
您正在将 TeX 行为与 TikZ 混合在一起。\ifnum
是 TeX 原语并且不理解其参数中的加法。
使用
\ifnum\j>\numexpr3+\i\relax
调用显式算术或使用 Tikz 自己的算术并通过等\pgfmathparse{int(\j-\i-3)}
比较结果。\ifnum\pgfmathresult>0