Lualatex 函数产生尾随字符

Lualatex 函数产生尾随字符

此功能在生产系统中运行,我没有发现任何变化(MikTeX 进行了一些包更新,可能会产生影响)。

一个非常简化的 MWE 是

\documentclass{article}

\directlua{
    function underscore(s)                                      
        s = tostring(s+2080)      
        tex.print(s)                                           
    end                                                    
}

\DeclareRobustCommand{\Binl}[1]{\directlua{underscore([[#1]])}}% 

\begin{document}

Use M\Binl{1} or M\Binl{2}

\end{document}  

我以前会得到具有正确下标的 M_1 和 M_2,但现在会生成正确的 unicode 字符 U+2081 和 U+2082,但会在输出中看到结尾的“.0”。注意:在将字符串传回之前,我省略了在 s 前面添加“\char\””。

输出 :

Use M2081.0 or M2082.0

答案1

这是由于从 lua 5.2 更改为 lua 5.3 造成的。

您可以强制该数字为整数,例如math.floor

\documentclass{article}

\directlua{
    function underscore(s)
        s = tostring(math.floor(s+2080))
        tex.print(s)
    end
}

\DeclareRobustCommand{\Binl}[1]{\directlua{underscore([[#1]])}}%

\begin{document}

Use M\Binl{1} or M\Binl{2}

\end{document}  

在此处输入图片描述

答案2

s = tostring(math.floor(s+2080))      

相关内容