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并支持中文

Jupyter Notebook 导出PDF与Latex中文支持的更多相关文章

  1. 【原创】JavaFx程序解决Jupyter Notebook导出PDF不显示中文

    0.ATTENTION!!! JavaFx里是通过Java调用控制台执行的的jupyter和xelatex指令, 这些个指令需要在本地安装Jupyter和MikTeX之后才能正常在电脑上运行 1.[问 ...

  2. Jupyter Notebook PDF输出的中文支持

    Jupyter Notebook是什么 Jupyter Notebook是ipython Notebook 的升级.Jupyter能够将实时代码,公式,可视化图表以Cell的方式组织在一起,形成一个对 ...

  3. php导出pdf,dompdf中文字体乱码解决办法(特别是代码迁移引起的乱码)

    dompdf\lib\fonts\dompdf_font_family_cache.php记住这个文件里面存放的是字体生成的缓存,迁移时如果覆盖了这个文件会导致乱码而且很难找到出错的地方,相信我... ...

  4. latex中文支持ubuntu

    latex安装: sudo apt install texlive-full 中文字体安装: sudo apt-get install latex-cjk-all      字体包中包含bsmi,bk ...

  5. Redmine 甘特图导出 PDF 和 PNG 中文乱码问题

    Redmine使用了RMagick来处理图片,fpdf处理PDF,并在调用时设定了字体PDF中文字体 redmine 中关于PDF字体设置的代码 case pdf_encoding           ...

  6. Jupyter notebook 转 pdf [完整转换]

  7. jupyter notebook 目录配置、导出 tex 和 pdf 及中文支持

    环境:macbook pro, mactex, jupyter notebook, brew 安装pandoc从而支持格式转换为tex: brew install pandoc 修改tex artic ...

  8. Jupyter Notebook通过latex输出pdf

    主要步骤 1.将ipynb编译成tex ipython nbconvert --to latex Example.ipynb 2. 修改tex,增加中文支持 在\documentclass{artic ...

  9. jquery插件导出excel和pdf(解决中文乱码问题)

    参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...

随机推荐

  1. 基于 Angular Material 的 Data Grid 设计实现

    自 Extensions 组件库发布以来,Data Grid 成为了使用及咨询最多的组件.最开始 Data Grid 的设计非常简陋,经过一番重构,组件质量有了质的提升. Extensions 组件库 ...

  2. .NET中一些关键词的意义

    const关键字用于修改字段或局部变量的声明.它指定字段或局部变量的值是常数,不能被修改.例如: const int x = 0; public const double gravitationalC ...

  3. Java中栈和堆讲解

    之前对JVM中堆内存和栈内存都是一直半解,今天有空就好好整理一下,用作学习笔记. 包括Java程序在内,任何程序在运行时都是要开辟内存空间的.JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区 ...

  4. 洛谷 P3063 【[USACO12DEC]Milk Routing S】

    这道题可以暴力哒~ 我们枚举每一个出现过的容量,然后跑一次最短路,求延迟,在跑最短路的时候,如果遇到的某一个点,比我们当前枚举的那个点小,那么就直接不走这一个点,然后枚举完后,就能得到最大值了. 代码 ...

  5. js/ts/tsx读取excel表格中的日期格式转换

    const formatDate = (timestamp: number) => { const time = new Date((timestamp - 1) * 24 * 3600000 ...

  6. 错误记录——fail: Microsoft.AspNetCore.Server.Kestrel[13]

    fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HLPN4417RVEM", Request id &q ...

  7. css/html 空格,html空格符的显示、标示方式【html空格代码】

    在html里面空格的话,你直接敲打出来的空格是不可以的,下面将通过html和css中设置显示空格的实现总结: Html中空格 符号 编号 描述      不断行的空白(1个字符宽度), 不换行空格 全 ...

  8. 3dTiles 数据规范详解[3] 内嵌在瓦片文件中的两大数据表

    转载请声明出处:全网@秋意正寒 零.本篇前言 说实话,我很纠结是先介绍瓦片的二进制数据文件结构,还是先介绍这两个重要的表.思前想后,我决定还是先介绍这两个数据表. 因为这两个表不先给读者灌输,那么介绍 ...

  9. 读CSAPP第二章的收获

    一:一道很有意思的位运算题目:你只有两种操作 bis(x, y): 在y为1的每个位置上,将x的对应的位设为1bic(x, y): 在y为1的每个位置上,将x的对应的位设为0 简单的化简一下bis(x ...

  10. Dynamics CRM Performance Issue when CRM Forms Opening

    事情发生在Dynamics CRM 8.2.2版本,客户新升级到这个版本几个月的时间. 突然有一天,客户反映为什么我们打开CRM Form页面的时候loading的时间这么长呢?大概会需要5-15分钟 ...