[英]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.tplx
, report.tplx
或base.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.