MWE(从 TikZ 手册复制):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math}
\begin{document}
\begin{tikzpicture}
\tikzmath{
int \x;
for \k in {0,10,...,350}{
if \k>260 then { let \c = orange; } else {
if \k>170 then { let \c = blue; } else {
if \k>80 then { let \c = red; } else {
let \c = green; }; }; };
{
\path [fill=\c!50, draw=\c] (\k:0.5cm) -- (\k:1cm) --
(\k+5:1cm) -- (\k+5:0.5cm) -- cycle;
};
};
}
\end{tikzpicture}
\end{document}
这给了我以下错误信息:
! Undefined control sequence.
\tikz@math@if@@doifelse ...gfmathfloatparseactive
\pgfmathfloattofixed {\pgf...
l.19 }
if
我对使用的其他代码也遇到了同样的问题tikzmath
,这也适用于以前编译时没有问题的 TeX 文件。当前 (MiKTeX) 版本的 TikZ 是否损坏了?
我在 Windows 10 上使用 MikTeX 2.9,为了以防万一,软件包几分钟前已经更新了。
更新:只是为了使这一点更清楚 - 即使这个简单的tikzmath
代码也会出现相同的错误消息。
\tikzmath{
\x = 42;
if \x == 42 then {
{\fill (0,0) circle (1cm);};
};
}
答案1
这是 PGF/TikZ 中的一个错误,应该在错误跟踪器上报告。我帮你报告了,还修复了错误。解决方法也在工单中提到了https://sourceforge.net/p/pgf/bugs/517/
如果你不确定你观察到的是否是错误,只需尝试手册中的示例。如果手册中的示例失败,则肯定是错误。
解决方法
只需添加
\usetikzlibrary{fpu}
你的序言。