tikz 中的算术运算

tikz 中的算术运算

考虑以下 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

相关内容