comportamiento de expansión en tikz/pgf

comportamiento de expansión en tikz/pgf

Durante mucho tiempo pensé que entendía cómo LaTeX expande los comandos. Pero aparentemente no lo hago.

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

Al intentar compilar el código anterior, aparece el siguiente error:

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

¿Alguien puede explicarme por qué ocurre el error anterior y qué se puede hacer para evitar este problema?

Respuesta1

Este problema es tan omnipresente que PGF desarrolla una forma canónica de evitarlo.

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

(Hay 232 \pgf@marshalen todo el paquete).

información relacionada