在 expl3 块外部使用 expl3 变量十进制表示

在 expl3 块外部使用 expl3 变量十进制表示

假设我在 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}到你的序言中。

相关内容