使用 \immediate\write18 从 TeX 运行 pythontex 失败

使用 \immediate\write18 从 TeX 运行 pythontex 失败

pythontex从 TeX 使用运行\immediate\write18失败,原因我不清楚。请参阅下面的示例文件。

跑步

pdflatex -shell-escape p.tex

不会pycode.txt按预期生成文件。但是,运行

pythontex p.tex

确实如此。日志没有给出任何明显的失败迹象。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% p.tex %%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\usepackage[runall]{pythontex}
\begin{pycode}
f = open("pycode.txt", 'w')
f.write("Hello, this is Python writing from TeX.")
f.close()
\end{pycode}
\immediate\write18{pythontex \jobname.tex}
\begin{document}
\end{document}

答案1

pythontex将代码和相关信息写入临时文件.pytxcode,稍后将使用该临时文件执行代码。此临时文件在pythontex加载后立即打开,然后关闭\AfterEndDocument。如果您尝试pythontex在前导码中运行,它将读取不完整的临时文件,并因此给出有关临时文件格式的错误。

你要做的是运行pythontex 临时文件已完成并关闭。使用\AfterEndDocument{\immediate\write18{pythontex \jobname.tex}}对我来说有效。另一个选择是运行\write18命令加载pythontex,也许带有条件来检测临时文件的存在。

相关内容