我正在使用它\immediate\write18{...}
来创建一个在文档主体中使用的临时文件,例如:
\documentclass{beamer}
\immediate\write18{sed 's/foo/bar/' in.tsv > out.tmp}
\begin{document}
% Do stuff with out.tmp
\end{document}
一旦编译完成,我想删除临时文件out.tmp
,例如:
\onExit\write18{rm out.tmp}
或者
...
\end{document}
\write18{rm out.tmp}
这可能吗?
如果重要的话,我正在编译pdflatex --shell-escape slides.tex
答案1
您可以使用该atveryend
包:
\begin{filecontents*}{\jobname.tsv}
foo
\end{filecontents*}
\documentclass{article}
\usepackage{atveryend}
\immediate\write18{sed 's/foo/bar/' \jobname.tsv > \jobname.tmp}
\AtVeryEndDocument{\immediate\write18{rm \jobname.tmp}}
\begin{document}
\input{\jobname.tmp}
\end{document}
这将打印“bar”,最后不会有.tmp
文件。我更改了文件名,以避免破坏我的文件,但您可以使用任何您喜欢的名称。
有什么\AtVeryEndDocument
不同\AtEndDocument
? 因为它是在关闭所有文件(包括.aux
文件)时执行的。 您可能还会得到提供的内核\AtEndDocument
:进行一些测试。