假设我在 expl3 块中有一个浮点值。我可以在 expl3 块外使用它的十进制表示吗?
这不起作用:
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\fp_new:N \val
\fp_set:Nn \val{6.5}
\fp_set:Nn \val \fp_to_decimal:N \val
\ExplSyntaxOff
\val
\end{document}
答案1
线路
\fp_set:Nn \val \fp_to_decimal:N \val
是错误代码。如果我们删除它并询问 TeX \show\val
,我们会得到
> \val=macro:
->\s__fp \__fp_chk:w 10{1}{6500}{0000}{0000}{0000};.
这告诉我们,\val
在文档中,它可能无法单独使用,因为在某种意义上,它包含浮点变量的抽象表示。你必须说
\fp_use:N \val
以便在输入流中传递浮点值的表示。 说法\fp_to_decimal:N \val
是一样的,如文档中所述。
目前,没有浮点变量的官方文档接口,因此您必须定义自己的。例如
\ExplSyntaxOn
\NewDocumentCommand{\newfpvar}{m}{\fp_new:N #1}
\NewDocumentCommand{\setfpvar}{mm}{\fp_set:Nn #1 { #2 }}
\NewDocumentCommand{\getfpvar}{m}{\fp_use:N #1}
\ExplSyntaxOff
所以你可以说
\newfpvar{\val}
\setfpvar{\val}{6.5+3.01} % any floating point expression
\getfpvar{\val}
不要忘记添加\usepackage{xparse}
到你的序言中。