簡體   English   中英

抑制NBConvert中的代碼? IPython的

[英]Suppress code in NBConvert? IPython

我已經弄清楚如何抑制大型代碼塊出現在最終的NB轉換(PDF)輸出中。

通過將LaTex命令放在“我希望在最終輸出中不需要的代碼之前的原始單元格”中

\iffalse

最后跟着這個原始單元格

\fi

但是當我需要顯示數字等時,仍然留下一些丑陋的代碼,而筆記本的基本目的是顯示帶有結果的代碼,有時對於非技術用戶我們只需要輸出..任何想法?

如果有人受到啟發,有點相關..任何方式在markdown單元格中包含python變量,這樣可以得到帶有計算結果的動態文本? 對不起第二個問題,但我不確定是否因為某些奇怪的原因而單獨詢問這個問題。

要禁止代碼單元格(僅輸入),可以使用自定義模板。 此問題中討論的類似,必須創建一個模板,例如latex_nocode.tplx (在工作目錄中),其中包含以下內容(對於IPython 1.x)

((*- extends 'latex_article.tplx' -*))
% Disable input cells
((* block input_group *))
((* endblock input_group *))

使用這個模板
ipython nbconvert --to=latex --template=latex_nocode.tplx --post=pdf file.ipynb

也許我應該補充說,這樣輸入塊只是被空白塊替換(實際上是輸入單元被禁用的乳膠注釋)。
檢查預定義的乳膠模板時,可以識別各個塊(代碼,標記,標題等),並可以設置相應的自定義模板以根據需要設置輸出樣式。

編輯

正如user1248490指出,自IPython 2.0以來,要擴展的乳膠模板稱為article.tplxreport.tplxbase.tplx 因此,上面的例子應該是這樣的

((*- extends 'article.tplx' -*))
% Disable input cells
((* block input_group *))
((* endblock input_group *))

如果你在Anaconda上的Windows上從IPython 3.2.0發現這里(我不明白為什么這對unix系統或常規的ipython安裝不起作用,但我自己沒有測試過這些場景) - 這個方法是什么對我有用。 使用TorokLev的乳膠模板(比如pdf_nocode.tplx),然后創建一個python文件(比如pdf_nocode.py)並粘貼以下內容:

c = get_config()

#Export all the notebooks in the current directory to the sphinx_howto format.
c.NbConvertApp.notebooks = ['*.ipynb']
c.NbConvertApp.export_format = 'pdf'
c.TemplateExporter.template_path = ['.', r"C:\your\path\to\tplx\folder"]
c.Exporter.template_file = 'pdf_nocode'

最后,您的命令將是:

ipython nbconvert --to=pdf --config C:\your\path\to\pdf_nocode.py

這也會生成圖像作為支持文件,如果你想抑制那個輸出(我主要使用的是圖,所以這對每個人都不適用),你可以修改

site-packages\IPython\nbconvert\exporters\pdf.py

通過添加此代碼:

...
def from_notebook_node(self, nb, resources=None, **kw):
...
        # convert output extension to pdf
        # the writer above required it to be tex
        resources['output_extension'] = '.pdf'

        #The following suppresses the support files, so you may
        #end up removing other useful files you wanted to include
        del resources['outputs']
...

或者通過從pdf.py繼承PDFExporter並將exporter_map中的導出器添加到:

site-packages\IPython\nbconvert\exporters\export.py

如果你是子類,它確實有一個附帶的好處,你可以在下面的筆記本菜單中添加自己的條目:

site-packages\IPython\html\static\notebook\js\menubar.js

以上答案的更正:

1)在上面的latex文件中更正文檔類名

你應該改變這條線

((*- extends 'article.tplx' -*))
% Disable input cells
((* block input_group *))
((* endblock input_group *))

2)將本地目錄添加到nbconvert config as

sudo gedit /usr/local/lib/python2.7/dist-packages/jupyter_core/tests/dotipython/profile_default/ipython_nbconvert_config.py

在文件中添加一行c.TemplateExporter.template_path = ['.']

3)將轉換器稱為

ipython nbconvert --to=pdf --template=latex_nocode.tplx tested_notebook.ipynb

或者如果要執行報告的所有單元格,例如:

ipython nbconvert --to=pdf --template=latex_nocode.tplx --ExecutePreprocessor.enabled=True tested_notebook.ipynb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM