tikz-pgf 和 \pgfmathabs 的问题

tikz-pgf 和 \pgfmathabs 的问题

这是一个后续问题使用 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}

相关内容