El código lua dentro de directlua arroja un error de secuencia de escape no válida

El código lua dentro de directlua arroja un error de secuencia de escape no válida

Estoy intentando utilizarlo lualatexpara automatizar la generación de una parte de un pdf. El árbol de directorios para mi ejemplo de trabajo mínimo se parece al siguiente:

│   lua_escaping_issue.tex
└───a_folder
        first_file.tex
        fourth_file.tex
        second_file.tex
        third_file.tex
  • a_folder/first_file.texcontiene el texto "Hola"
  • a_folder/second_filecontiene el texto "Mundo"
  • a_folder/third_filecontiene el texto "!. ¿Cómo estás?"
  • a_folder/fourth_filecontiene el texto "¿tú?"

Usando lua, me gustaría generar el texto "¡Hola mundo! ¿Cómo estás?". Entonces escribí lua_escaping_issue.texque contiene lo siguiente:

\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}

Desafortunadamente, cuando compilo latexmk -lualatex lua_escaping_issue.texme sale un error:

[\directlua]:1: secuencia de escape no válida cerca de '"a\p'

Creo que la idea \directluaes que todo se expandirá, por lo tanto, se deben escapar los comandos susceptibles de ser reconocidos por LaTeX. Ya hice esto y también probé mi archivo en estado puro lua y parece funcionar. Así que no estoy seguro de qué estoy haciendo mal aquí.

Respuesta1

Necesitas prevenir \\y ~expandir. anteponerles wih \no hace eso:

\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}

información relacionada