comportamento de expansão em tikz/pgf

comportamento de expansão em tikz/pgf

Por muito tempo, pensei que entendia como o LaTeX expande os comandos. Mas, aparentemente, eu não.

\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}

Ao tentar compilar o código acima, recebo o seguinte erro:

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

Alguém pode me explicar por que ocorre o erro acima e o que pode ser feito para contornar esse problema?

Responder1

Esta questão é tão onipresente que a PGF desenvolve uma maneira canônica de contorná-la.

\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}

(há 232 \pgf@marshalem todo o pacote.)

informação relacionada