LuaLaTeX: escribe "comandos" de látex en el archivo

LuaLaTeX: escribe "comandos" de látex en el archivo

Creé una máquina de preguntas elegida al azar usando LuaLaTeXy beamerpara la parte de la audiencia que produce un pdfcuadro por pregunta, una diapositiva por segundo para mostrar la cuenta regresiva: tiene pdfmúltiples páginas redundantes.

Me gustaría producir en paralelo un resumen de este cuestionario, en formato de artículo A4, con solo las preguntas y las respuestas. Todo esto se almacena en una tabla lua que uso una vez para crear de beamer pdfforma natural, puedo reutilizarla para producir el resumen, pero hasta donde yo sé, solo se puede producir uno pdfa la vez, me gustaría almacenar el resumen. en un digest.texarchivo separado y compílelo más tarde.

¿Cuál es el comando o el truco que redirigirá tex.printa un archivo separado o producirá dos pdfarchivos diferentes a la vez si es posible?

Suma

Digamos que tengo una luamesa:

t = {"Valeur app. par défaut à l'unité",69841.68, 69841 }

En Beamer utilizo nodos en una imagen tikz para mostrar la pregunta, ver más abajo. Pero también quiero algo así en un archivo separado (clase de artículo):

tex.print (t[1]..":".."\\num{"..t[2].."}\\hfill"..t[3])

Para tener un resumen del cuestionario.

ingrese la descripción de la imagen aquí

Respuesta1

Lua tiene una iobiblioteca que parece funcionar con LuaLaTeX. Aunque realmente no sé cuál es el uso recomendado.

% !TeX program = lualatex
\documentclass{article}
\begin{document}
Foo.

\directlua{
out = io.open('somefile.tex','a')
out:write('Hello world. ')
out:write('This is different')
io.close(out)
}

\input{somefile}

\end{document}

Respuesta2

Es posible utilizar las TeXrutinas estándar de manejo de archivos como \newwritey \newready \openoutetc., permitiendo LuaLaTeXescribir el código en el archivo como si debiera escribirse 'en' el archivo actual (bueno, la línea de ensamblaje de procesamiento de entrada TeX ;-))

\documentclass{article}
\usepackage{luacode}

\newwrite\luageneratedfile

\begin{document}  
\immediate\openout\luageneratedfile=foolua.tex
\immediate\write\luageneratedfile{%
\directlua{%
  tex.print("Hello World")
  }
}
\immediate\closeout\luageneratedfile
\end{document}

Este ejemplo genera foolua.tex, el único contenido aquí es "Hola mundo".

Respuesta3

Sólo es necesario escapar de la barra invertida:

\documentclass{article}
\usepackage{fancyvrb}
\usepackage{luacode}
\begin{luacode}
    function OpenFile(mode,name) out=io.open(name,mode) return end
    function CloseFile() io.close(out) return end
\end{luacode}   
\newcommand\OpenFile[2][a]{\luaexec{OpenFile('#1','#2')}}
\def\CloseFile{\luaexec{CloseFile()}}
\def\WriteLn#1{\luaexec{out:write('\string#1'.."\string\n")}}
\def\Write#1{\luaexec{out:write('\string#1')}}

\begin{document}
    Foo.

    \OpenFile[w]{somefile.tex}
    \WriteLn{Hello world from \\LaTeX. }
    \WriteLn{This is different}%
    \Write{Hello world $\\sqrt{1+x}$. }
    \Write{This is different}
    \CloseFile

    \VerbatimInput{somefile}

    \OpenFile{somefile.tex}
    \WriteLn{Hello world from \\LaTeX. }
    \WriteLn{This is different}%
    \Write{Hello world $\\sqrt{1+x}$. }
    \Write{This is different}
    \CloseFile
%   
    \VerbatimInput{somefile}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada