Lualatex,插入带换行符的文本

Lualatex,插入带换行符的文本

我不明白为什么我不能在插入 tex 文档的 lua 代码中插入换行符。如果我这样做,我会得到错误

! LaTeX Error: Missing \begin{document}.

梅威瑟:

文件test.lua

tex.print("\\usepackage{tikz}\n\\usetikzlibrary{calc}")

文件test.tex

\documentclass{article}
\usepackage{lipsum}

\directlua{dofile("test.lua")}

\begin{document}%
\lipsum[1-20]
\end{document}

用 编译lualatex test.tex

答案1

Lua 所认识的字符\n在 TeX 中被称为^^J。它的类别代码为 12(其他),因此当 TeX 在定义或类似内容之外遇到它时,它会尝试对其进行排版。由于 LaTeX 不允许在序言内进行排版,因此您会收到您注意到的错误。

如果你读过tex.printLuaTeX 手册,你可能会注意到这一点:

每个字符串参数都被 TEX 视为单独的输入行。

因此,你可以通过以下方式实现你(可能)想要的

tex.print("\\usepackage{tikz}","\\usetikzlibrary{calc}")

但是,这完全没有必要,因为将这两个命令放在同一行就可以了。

在 TeX 世界中,您可能想用\n( 来\r替换^^M),但这也行不通,因为 TeX 现在将看到一行中间有一个结束符。这会导致 TeX 完全忽略行的其余部分,这几乎肯定不是您想要的。

相关内容