在 Jupyter 中将 ipynb 转换为 pdf

Posted

技术标签:

【中文标题】在 Jupyter 中将 ipynb 转换为 pdf【英文标题】:Convert ipynb to pdf in Jupyter 【发布时间】:2016-08-23 07:14:42 【问题描述】:

我是 ipython notebook 的新手,我想将我的 ipynb 转换为 pdf。但是当我尝试通过 LaTex 下载为 PDF 时出现以下错误。

nbconvert failed: pdflatex not found on PATH

没有关于如何将 pdflatex 添加到我的 PATH 的文档。我用窗户。谢谢!

【问题讨论】:

你安装了 Latex 吗?如果没有,您需要以MikTex 之类的形式安装它。如果你有它,有关于更改路径here 的说明。 @ThomasK 谢谢!您的意思是添加安装 miktex 的路径? 它应该在某个地方安装一个pdflatex.exe 文件。 PATH 需要包含包含它的目录。 我得到的是xelatex 而不是pdflatex 当我去下载 Latex 时,它说下载 MikTex 所以,我的 .exe 说 basic-miktex-2.9.6850-x64 - 我的路径与我的 ipynb 文件所在的路径相同,但它仍然不工作? 【参考方案1】:

一个简单且令人惊讶的好解决方案是通过浏览器使用ctrl+p 将笔记本打印为pdf。只需确保您的绘图和图形未处于交互模式,否则它们将不会显示(将它们设置为 %matplotlib inline)。

通过 Latex 导出 jupyter notebook 非常麻烦,并且需要大量修改才能使远程接近发布的内容做好准备。当我绝对需要出版质量时,我会在乳胶编辑器上进行,但 tutorial 详细介绍了在 jupyter 上进行。

获得更好结果的一些有用提示:

Higher resolution plots Hide your code-cells from the pdf 查看 these extensions 以改进您的 jupyter 文档

【讨论】:

【参考方案2】:

对于Mac OS X,我的解决方案是先安装MacTex,然后导出路径找到它:

### TeX
export PATH="/Library/TeX/Distributions/.DefaultTeX/Contents/Programs/texbin:$PATH"

您可以将其添加到您的 .bash_profile 或类似的配置文件中以每次加载它。

在此处查看更多信息https://github.com/jupyter/nbconvert/issues/406

【讨论】:

在我的zshrc 中在 MacOS 上完美运行。谢谢 这个 Mactex 的东西到底怎么可能需要 3.9Gb 才能下载? 对于较新版本的 MacTeX:export PATH="/Library/TeX/texbin:$PATH"【参考方案3】:

如cmets中Thomas K所说,您需要安装Latex,并将包含pdflatex.exe文件的目录的路径添加到系统的PATH变量中。

我寻找了一个轻量级发行版并尝试安装TeXworks,但我没有找到任何pdflatex.exe 文件。 所以我尝试了TeX Live,它在目标安装目录下创建pdflatex.exe 文件效果很好。这条路径应该类似于C:\...\texlive\2016\bin\win32。 最后,只需将此路径添加到系统的PATH 环境变量中(可以使用Thomas K 共享的链接)。

如here所说,在进行任何路径更改后,您需要退出jupyter notebook并打开一个新的命令提示符,以便jupyter找到PATH中新添加的项目。

然后,在 Jupyter 中,您可以通过运行以下命令检查您的环境变量(有关详细信息,请参阅此link):

导入操作系统 os.environ['PATH'].split(';')

并检查它是否包含pdflatex.exe 文件的路径。

如果由于缺少文件/包而在将笔记本导出为 pdf 时遇到问题(这发生在我身上),请参考 link 在 TeX Live 下搜索并安装它们。

【讨论】:

此解决方案适用于 Windows - Mac OS X 版本见下文 一个小问题...您需要在新的命令提示符下重新启动 jupyter notebook 才能看到新添加的 PATH 项【参考方案4】:

对于 Linux,报告的错误是由于缺少 XeLatex,这是 texlive-xetex 软件包的一部分。

在 ubuntu 中的安装将是: sudo apt install texlive-xetex

【讨论】:

【参考方案5】:

除了使用 nbconvert 你可以做的是:

    从文件选项将您的 ipynb 文件下载为 html。 右键单击并选择打印或使用Ctrl+P。 另存为 PDF

简单。

【讨论】:

【参考方案6】:

这是对我有用的完整解决方案(适用于 Mac)。

brew cask install mactex

$ cd ~/

$ touch .bash_profile

这将在 TextEditor 上打开 bash 配置文件

$ open -e .bash_profile

将以下内容粘贴到顶部并保存

export PATH="/Library/TeX/Distributions/.DefaultTeX/Contents/Programs/texbin:$PATH" 

关闭您拥有的任何笔记本并重新打开它

这是一步一步解释它的笔记本: https://github.com/ybaktir/notes/blob/master/Convert%20Jupyter%20Notebook%20to%20Pdf.ipynb

【讨论】:

【参考方案7】:

我同意乳胶安装(至少在 Windows 上)是痛苦的,并且在我的案例中结果不是一个好看的文档。如果您在 JupyterLab 中运行,单独使用 ctrl-p 方法效果不佳,但如果您将笔记本导出为 HTML,然后从浏览器打印,选择 PDF,则结果非常好。

【讨论】:

【参考方案8】:

我知道我的解决方案不在一个级别。但它有效!

在您的笔记本标签浏览器中,只需按“ctrl + p”即可以pdf格式下载

【讨论】:

【参考方案9】:

首先将笔记本文件导出为 HTML(可通过文件>下载为..)。 如果您使用的是 JupyterLab,则可以在 File > Export Notebook As... 下找到它。 使用(任何)免费在线转换器将 html 文件转换为 pdf 文件。 (一个这样的免费在线转换器是sejda (https://www.sejda.com/html-to-pdf)

注意,网上有很多这样的转换器。

【讨论】:

【参考方案10】:

对于错误 500

Debian 或 Ubuntu 用户:-

首先,在终端安装:-

sudo apt-get install texlive-full

然后

conda install -c conda-forge pandoc

【讨论】:

以上是关于在 Jupyter 中将 ipynb 转换为 pdf的主要内容,如果未能解决你的问题,请参考以下文章

jupyter命令把.ipynb文件转化为.py文件

ModuleNotFoundError: No module named 'jupyter_contrib_nbextensions' .ipynb文件转换.py文件时遇到错误(示例

ModuleNotFoundError: No module named 'jupyter_contrib_nbextensions' .ipynb文件转换.py文件时遇到错误(示例

将Jupyter Notebook转换为Markdown等其他格式

Jupyteripynb转换成pdf文件

jupyter里误删了ipynb文件,还可以恢复吗?