常见的编程语言(PL),例如Python
允许在打开的文件中附加行,如file_object = open('sample.txt', 'a')
。
在 expl3 PL 中如何操作?我的 MWE 仅添加了最后一个参数\somemacro
。请指出正确的位置接口3怎么做。
\documentclass[]{article}
\ExplSyntaxOn
\iow_new:N \l_totoc_iow
\NewDocumentCommand{\somemacro}{ m }
{
\iow_open:Nn \l_totoc_iow {\g_file_curr_name_str.dat}
\iow_now:Nn \l_totoc_iow { #1 }
\iow_close:N \l_totoc_iow
}
\ExplSyntaxOff
\begin{document}
\somemacro{tofile}
\somemacro{tofile2}
\end{document}
答案1
TeX 的规则是,当打开一个文件进行写入时,其先前的内容将被销毁。对此没有什么可做的。
根据您对文件句柄的命名进行猜测,您想要做类似于生成目录的事情。
LaTeX 如何解决这个问题?写入 toc 文件的说明如下不是直接写入其中,因为无法知道何时会使用它来读取和打印。相反,指令写在文件中,并在文件末尾写出文件.aux
的新版本,此时不会再打印任何内容(LaTeX 已经扫描了)。因此,在每次运行 LaTeX 时,.toc
\end{document}
以前的该文件的版本.toc
可供阅读。
请注意,您不能打开一个文件进行写入并从中读取。