插入来自不同文件夹的引用 png 文件的 pgf

插入来自不同文件夹的引用 png 文件的 pgf

我正在尝试插入一个pgf用 matplotlib 创建的文件。此文件引用一个png文件(因为我在图中插入了一个 png 图形)。

当我将 png 文件放在与我的tex文件相同的文件夹中时,一切正常,但如果 png 文件与 pgf 文件位于同一个文件夹中,则会出现错误

Package pgf Warning: File "plot2.png" not found when def
ining image "pgflastimage".

我尝试过使用import,但我不知道它如何适用于 pgf。如果我将 pgf 更改为 tex,它仍然找不到 png:

\documentclass{article}
\usepackage{pgf}
\usepackage{import}

\begin{document}


% \subimport{../pgf/}{plot.pgf} --> Not working
\input{../pgf/plot.pgf}

\end{document}

编辑:

\pgfimage{...}在 pgf 文件中通过进行更改\includegraphics{...}似乎可以正常工作subimport*。但是,matplotlib 使用 生成 pgf pgfimage,因此需要手动更改输出图。也许有人知道更好的解决方案。

答案1

编辑matplotlib后端已经升级发射\includegraphics而不是\pgfimage。最好的解决方案是matplotlib尽可能进行更新。


原始答案

据我所发现,没有更好的方法。 这个答案注意pgfimage使用includegraphics,但不传播相对路径。查看matplotlib pgf 后端源,更改pgfimageincludegraphics似乎不是matplotlib等式边上的可配置选项。

我想到的一个解决方法是拦截输出并更新相应的行。

# lots of plotting commands
fig.savefig(output)
_, ext = os.path.splitext(output)
if ext == ".pgf":
    with open(output, "r") as fid:
        lines = fid.readlines()

    with open(output, "w") as fid:
        for line in lines:
            fid.write(re.sub(r"\\pgfimage", r"\\includegraphics", line))

如果您可以编辑绘图程序,这实际上只是一个“解决方案”。

相关内容