我正在使用分支语句,tikzpicture
如钛钾Z 和 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}
然而,它不起作用...我做错了什么?
我收到以下错误:
答案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); };
};
}