我正在用 LuaTeX 从包含长多行字符串 ( [=[ string ]=]
) 的 Lua 源创建文档。当我使用 打印字符串时tex.print
,LuaTeX 会“吃掉”换行符。例如,我有字符串
A = [=[
Here we go.
Text. More text.
And more text to go.
]=]
但tex.print
输出
Here we go. Text. More text. And more text to go.
Lua 中不会发生这种情况,但 LuaTeX 中会发生这种情况。有办法解决这个问题吗?考虑大量的多行字符串,因此手动编辑字符串对我来说是不可能的。
答案1
在 ConTeXt 中,你可以使用(在独立的慢性肝病文档):
local A = [=[
Here we go.
Text. More text.
And more text to go.
]=]
context.starttext()
context.startlines()
context(A)
context.stoplines()
context.stoptext()
或者在常规 TeX 文档中:
\startluacode
local A = [=[
Here we go.
Text. More text.
And more text to go.
]=]
\stopluacode
\starttext
\startluacode
context.startlines()
context(A)
context.stoplines()
\stopluacode
\stoptext
不确定与\startlines ... \stoplines
LaTeX 等效的是什么,但它在 LaTeX 中也应该可以工作。
答案2
您必须在处将字符串分成几行,\n
然后使用tex.print
(而不是tex.sprint
)来打印它们,因为这将插入所需的行尾标记\obeylines
。
\documentclass{article}
\usepackage{luacode}
\begin{luacode*}
A = [=[
Here we go.
Text. More text.
And more text to go.
]=]
\end{luacode*}
\begin{document}
{\obeylines\directlua{
for _, line in ipairs(string.splitlines(A)) do
tex.print(line)
end
}}
\end{document}