抑制NBConvert中的代码?IPython的

dar*_*dog 16 python ipython ipython-notebook

我已经弄清楚如何抑制大型代码块出现在最终的NB转换(PDF)输出中.

通过将LaTex命令放在"我希望在最终输出中不需要的代码之前的原始单元格"中

\iffalse
Run Code Online (Sandbox Code Playgroud)

最后跟着这个原始单元格

\fi
Run Code Online (Sandbox Code Playgroud)

但是,当我需要显示数字等时,仍然留下一些丑陋的代码,而笔记本的基本目的是显示带有结果的代码,有时对于非技术用户,我们只需要输出..任何想法?

如果有人受到启发,有点相关..任何方式在markdown单元格中包含python变量,这样可以得到带有计算结果的动态文本?对不起第二个问题,但我不确定是否因为一些奇怪的原因而单独询问这个问题.

Jak*_*kob 27

要禁止代码单元格(仅输入),可以使用自定义模板.与此问题中讨论的类似,必须创建一个模板,例如latex_nocode.tplx(在工作目录中),其中包含以下内容(对于IPython 1.x)

((*- extends 'latex_article.tplx' -*))
% Disable input cells
((* block input_group *))
((* endblock input_group *))
Run Code Online (Sandbox Code Playgroud)

使用这个模板
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 *))
Run Code Online (Sandbox Code Playgroud)

  • 参数```--to = latex```赞成```--to = pdf```的被弃用.它接受相同的选项,从该变化并除去```--post = pdf```参数,所以APPART,命令保持相同. (2认同)

dwo*_*vos 5

如果你在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'
Run Code Online (Sandbox Code Playgroud)

最后,您的命令将是:

ipython nbconvert --to=pdf --config C:\your\path\to\pdf_nocode.py
Run Code Online (Sandbox Code Playgroud)

这也会生成图像作为支持文件,如果你想抑制那个输出(我主要使用的是图,所以这对每个人都不适用),你可以修改

site-packages\IPython\nbconvert\exporters\pdf.py
Run Code Online (Sandbox Code Playgroud)

通过添加此代码:

...
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']
...
Run Code Online (Sandbox Code Playgroud)

或者通过从pdf.py继承PDFExporter并将exporter_map中的导出器添加到:

site-packages\IPython\nbconvert\exporters\export.py
Run Code Online (Sandbox Code Playgroud)

如果你是子类,它确实有一个附带的好处,你可以将自己的条目添加到笔记本菜单中:

site-packages\IPython\html\static\notebook\js\menubar.js
Run Code Online (Sandbox Code Playgroud)