TikZ数学库语法问题

TikZ数学库语法问题

我正在使用非常棒的 TikZ 数学库。

然而,我无法理解这一点(参见 MWE)。

我遗漏了文档中的一些内容(https://tikz.dev/library-math)?

\documentclass[tikz]{standalone}

\usetikzlibrary{math}

\begin{document}
\begin{tikzpicture}

\tikzmath{ 
\a = 2;
\b = 1;
}
\draw[step=1cm,gray,very thin] (0,0) grid (3,2); % just for orientation    

\draw (\a, \b) circle (2pt);               % no problem here, so \a and \b are fine

\draw [->] (2, 0) arc (0:360:2 and 1);     % no problem here
%\draw [->] (2, 0) arc (0:360:\a and \b);  % gives me an error after removing comment - why?

\end{tikzpicture}
\end{document}

答案1

您可能没有错过手册中的任何内容,但您应该注意到 TiZ 解析器需要理解许多不同的语法用法,因此通常需要通过将宏或即时计算括在花括号中来帮助它。在这种情况下,宏后面的空格会被\a吞噬(因此严格来说,这不是解析器的问题,但将宏括在花括号中仍然会有所帮助):

在这种情况下,以下方法可以解决问题:

\draw [->] (2, 0) arc (0:360:{\a} and {\b});

但是,请注意,该函数有一个较新的语法arc,它还允许您省略花括号。上面的代码可以写成:

\draw [->] (2, 0) arc[start angle=0, end angle=360, x radius=\a, y radius=\b];

相关内容