我有一个包含嵌入式绘图的iPython笔记本(即它包含命令plot(x,y))。当我发出命令ipython nbconvert --to latex --post PDF --SphinxTransformer.author ='Myself'MyNotebook.ipynb时,生成的.PDF文件包含该图,但已导出到.PNG,所以它没有看起来非常好(像素化)。如何告诉 nbconvert 改为将所有图/图导出到.EPS?
谢谢
最佳答案
首先,笔记本不负责创建图,而是使用matplotlib,这可以将您的图以eps,pdf,svg等高质量呈现在出版物中。
我同意默认的内联绘图格式(即png
)由于多种原因并不是最佳用于出版物。正如您在答案中发布的github问题中所给出的那样,可以通过调用以下方法将内联后端配置为使用svg
而不是png
%config InlineBackend.figure_format = 'svg'
在代码单元中。
这样,新创建的地物图将是矢量的(如Matt所说,已经渲染的png不会被转换!)。这些svg嵌入在笔记本中(svg可以由现代浏览器呈现),随后通过nbconvert转换为pdf。这些pdf满足发布准备图的要求。但是,请注意,这些svg可能非常大(与png相比),并且可能会大大减慢笔记本的处理速度。
您最初的问题是关于
eps
图形。如上所述,matplotlib可以渲染eps,因此,您始终可以执行savefig('plot1.eps')
之类的操作来创建所需的图形。实际上,这就是我创建出版物数字的方式(笔记本中为png,纸张中为eps)。假设我们将让IPython生成eps文件(嵌入但不可在浏览器中渲染)。 nbconvert生成的
tex
文件旨在与pdflatex一起使用。如果提供了eps文件,则pdflatex会将其转换为pdf,以包含在最终文档中。因此,基本上,它的功能与nbconvert当前对svgs的功能相同。因此,没有任何好处。最后,我想指出的是,即使nbconvert生成的tex文件看起来很棒(尤其是使用master分支创建的tex文件),恕我直言,也无法不触摸(例如添加标题,缩放图像等)使用这些文件。 ..)。因此,您总是可以在此步骤中将eps文件包括在论文中。
关于iPython nbconvert和 latex : use . eps代替.png进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659864/