分支语句问题(TikZ)

分支语句问题(TikZ)

我正在使用分支语句,tikzpictureZ 和 PGF 手册(第 634 页)。以下是 MWE:

\documentclass{article}

\usepackage[letterpaper,textwidth=8.5in,textheight=11in]{geometry}
\usepackage{tikz}
\usetikzlibrary{math}

\begin{document}
\pagestyle{empty}
\begin{figure}
\centering
\begin{tikzpicture}

\tikzmath{
\a = 2;
if \a <= 5 then {
\draw (0,0) rectangle (\a,\a);
} else {
\draw (0,0) parabola (\a,\a);
};
}

\end{tikzpicture}
\end{figure}
\end{document}

然而,它不起作用...我做错了什么?

我收到以下错误:

enter image description here

答案1

我想你想要这样的东西,尽管我对这个库不太熟悉:

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{math}

\begin{document}
  \begin{tikzpicture}
    \tikzmath{
      \a = 2;
      if \a <= 5 then { let \b = rectangle; } else { let \b = parabola; };
    }
    \draw (0,0) \b (\a,\a);
  \end{tikzpicture}
\end{document}

或者,如果您使用 保护它,则可以在解析器内进行绘图{...};

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{math}

\begin{document}
  \begin{tikzpicture}
    \tikzmath{
      \a = 6;
      if \a <= 5 then { let \b = rectangle; } else { let \b = parabola; };
      { \draw (0,0) \b (\a,\a); };
    }
  \end{tikzpicture}
\end{document}

或者您可以使用类似的保护在条件内进行绘图:

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{math}

\begin{document}
  \begin{tikzpicture}
    \tikzmath{
      \a = 1;
      if \a <= 5 then { {\draw (0,0) rectangle (\a,\a);}; } else { {\draw (0,0) parabola (\a,\a);}; };
    }
  \end{tikzpicture}
\end{document}

答案2

正如 cfr 指出的那样,在解析器之外执行代码的预期方式tikzmath是将其放在括号内(后跟分号)。但条件周围不需要括号:

\tikzmath{
  \a = 2;
  if \a <= 5 then {
    { \draw (0,0) rectangle (\a,\a); };
  }   else {
    { \draw (0,0) parabola (\a,\a); };
  };
}

相关内容