Lua-Code in Directlua gibt einen ungültigen Escape-Sequenzfehler aus

Lua-Code in Directlua gibt einen ungültigen Escape-Sequenzfehler aus

Ich versuche, lualatexdie 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.texenthält den Text "Hallo"
  • a_folder/second_fileenthält den Text "Welt"
  • a_folder/third_fileenthält den Text "!. Wie geht es"
  • a_folder/fourth_fileenthält den Text „du?“

Mithilfe von luamöchte ich den Text "Hallo Welt! Wie geht es dir?" generieren. Ich habe also lua_escaping_issue.texFolgendes 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.texeinen Fehler:

[\directlua]:1: ungültige Escape-Sequenz in der Nähe von „a\p“

Ich glaube, die Idee dahinter \directluaist, 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}

verwandte Informationen