如何最佳地打印 iPython 笔记本

16
什么是打印包含大量图形/绘图、照片和代码的iPython笔记本(.ipynb)的最佳方法,以便它们出现水平滚动条?我已经尝试将它们转换为HTML、幻灯片、PDF等等,但都没有产生像样的输出。例如,幻灯片具有超大字体/缩放,以至于一页上没有超过5行文本。我尝试了GitPrint,但那只适用于markdown(md)文件。我尝试将ipynb转换为tex,并使用pdflatex将其转换为PDF,但出现了很多错误,我一直被一个问号提示(?)所困扰。当我按下回车键时,输出不包含照片。那么这里最好的方法是什么呢?我不关心扩展名,只要它在纸上看起来漂亮(像ipynb)。
3个回答

8
您可以使用nbconvert将ipynb文件转换为HTML,那么问题来了:如何漂亮地打印HTML文件?与打印ipynb文件相比,打印HTML文件要容易得多。

命令如下:

jupyter nbconvert --to html filename.ipynb

0

我认为我已经找到了一个不错的解决方案,因为我也曾陷入同样的问题。为了获得一个美观的 Jupyter 笔记本 (.pdf 格式) 打印输出,以便于学习和教学 (如讲义幻灯片),我建议使用您的网络浏览器进行打印 (Chrome: Print=Ctrl+P)。

结果: 一个美观的文档,包含所有代码、图片,就像在 Jupyter 笔记本中嵌入一样。

tl:dr 避免在 Jupyter 笔记本选项中进行任何转换;直接从网络浏览器打印。


4
直接打印Chrome页面并不是一个好的解决方案,因为它没有适当的格式来适应正确的页面布局。 - Abdul Rehman
1
这在JupyterLab(1.2)中效果不佳,但在经典笔记本中可以正常工作。在JupyterLab中选择帮助->启动经典笔记本,然后从您的浏览器菜单(例如3点菜单)选择打印并打印为PDF。这将分页并具有适当的边距。 - Andrew Olney

0

最简单和灵活的方法是使用CSS。 例如,将以下代码放入单元格中并运行。我将删除所有代码块和输出块。通过这种方式,您可以控制您想要的内容。

%%html
 <style>
 div.input {
      display: none;
      padding: 0;
    }

    div.output_prompt {
      display: none;
      padding: 0;
    }

    div.text_cell_render {
      padding: 1pt;
    }

    div#notebook p,
    div#notebook,
    div#notebook li,
    p {
      font-size: 11pt;
      line-height: 135%;
      margin: 0;
    }

    .rendered_html h1,
    .rendered_html h1:first-child {
      font-size: 16pt;
      margin: 7pt 0;
    }

    .rendered_html h2,
    .rendered_html h2:first-child {
      font-size: 14pt;
      margin: 6pt 0;
    }

    .rendered_html h3,
    .rendered_html h3:first-child {
      font-size: 13pt;
      margin: 6pt 0;
    }

    div.output_subarea {
      padding: 0;
    }
 </syle>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接