\immediate\write 在什么时候写入文件?

\immediate\write 在什么时候写入文件?

假设我打开了一个文件myfile,并用

 \immediate\write\myfile{My cat is too old}

我的文档中有多个这样的语句,并在其中进行计算,这会影响写作的结果。到目前为止,我还没有完全理解,什么时候实际的写作已经完成,特别是如果上述代码是命令定义的一部分。

有人可以解释一下这个问题吗?

答案1

将命令存储在宏中并不会执行它,因此

\newcommand{\demo}[1]{\immediate\write\myfile{#1}}

什么都不做,直到你使用 \demo

\demo{My cat is too old}

扩展为

\immediate\write\myfile{My cat is too old}

然后 TeX 开始执行(因为 和\immediate\write不可扩展的原语,而不是宏)。此时将写入文件:只要 TeX 到达第二个参数 ( ... old}) 的末尾,它就会写入文件。

这里\immediate用作替代

\write\myfile{My cat is too old}

不会“立即”写入文件。相反,它会存储信息,并在下一页发送出去时写入文件。这需要获取参数中的页码等正确信息,但如果您尝试在下一次发送之前读回文件,则会给出错误的结果。

相关内容