如何在 luacode 函数中打印到控制台时添加换行符?

如何在 luacode 函数中打印到控制台时添加换行符?

我想从 luacode 函数内部打印到控制台(而不是返回到 latex)。

但我不知道该怎么做。当我添加\n它时,它不喜欢它。我正在使用printlua 内部将文件打印到控制台,因为该文件是使用 编译的lualatex

没有它也可以正常工作,\n但我想在字符串各部分之间添加换行符,以便更容易在屏幕上看到。这只是为了调试。与 lua 将任何内容发送回 latex 无关。

这是 MWE

\documentclass{article}%

\usepackage{luacode}
\begin{luacode}
function foo(s) 
    print("the input is \n"..s.."\nwhich was send by Latex")
 end
\end{luacode}

\begin{document}

\directlua{ foo(\luastring{some stuff})}

test

\end{document}

使用编译lualatex foo3.tex给出

(/usr/local/texlive/2020/texmf-dist/tex/luatex/ctablestack/ctablestack.sty)))
! Undefined control sequence.
<argument> function foo(s)
print("the input is \n
                                       "..s.."\nwhich  was send by Latex")
end
l.8 \end{luacode}

除了使用“\n”之外,肯定还有其他方法可以做到这一点,但一直找不到。没有“\n”也可以正常工作。所以这有效

   print("the input is "..s.."which was send by Latex")

现在编译完成后,我在屏幕上看到以下内容:

(/usr/local/texlive/2020/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def)
(./foo3.aux) (/usr/local/texlive/2020/texmf-dist/tex/latex/base/ts1cmr.fd)the input is some stuffwhich was send by Latex

(./foo3.aux))
 413 words of node memory still in use:

没有错误。

使用 TL 2020。

lualatex --version
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020)

答案1

使用 luacode* 环境:

\documentclass{article}%

\usepackage{luacode}
\begin{luacode*}
function foo(s)
    print("the input is \n"..s.."\nwhich was send by Latex")
 end
\end{luacode*}

\begin{document}

\directlua{ foo(\luastring{some stuff})}

test

\end{document}

或者使用 \string

\documentclass{article}%

\usepackage{luacode}
\begin{luacode}
function foo(s)
    print("the input is \string\n"..s.."\string\nwhich was send by Latex")
 end
\end{luacode}

\begin{document}

\directlua{ foo(\luastring{some stuff})}

test

\end{document}

或者将您的代码移到某个外部 lua 文件中并使用 require 加载它。

相关内容