\num 内的 \luaexec 导致错误

\num 内的 \luaexec 导致错误

对我来说,LuaTeX 的一个吸引人的功能是能够直接在文档中有效地执行计算。现在假设我想要一个命令\proc来执行计算,然后使用\numfrom格式化数字的命令siunitx。我尝试了下面的代码,它导致痛苦的死亡,充满了晦涩难懂的错误消息。用 替换\luaexec可以\directlua,但我觉得如果可能的话最好远离那个原始命令。我尝试使用\expandafters 但没有成功。我该如何解决这个问题?

\documentclass{article}

\usepackage{luacode,siunitx}

\newcommand\proc[1]{%
    \num{%
        \luaexec{tex.sprint(#1)}%
    }%
}


\begin{document}

\proc{2+3}

\end{document}

答案1

这里需要一个可扩展的命令。LuaTeX\directlua为 lua 提供了可扩展的访问,因此:

在此处输入图片描述

\documentclass{article}

\usepackage{siunitx}

\newcommand\proc[1]{%
    \num{%
        \directlua{tex.sprint(#1)}%
    }%
}


\begin{document}

\proc{2+3}

\end{document}

相关内容