\pgfkeys{/pgf/fpu}
\pgfmathsetlengthmacro\x{5^2}
\show\x -> 25.0pt % OK, thanks.
\pgfmathparse{5cm^2}
]
以下中的意思是什么?\show\pgfmathresult % ->1Y2.0238983e4]. \pgfkeys{/pgf/fpu/output format=sci}
给出了预期的格式,但是神秘的是什么
]
?为什么会失败?单位不允许吗
{<expr>}
?手册上说\pgfmathsetlengthmacro
“定义<macro>
为以点为单位的值<expression>
。”\pgfmathsetlengthmacro\y{5cm^2} % ! Illegal unit. \pgfmathsetlengthmacro\y{5^2cm} % ! Illegal unit. \show\y
编辑
这是一个简单的例子:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\pgfkeys{/pgf/fpu}
\pgfkeys{/pgf/fpu/output format=sci}
\pgfmathparse{5cm^2}
%\show\pgfmathresult % -> 2.0238983e4.
% Both of these give error:
\pgfmathsetlengthmacro\x{5mm^2}
\pgfmathsetlengthmacro\x{5^2}
\pgfkeys{/pgf/fpu=false}
\end{document}
Error msg:
! Illegal unit of measure (pt inserted).
<to be read again>
e
l.10 \pgfmathsetlengthmacro\x{5mm^2}
答案1
是1Y2.0238983e4]
数字的内部表示。使用 时,fpu
您必须明确指定输出格式或使用\pgfmathfloattofixed
。默认格式为float
(使用Y
和]
),\pgfmathsetlengthmacro
不会被fpu
库更改,因此长度不是具有 格式的有效 TeX 长度float
。示例:
\documentclass{article}
\usepackage{pgf}
\usepgflibrary{fpu}
\begingroup
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}
\pgfmathsetlengthmacro\x{5^2}
\typeout{\x}
\endgroup
\begingroup
\pgfkeys{/pgf/fpu}
\pgfmathparse{5^2}
\pgfmathfloattofixed{\pgfmathresult}
\edef\x{\pgfmathresult pt}
\typeout{\x}
\endgroup
\begingroup
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}
\pgfmathparse{5cm^2}
\typeout{\pgfmathresult}
\endgroup
\begin{document}
\end{document}
结果:
25.0pt
25.000000000pt
20238.983000000000
更多详情36 浮点单元库。