Beamer 通过首先将帧的内容写入 .vrb 文件,然后再次读取(如果我理解正确的话,根据需要读取几次)来管理具有 catcode 更改内容的帧。
在 LuaLaTeX 中,我想知道是否可以通过将内容存储在 lua 变量中来提高性能,以及如何实现这一点。
这让我想问是否/如何使用回调来有效地重定向\write
s 以及\input
beamer 对 lua 变量所做的操作。
luatex 的文档确实提到了 process_output_buffer 回调,但考虑到没有文件编号,我无法弄清楚如何使用它(我当然不希望回调干预所有\write
s,只干预那些 s \beamer@verbatimfileout
)。
process_input_buffer 似乎起到了对称的作用,虽然我已经看到并在正在编译的 tex 文件上使用它,而不是在正在\input
ed 的文件上(但那是在添加回调时luatexbase.add_to_callback
,luatexbase 实际上并没有出现在文档的任何地方)。
然而这并不重要,因为一旦我们将\write
s 重定向到 lua 变量,就足以用\input{\beamer@verbfilename}
例如替换\luadirect{tex.print(verbframecontent)}
。