LuaLaTeX :將乳膠「指令」寫入文件

LuaLaTeX :將乳膠「指令」寫入文件

LuaLaTeX我使用和beamerfor 觀眾部分製作了一個隨機選擇的測驗機,它產生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 圖片中的節點來顯示問題,請參見下文。但我也想在一個單獨的文件(文章類)中添加類似的內容:

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}

在此輸入影像描述

相關內容