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
in, tikzmath
и это также относится к файлам TeX, которые раньше компилировались без проблем. Текущая версия TikZ (MiKTeX) сломана?
Я использую MikTeX 2.9 на Windows 10, пакеты были обновлены несколько минут назад, на всякий случай.
ОБНОВЛЯТЬ:Чтобы было понятнее — даже этот простой 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}
к вашей преамбуле.