
Ich versuche, lualatex
die Generierung eines Teils einer PDF-Datei zu automatisieren. Der Verzeichnisbaum für mein minimales Arbeitsbeispiel sieht wie folgt aus:
│ lua_escaping_issue.tex
│
└───a_folder
first_file.tex
fourth_file.tex
second_file.tex
third_file.tex
a_folder/first_file.tex
enthält den Text "Hallo"a_folder/second_file
enthält den Text "Welt"a_folder/third_file
enthält den Text "!. Wie geht es"a_folder/fourth_file
enthält den Text „du?“
Mithilfe von lua
möchte ich den Text "Hallo Welt! Wie geht es dir?" generieren. Ich habe also lua_escaping_issue.tex
Folgendes geschrieben:
\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}
Leider erhalte ich beim Kompilieren latexmk -lualatex lua_escaping_issue.tex
einen Fehler:
[\directlua]:1: ungültige Escape-Sequenz in der Nähe von „a\p“
Ich glaube, die Idee dahinter \directlua
ist, dass alles erweitert wird, daher sollten Befehle, die von LaTeX erkannt werden könnten, maskiert werden. Ich habe das bereits getan und meine Datei auch in Pure getestet lua
und es scheint zu funktionieren. Ich bin mir also nicht sicher, was ich hier falsch mache.
Antwort1
Sie müssen die Erweiterung von \\
und verhindern ~
. Das Voranstellen von „w“ \
bewirkt dies nicht:
\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}