LaTeX 3 中是否有 \edef?

LaTeX 3 中是否有 \edef?

是否有 (在 LaTeX 3 中) 的版本\DeclareDocumentCommand执行效果类似\edef?即在定义时而不是调用宏时对参数进行求值?

例如

\ExplSyntaxOn
\fp_zero_new:N {\fpX}   
\fp_set:Nn {\fpX} {6}   
\DeclareDocumentCommand { \dX } {} {\fp_to_decimal:N{\fpX}}

\fp_set:Nn{\fpX} {12}

\dX
\ExplSyntaxOff

印刷品 12

\ExplSyntaxOn
\fp_zero_new:N {\fpX}   
\fp_set:Nn {\fpX} {6}   
\edef\dX{\fp_to_decimal:N{\fpX}}

\fp_set:Nn{\fpX} {12}

\dX
\ExplSyntaxOff

印刷品 6

我想将 \dX 扩展为 6

答案1

用于创建新文档的命令系列xparse实际上并非用于此类用途。这可以从您的示例中看出,其中\DeclareDocumentCommand混杂了expl3代码。

简短的回答是,expl3的版本\edef\cs_set:Npx\tl_set:Nx取决于您是否创建带参数的宏或仅仅是一个标记列表。

在您的示例中,不要写

\edef\dX{\fp_to_decimal:N{\fpX}}

你应该使用

\tl_set:Nx \dX { \fp_to_decimal:N { \fpX } }

相关内容