
Fiz uma máquina de quiz escolhida aleatoriamente usando LuaLaTeX
e beamer
para a parte do público que produz um pdf
quadro por pergunta, um slide por segundo para mostrar a contagem regressiva: faz uma máquina pdf
com várias páginas redundantes.
Gostaria de produzir paralelamente um resumo deste quiz, em formato de artigo A4, apenas com as perguntas e as respostas. Todo esse material é armazenado em uma tabela lua que uso uma vez para criar beamer
pdf
naturalmente, posso reutilizá-la para produzir o resumo, mas até onde eu sei, só se pode produzir um pdf
por vez, gostaria de armazenar o resumo em um digest.tex
arquivo separado e compile-o mais tarde.
Qual é o comando ou truque que redirecionará tex.print
para um arquivo separado ou produzirá dois pdf
arquivos diferentes ao mesmo tempo, se possível?
Adição
Digamos que eu tenha uma lua
mesa:
t = {"Valeur app. par défaut à l'unité",69841.68, 69841 }
No beamer eu uso nós em uma imagem tikz para mostrar a questão, veja abaixo. Mas também quero algo assim em um arquivo separado (classe de artigo):
tex.print (t[1]..":".."\\num{"..t[2].."}\\hfill"..t[3])
Para ter um resumo do questionário.
Responder1
Lua tem uma io
biblioteca que parece funcionar com LuaLaTeX. Eu realmente não sei qual é o 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}
Responder2
É possível usar as TeX
rotinas padrão de manipulação de arquivos, como \newwrite
e \newread
e \openout
etc., permitindo LuaLaTeX
gravar o código no arquivo como se devesse ser gravado 'no' arquivo atual (bem, a linha de montagem de processamento de entrada do 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 exemplo gera foolua.tex
, o único conteúdo é "Hello World" aqui.
Responder3
Apenas a barra invertida precisa ser escapada:
\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}