lualatex 和 string.format

lualatex 和 string.format

我正在使用 lualatex 进行第一步,但不明白为什么以下代码会导致错误:

\documentclass[ngerman, pagesize]{scrartcl}
\usepackage{luatextra}

\begin{document}

\directlua{
CumCDP_2012 = 1.00E-6
ICumCDP_WIP_2012 = 2.00E-7
ICumCDP_R = 1.00E-7
ICumCDP = ICumCDP_WIP_2012 + ICumCDP_R 
}

\begin{tabular}{cr}
Summe: & \directlua{tex.sprint(ICumCDP)}\\
Summe: & \directlua{tex.sprint(string.format("%e", 51.2))}\\  % <-- error
\end{tabular}

\end{document}

我想要获得 5.12e01。

答案1

使用包luatextra您已经加载了包luacode。此包提供了处理特殊字符的帮助,请参阅其文档。在这种情况下,\luaexec与 一起\%帮助。里面\luaexec \%是一个扩展为无害百分比字符的宏。请记住,%通常是 TeX 中的注释字符。

\documentclass[ngerman, pagesize]{scrartcl}
\usepackage{luatextra}

\begin{document}

\directlua{
CumCDP_2012 = 1.00E-6
ICumCDP_WIP_2012 = 2.00E-7
ICumCDP_R = 1.00E-7
ICumCDP = ICumCDP_WIP_2012 + ICumCDP_R
}

\begin{tabular}{cr}
Summe: & \directlua{tex.sprint(ICumCDP)}\\
Summe: & \luaexec{tex.sprint(string.format("\%e", 51.2))}\\             
\end{tabular}

\end{document}

结果

回答以下\%评论\directlua

我预计在新的 LuTeX 0.74 和 Lua 5.2 中, \%within\directlua将不再起作用。Taco Hoekwater(LuaTeX 的作者)在luatex 邮件列表2013 年 1 月,主题为“关于 lua 5.2 的变化“:

But also, the string parser has changed:

Lua 5.1 understands the following backslash escapes:

    \a \b \f \n \r \t \v \\ \' \"
              (these all have their expected C meanings)
    \<LF>     (insert a line feed into the string)
    \<CR>     (internally converted to <LF>, then inserted)
    \<d[dd]>  (1-3 decimal digits, result range is 0-255)

Lua 5.2 adds:

    \z        (skips following whitespace in input)
    \x<xx>    (2 case-insensitive hex digits)

Anything else following a backslash is an error in Lua 5.2,
but was silently ignored in 5.1.

\%根据LaTeX 中的标准定义( \chardef),字符串将获得带有前导反斜杠的百分号字符。在 Lua 5.1 中,反斜杠将被忽略。然而在 Lua 5.2 中,百分号字符将是“任何其他字符”,现在会导致错误。

相关内容