![如何在 luacode 函数中打印到控制台时添加换行符?](https://linux22.com/image/414712/%E5%A6%82%E4%BD%95%E5%9C%A8%20luacode%20%E5%87%BD%E6%95%B0%E4%B8%AD%E6%89%93%E5%8D%B0%E5%88%B0%E6%8E%A7%E5%88%B6%E5%8F%B0%E6%97%B6%E6%B7%BB%E5%8A%A0%E6%8D%A2%E8%A1%8C%E7%AC%A6%EF%BC%9F.png)
我想从 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 加载它。