поведение расширения в 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}

\pgf@marshal( во всей упаковке 232 шт .)

Связанный контент