Tikzmath,错误:缺少 \endcsname 插入

Tikzmath,错误:缺少 \endcsname 插入

ERROR: Missing \endcsname inserted.我正在尝试使用 tikzmath 在一组点之间画线,但是线上出现了错误\ni=\i+1;。知道为什么吗?

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{math,calc}

\begin{document}

\begin{tikzpicture}
  \tikzmath{
    \n=5;
  }
  \foreach \i in {-\n,...,\n} {
    \foreach \j in {-\n,...,\n} {
      \node[circle,fill,inner sep=1pt] at ($(\i+.3*\j,.5*\j)$) (n-\i-\j) {};
    }
  }
  \foreach \i in {-\n,...,\n-1} {
    \foreach \j in {-\n,...,\n-1} {
      \tikzmath{%
        \ni=\i+1;
        \nj=\j+1;
      };
      \draw[] (n-\i-\j) -- (n-\i-\nj);
    }
  }
\end{tikzpicture}
\end{document}

答案1

由于\tikzmath工作原理,你不能使用与指向数学符号的已定义命令相对应的变量名。

的标准定义\ni\mathchardef\ni="3233(在 中以美化形式给出fontmath.ltx),并且 TeX\mathchardef在寻找标记时将标记视为数字。

例如,如果我使用\propto而不是,就会发生相同的错误\ni

使用其他名称。

根据 percusse 的建议,进行其他修复:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{math,calc}

\begin{document}
\pagestyle{empty}

\begin{tikzpicture}
  \tikzmath{
    \n=5;
  }
  \foreach \i in {-\n,...,\n} {
    \foreach \j in {-\n,...,\n} {
      \node[circle,fill,inner sep=1pt] at ($(\i+.3*\j,.5*\j)$) (\n-\i-\j) {};
    }
  }
  \foreach \i in {-\n,...,\numexpr\n-1} {
    \foreach \j in {-\n,...,\numexpr\n-1} {
      \tikzmath{%
        \nni=\i+1;
        \nj=\j+1;
      };
      \draw[] (\n-\i-\j) -- (\n-\i-\nj);
    }
  }
\end{tikzpicture}
\end{document}

答案2

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{math,calc}
\usepackage{verbatim}

\begin{document}
\pagestyle{empty}

\begin{tikzpicture}
\def\n{5}
  \foreach \i in {-\n,...,\n} {
    \foreach \j in {-\n,...,\n} {
      \node[circle,inner sep=1pt] at ($(\i+.3*\j,.5*\j)$) (n-\i-\j) {};
    }
  }
  \foreach \i [evaluate=\i as \ni using int(\i+1)] in {-\n,...,\numexpr\n-1} {
    \foreach \j [evaluate=\j as \nj using int(\j+1)] in {-\n,...,\numexpr\n-1} {
      \draw (n-\i-\j) -- (n-\ni-\nj);
    }
  }
\end{tikzpicture}
\end{document}

相关内容