我想从 luacode 函数内部打印到控制台(而不是返回到 latex)。
但我不知道该怎么做。当我添加\n
它时,它不喜欢它。我正在使用print
lua 内部将文件打印到控制台,因为该文件是使用 编译的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 加载它。