首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib pgf pdf注释序言导致空白额外页

matplotlib pgf pdf注释序言导致空白额外页
EN

Stack Overflow用户
提问于 2022-08-22 15:22:05
回答 1查看 38关注 0票数 0

我试图添加一些工具提示到matplotlib pdf文件。为了做到这一点,我使用的是pgf,所以我可以在序言中添加“pdf注释”。但是,当我在序言中添加pdf注释时,我会得到一个空白的额外页面。其他包,如xcolor和hyperref (例如),则不会出现这种情况。

下面是用于测试的代码,这是从这一讨论获得的

代码语言:javascript
复制
import matplotlib as mpl
import matplotlib.pyplot as plt

mpl.use("pgf")
pgf_with_pdflatex = {
  "pgf.texsystem": "pdflatex",
  "pgf.preamble": r"\usepackage{pdfcomment}",
}
mpl.rcParams.update(pgf_with_pdflatex)
fig = plt.figure(figsize=(4.5,2.5))
for i in range(5):
    plt.text(i,i,r"\pdftooltip{\rule{0.3cm}{0.3cm}}{(%d,%d)}" % (i,i))
    
plt.plot(range(5), linewidth = 10)
plt.savefig("tooltips.pdf")
plt.close()

这是可行的,只是它会产生额外的页面。下面是一个简约版本,它再现了这个问题。

代码语言:javascript
复制
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.use("pgf")
mpl.rcParams["pgf.texsystem"] = "pdflatex"
#mpl.rcParams["pgf.preamble"] = r"\usepackage{pdfcomment}" # uncomment to get blank page
plt.plot(range(5), linewidth = 10)
plt.savefig("tooltips.pdf")
plt.close()

本质上,如果您取消注释这一行,您将得到一个额外的空白页作为输出,我不想要。下面是我得到的两个例子截图,一个带有额外的页面,另一个没有(我所更改的只是取消对行的注释)。

作为额外信息,我的pdflatex版本是:

pdfTeX 3.14159265-2.6-1.40.20 (TeX Live2019/Debian)

python3版本是:

Python 3.8.10

Matplotlib版本是:

3.3.2

请帮助,请仁慈,这是我第一次发布一个问题。

编辑:根据请求,下面是中间的LaTeX文件。这是一个pgf文件的形式,其中一个将包括在一个tex文档,我认为。我不知道如何直接获得.tex。

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 21:31:22

不漂亮,但我想我在附近找到了一份工作。下面是修改后的最小版本,它只输出一个页面。基于samcarter_is_at_topanswers.xyz的注释,问题在于matplotlib而不是LaTeX,因此我只在脚本中包含了pdflatex调用。以下是最低工作版本:

代码语言:javascript
复制
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.use("pgf")
mpl.rcParams["pgf.texsystem"] = "pdflatex"
mpl.rcParams["pgf.preamble"] = r"\usepackage{pdfcomment}"
plt.plot(range(5), linewidth = 10, zorder = 10)
plt.savefig("tooltips.pgf")
plt.close()
import subprocess
with open("tooltips.tex", "w") as f:
    f.write(r"""
\documentclass{standalone}
\usepackage{pgf}
\usepackage{pdfcomment}
\begin{document}
\input{tooltips.pgf}
\end{document}
    """)
subprocess.run(["pdflatex", "tooltips.tex"])

注意,matplotlib输出的是.pgf文件,而不是.pdf文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73447490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档