我matplotlib
用来生成pgf
文件。基于这些,我使用tex
仅包含必要设置和预先构建pgf
的文件的独立文件。在这种情况下,在我的绘图文件中使用自定义 tex 宏进行描述时出现错误。
这是一个示例pgf
生成器:
import matplotlib as mpl
mpl.use("pgf")
mpl.rcParams.update({
"pgf.texsystem": "pdflatex",
"pgf.preamble": [
#r"\newcommand{\foo}{foo}",
r"\usepackage{import}",
r'\subimport{./}{foo.tex}'
]
})
import matplotlib.pyplot as plt
plt.figure(figsize=(4.5,2.5))
plt.plot(range(5))
plt.xlabel(r'\foo{}')
plt.savefig('foo.pgf')
可以在具有以下foo.tex
文件的目录中使用:
\newcommand{\foo}{foo}
运行此程序会导致以下错误:
ValueError: Error processing '\foo{}'
LaTeX Output:
! Undefined control sequence.
<argument> ....000000}{12.000000}\selectfont \foo
{}
<*> ...ze{10.000000}{12.000000}\selectfont \foo{}}
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on texput.log.
请注意,这是由编译我的独立文件产生的错误,matplotlib
而不是由编译我的独立文件产生的错误。另请注意,当\foo
宏作为pgf.preamble
(注释掉的行)的一部分提供时,错误就会消失。我检查了pgf
这个变体产生的,确实它使用了\foo{}
.
我无法进一步缩小问题范围。这是我的具体问题:
- 为什么
matplotlib
调用pdflatex
呢?我正在生成pgf
输出,因此pdflatex
没有必要。(供参考:我strace
d 上面的脚本并且确实知道pdflatex
正在调用它。) - 有没有办法保留
matplotlib
试图编译的临时文件?之后(当然)该文件引用的错误texput.log
不存在。 - 为什么我不能在另一个 tex 文件中提供的标签中使用宏?