2013-10-29 31 views
5

我有一個iPython筆記本,它包含一個內聯圖(即包含命令plot(x,y))。當我發出命令ipython nbconvert --to latex --post PDF --SphinxTransformer.author ='Myself'MyNotebook.ipynb生成的.PDF文件包含該圖,但它已導出到.PNG,因此它不會看起來不太好(像素化)。我如何告訴nbconvert將所有地塊/數字導出爲.EPS?iPython nbconvert和latex:使用.eps而不是.png作爲地塊

謝謝

回答

14

所有的筆記本電腦首先是不負責創建地塊,但matplotlib這使得渲染你的地塊作爲eps,pdf,svg等以高質量包含在出版物中。

我同意默認的內嵌打印格式,即png由於多種原因不適合用於出版物。正如你在你的答案公佈在GitHub的問題給出了在線後端可以通過在代碼調用細胞

%config InlineBackend.figure_format = 'svg' 

被配置爲使用svg而不是png。 有了這個,新創建的地塊將是矢量,(如馬特所說,已經提供的PNG將不會被轉換!)。這些svg嵌入在筆記本中(svgs可以由現代瀏覽器渲染),然後由nbconvert轉換爲pdf。這些pdf符合出版準備情節的要求。但是,請注意,svgs可能非常龐大(與png相比),並且可能會顯着降低筆記本處理速度。

您最初的問題是關於eps圖形。如上所述,matplotlib可以呈現eps,因此,您可以隨時做類似savefig('plot1.eps')的創建所需的數字。這實際上是我創建出版物數據的方式(png在筆記本中,eps在紙張中)。 我們假設我們會讓IPython生成eps文件(嵌入式但不能在瀏覽器中呈現)。由生成的tex文件nbconvert旨在與pdflatex一起使用。如果用eps文件提供pdflatex會將這些文件轉換爲pdf以包含在最終文檔中。所以基本上它與nbconvert目前與svgs一樣。因此,沒有任何好處。最後,我想指出的是,儘管nbconvert生成的tex文件看起來不錯(特別是使用master分支創建的文件),但恕我直言,沒有辦法使用這些文件而不觸摸(例如添加字幕,縮放圖像,...)。因此,您始終可以將這一步中的eps文件包含在論文中。

+0

你好,謝謝你的幫助。我已經嘗試在iPython筆記本中使用='svg'選項,但是當我嘗試運行nbconvert時,我得到一個很長的錯誤消息,其要點在於:「TypeError:Inkscape svg到png轉換失敗」。那麼nbconvert仍然想要將劇情轉換爲.PNG?對於最終格式(即不是NEESARTIONAL .EPS)的具體說明,我感到抱歉:我只是想用iPython寫出完整的作業(有好的地塊) – luffe

+1

您是否安裝了inkscape?錯誤信息簡直是錯誤:)>轉換爲svg2pdf。 – Jakob

+0

啊,不,我安裝了inkscape,現在它可以工作。萬分感謝! – luffe

0

NBconvert不運行代碼。所以如果你沒有用SVG matplotlib後端繪製它是不可能的。 如果你這樣做了,那麼你需要編寫一個nbconvert預處理程序來執行svg-> eps並擴展相關的模板以知道如何嵌入EPS。

相關問題