Jupyter Notebook 导出PDF与Latex中文支持


Jupyter Notebook

最近搞机器学习用到了Jupyter Notebook.
作为一个实时记事本,有时需要将内容导出为PDF.
但是,Jupyter Notebook自带的File -> Download as -> PDF via Latex,需要Pandoc和XeLatex支持,否则会出现错误.

以下是Windows下的操作步骤
不在意非得用PDF via Latex可以直接去看最后一种方法

安装Pandoc和XeLatex

1.安装Pandoc
Pandoc是一个可以方便地对不同格式文档进行转换的包,你可以通过在pip install pandoc很方便的获取它,或者你可以在官网下载
事实上,如果你是通过Anaconda安装的Jupyter Notebook的话,Pandoc本身已经被集成了,因此你并不需要重新安装.
2.安装MikTex
MikTex是Windows下常见的LaTex支持(当然你也可以在Mac或者Linux上安装).
MikTex官网下载安装它.
注意,为了让Jupyter Notebook能够使用MikTex,你必须将它添加到PATH里.

也就是安装目录的下的\miktex\bin\x64(当然32位版的就是\x86)

安装之后在cmd测试一下xelatex能否使用

中文支持

因为默认模板的问题,通过Download as->PDF via Latex直接导出的文档会缺失中文,可以通过以下方法解决

  • 导出为.tex再转化为PDF
    1. 在网页中选择File ->Download as -> LaTex
    2. 修改tex,增加中文支持
    在\documentclass{article}后面插入
       \usepackage{fontspec, xunicode, xltxtra}
       \setmainfont{Microsoft YaHei}
    
    3. 在cmd下通过`latex`命令生成PDF
    

这种方法可能会存在换行错误,而且需要手动调整图片.

  • 修改默认模板
    1.在Anaconda的安装目录下找到lib/python3.6/site-packages/nbconvert/templates/latex/中的article.tplx
    打开后修改为
      ((* block docclass *))
      \documentclass[11pt]{article}
      \usepackage{xeCJK} %引入之前安装的xecjk包
      ((* endblock docclass *))

用HTML导出(推荐)

通过上面两种方法,可以成功通过Latex导出PDF,但是,这样导出的文档对于Markdown等的格式支持不是很好.
此外,导出为HTML不需要其他依赖,并且对中文支持也很好.
这是网页中的Markdown效果

这是导出后的PDF

因此,为了保留原有的格式,可以先导出为HTML,再用浏览器打印为PDF.
这是导出后HTML的效果

选择打印机为Microsoft Print to PDF

注意!这里一定要将页边距设置为无,否则会出现排版错误.

打印出PDF的效果

可以看到效果还是不错的.

参考

Jupyter Notebook PDF输出的中文支持
jupyter notebook导出pdf并支持中文


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM