tikz/pgf 中的扩展行为

tikz/pgf 中的扩展行为

很长一段时间以来,我以为我理解了 LaTeX 如何扩展命令。但显然我并没有理解。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \edef\r{1 and 2}
  \draw (0,0) ellipse (2 and 4); % this works
  \draw (0,0) ellipse (\r); % this causes the error
\end{tikzpicture}
\end{document}

当我尝试编译上述代码时,出现以下错误:

! Package PGF Math Error: Unknown operator `a' or `an' (in '1 and 2').

有人能向我解释为什么会发生上述错误吗?以及如何解决这个问题?

答案1

这个问题无处不在,因此 PGF 实际上开发了一种标准的方法来绕过它。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \edef\r{1 and 2}
  \draw (0,0) ellipse (2 and 4); % this works
  \edef\pgfmarshal{\noexpand\draw (0,0) ellipse (\r);}
  \pgfmarshal
\end{tikzpicture}
\end{document}

(全包共有 232 个\pgf@marshal

相关内容