LuaLaTeX 代码应该生成错误,但实际上没有

LuaLaTeX 代码应该生成错误,但实际上没有

我正在尝试进一步了解 LuaLaTeX,然后遇到了这个介绍。作者声称以下代码不起作用:

% this code will not work
\directlua{
    tex.print("\\begin{tabular}{lll}")
    tex.print("1 & a & Test A \\\\")
    tex.print("2 & b & Test B \\\\")
    tex.print("\\end{tabular}")
}

不过,我已经在本地机器上尝试过了,使用编译latexmk -pdflatex test.tex工作正常。此外,LaTeX 生成的表格看起来与通过 Lua 生成的表格完全相同。这是我的代码:

\documentclass{article}

\begin{document}

  Table generated by Lua:
  \directlua{
    tex.print("\\begin{tabular}{lll}")
    tex.print("1 & a & Test A \\\\")
    tex.print("2 & b & Test B \\\\")
    tex.print("\\end{tabular}")
  }

  Table generated by \LaTeX
  \begin{tabular}{lll}
    1 & a & Test A \\
    2 & b & Test B \\
  \end{tabular}
\end{document}

我做错了什么吗?为什么我的代码不是产生错误?

答案1

您引用的页面在编写时是正确的,但近年来,更多的乳胶命令已经变得更加强大,在这种情况下,它\\是用 e-tex \protected(而不是 LaTeX \DeclareRobustCommand机制)完成的,因此它保持\\原样\directlua

具体来说,这一变化是在 2020 年 1 月做出的

https://github.com/latex3/latex2e/issues/203

相关内容