TikZ 中使用 \newcommand 和 \pgfmathsetmacro 的区别 \coordinate

TikZ 中使用 \newcommand 和 \pgfmathsetmacro 的区别 \coordinate

考虑以下代码:

\documentclass{article}
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}
  \newcommand{\MA}{4}
  \pgfmathsetmacro{\MB}{4};
  \coordinate (V11) at (0,0);
  \coordinate (V44) at (4,4);
  \draw[black] (V11) rectangle (V\MA\MA);
 \end{tikzpicture}
\end{document}

这有效。但是将\draw命令更改为:

   \draw[black] (V11) rectangle (V\MB\MB);

产生以下错误:

!包 pgf 错误:没有已知的名为 V4 的形状。

为什么\newcommand在这里工作,什么时候\pgfmathsetmacro失败?

答案1

原因是\pgfmathsetmacro{\MB}{4}(没有;必需的)设置为not\MB的算术结果。因此您得到的是节点表达式。点后的所有内容都被视为节点锚点,即 TikZ 寻找具有锚点的节点,这会导致您得到的错误。(数字锚点也被视为角度(以度为单位),因此将是具有 0 度角度节点的节点。)4.04V4.04.0V404.0V\MBV4

修复此问题\pgfmathtruncatemacro{\MB}{4}将为您提供4

另请参阅相关问题如何在指向节点中心但停止在节点边缘的节点之间绘制线使用 pgf 数学运算引用 tikz 矩阵坐标,这是由的相同行为引起的\pgfmathsetmacro

相关内容