
我正在嘗試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
包含文字“你好”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 識別的命令應該被轉義。我已經這樣做了,並且還以純方式測試了我的文件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}