我制作了一个随机选择的测验机,LuaLaTeX
用于beamer
观众部分,它产生一个pdf
包含每个问题一帧、每秒一张幻灯片来显示倒计时的测验机:它包含pdf
多个冗余页面。
我想同时生成此测验的摘要形式,采用文章 A4 格式,仅包含问题和答案。所有这些东西都存储在我曾经用来创建的 lua 表中beamer
pdf
,我可以重复使用它来生成摘要,但据我所知,一次只能生成一个pdf
,我想将摘要存储在单独的digest.tex
文件中,稍后再编译。
什么命令或技巧可以重定向tex.print
到单独的文件,或者pdf
如果可能的话可以同时生成两个不同的文件?
添加
假设我有一张lua
桌子:
t = {"Valeur app. par défaut à l'unité",69841.68, 69841 }
在 beamer 中,我使用 tikz 图片中的节点来显示问题,如下所示。但我还想在单独的文件 (article 类) 中使用类似的东西:
tex.print (t[1]..":".."\\num{"..t[2].."}\\hfill"..t[3])
获取测验摘要。
答案1
Lua 有一个io
库似乎可以与 LuaLaTeX 配合使用。不过我不太清楚推荐的用法是什么。
% !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}
答案2
可以使用标准TeX
文件处理例程(如\newwrite
和\newread
等\openout
),将LuaLaTeX
代码写入文件就像应该“写入”当前文件一样(嗯,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}
这个例子生成了foolua.tex
,这里唯一的内容就是“Hello World”。
答案3
仅反斜杠需要转义:
\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}