ipynb 导出 PDF

Jupyter Notebook 是很好的编辑器,甚至可以用来写文章。

写好的 notebook 如何分享给别人呢?

最好的情况是对方拥有 jupyter 环境,直接分享 ipynb 文件。

如果对方不具备相关环境,或者只想阅读无需执行,导出 PDF 是更好的选择。

基本方法

Jupyter Notebook 文件导出 PDF 需要配置一系列外部工具。

首先 Jupyter 安装完整。

安装 nbconvert 包 pip install nbconvert

安装 pandoc 和 inkscape,并添加到环境变量。

(还需 latex 环境,可以 miktex,也可 texlive。我早先学用 tex,安装了 texlive,忽略了这一步)

之后,在打开的笔记本界面,选择“文件” - “保存并导出笔记本为”,等待一会,浏览器会下载一个 PDF 文件,即是。

支持中文

存在一个问题,导出的 PDF 不支持中文,所有中文显示空白。

一个解决方案是先导出 tex,修改配置再手动编译。

anaconda jupyter notebook _.ipynb 文件转 _.pdf 文件 含中文解决方案_CHAOS_ORDER 的博客-CSDN 博客

在 tex 文件导言区开篇添加

1
2
3
\usepackage{fontspec, xunicode, xltxtra}
\setmainfont{Microsoft YaHei}
\usepackage{ctex}

然后编译

1
xelatex demo.tex

另一个解决方案是先导出 markdown,再用 pandoc 导出 PDF。

相比较而言,导出 tex 更能保持 ipynb 原格式。


一劳永逸

以上方法都是手执鼠标点点而已,还需解压文件,修改配置,手动编译。曾欲写一脚本自动解压、修改、编译,奈何不得编译命令。

又思虑,ipynb 导出 PDF 是用 nbconvert 库,玄机必藏其中。阅读源码,不得其义。

又搜索网络,得知修改 nbconvert\templates\latex\base.tplx 文件可行。

然而不得其文件。

又得一文 如何找到 nbconvert 中的 tplx 文件并修改? - 知乎 (zhihu.com), 如其配置。但不知如何写 tplx 文件。

又得一文 Mac 环境下 jupyter notebook 导出 PDF 显示中文的解决方案 (nbconvert 6, python 3.9)_mac jupyter 导出 pdf_lovelegend2121 的博客-CSDN 博客, 以及文档 Creating Custom Templates for nbconvert — nbconvert 7.2.9 documentation, 方知新版本 nbconvert 将模板位置更改为 \share\jupyter\nbconvert\templates\latex,修改其中文件,可自定义。

支持中文,可在 base.tex.j2 约 17 行添加 \usepackage{ctex}。(j2 约是 jinja2,模板文件)

至此,再导出 pdf 可支持中文。

Built with Hugo
Theme Stack designed by Jimmy