我正在使用 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 中,百分号字符将是“任何其他字符”,现在会导致错误。