将行写入 expl3 中的文件

将行写入 expl3 中的文件

常见的编程语言(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可供阅读。

请注意,您不能打开一个文件进行写入并从中读取。

相关内容