
Estoy intentando utilizarlo lualatex
para 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.tex
contiene el texto "Hola"a_folder/second_file
contiene el texto "Mundo"a_folder/third_file
contiene el texto "!. ¿Cómo estás?"a_folder/fourth_file
contiene el texto "¿tú?"
Usando lua
, me gustaría generar el texto "¡Hola mundo! ¿Cómo estás?". Entonces escribí lua_escaping_issue.tex
que 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.tex
me sale un error:
[\directlua]:1: secuencia de escape no válida cerca de '"a\p'
Creo que la idea \directlua
es 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}