我正在尝试利用来lualatex
自动生成 pdf 的某些部分。我的最小工作示例的目录树如下所示:
│ lua_escaping_issue.tex
│
└───a_folder
first_file.tex
fourth_file.tex
second_file.tex
third_file.tex
a_folder/first_file.tex
包含文本“Hello”a_folder/second_file
包含文本“世界”a_folder/third_file
包含文本“!. How are”a_folder/fourth_file
包含文字“你?”
使用lua
,我想生成文本“HelloWorld!.How areyou?”。所以我写了lua_escaping_issue.tex
包含以下内容的内容:
\documentclass{article}
\begin{document}
\directlua
{
require 'lfs'
for file in lfs.dir("a\_folder") do
if file ~= "." and file ~= ".." then
tex.print("\\input\{" .. "a\_folder/" .. file .. "\}")
end
end
}
\end{document}
不幸的是,当我编译时latexmk -lualatex lua_escaping_issue.tex
出现错误:
[\directlua]:1: '"a\p' 附近的转义序列无效
我认为这个想法\directlua
是所有内容都会被扩展,因此容易被 LaTeX 识别的命令应该被转义。我已经这样做了,并且还在 pure 中测试了我的文件lua
,它似乎有效。所以我不确定我在这里做错了什么。
答案1
您需要防止\\
和~
扩大。在它们前面加上前缀并\
不能做到这一点:
\documentclass{article}
\begin{document}
\directlua{
% no require 'lfs'
for file in lfs.dir("a_folder") do
if file \string~= "." and file \string~= ".." then
tex.sprint( "\string\\input{a_folder/" .. file .. "}" )
end
end
}
\end{document}