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
,也许带有条件来检测临时文件的存在。