这是一个后续问题使用 pgfplots 的 foreach 循环中的 pgfmathsetmacro 问题。
简而言之,我也想使用\pgfmathabs
该示例获取数字的绝对值(以\i
作为输入)。但我收到以下错误:
ERROR: Incomplete \iffalse; all text was ignored after line 8.
--- TeX said ---
! Incomplete \iffalse; all text was ignored after line 8.
--- HELP ---
No help available
我尝试编写一个 MWE 来隔离这个问题:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\edef\test{\noexpand \node at (0,0) {\pgfmathabs{-2}};}
\test
\end{tikzpicture}
\end{document}
知道如何修复这个问题吗?
答案1
\pgfmathabs
(以及其他pgfmath
宏,包括通用的\pgfmathparse
)是不可扩展,因此您必须在\edef
定义之前执行计算步骤:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\pgfmathabs{-2}
\edef\test{\noexpand \node at (0,0) {\pgfmathresult};}
\test
\end{tikzpicture}
\end{document}
正如约瑟夫在评论和链接答案中所建议的那样,您可以使用 LaTeX3 FPU 作为替代方案:
\documentclass{article}
\usepackage{tikz}
\usepackage{expl3}
\ExplSyntaxOn
\newcommand{\fpabs}[1]{\fp_eval:n{abs(#1)}}
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
\edef\test{\noexpand \node at (0,0) {\fpabs{-2}};}
\test
\end{tikzpicture}
\end{document}