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. CListBOX 用法

    ListBox的操作比较简单: 1添加数据 声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content. m_ListBox_Content.AddSt ...

  2. jupyter lab最强代码补全插件

    1 简介 提起kite相信不少朋友都有印象,它是一个功能非常强大的代码补全工具,目前可用于Python与javascript,为许多知名的编辑器譬如Vs Code.Pycharm提供对应的插件. 图1 ...

  3. Install fail! Error: EBUSY: resource busy or locked, rename

    https://stackoverflow.com/questions/36566236/npm-install-error-code-ebusy-errono-4082 关闭项目所在的文件夹,cmd ...

  4. 4 个好用的 Linux 监控工具

    下面是 Linux 下 4 个日常使用率非常高的监控工具,可以帮助我们准确快速的诊断系统问题. 1. iotop 如果你想知道某些进程使用了多少你宝贵的 I/O 资源,那么就使用 iotop 吧. i ...

  5. SpringMvc流程分析,简单源码分析

    SpringMvc的请求入口:web.xml中的DispatcherServlet <servlet> <servlet-name>springServlet</serv ...

  6. 洛谷 P1043 数字游戏 区间DP

    题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...

  7. mac篇---mac安装jupyter

    1.Jupyter搭建 pip install --user jupyter 如果是在python3中,则用如下命令: pip3 install --user jupyter 如下图所示: 2. Ju ...

  8. python读取EXCEL是去掉空白行和表头全部重命名

    当读取进来的表格如图所示,转换成图2. import pandas as pd # header:指定作为列名的行,默认0,即取第一行的值为列名.数据为列名行以下的数据:若数据不含列名, # 则设定 ...

  9. CCNA-Part5 - 传输层 ,TCP 为什么是三次握手?

    传输层 传输层主要的作用就是建立端到端的连接.比如电脑的微信的通信,就需要跨越多个网络设备(交换机和录取)再和微信的服务器建立连接. 传输层需要具有以下的特点: 会话的多复用:如电脑上开启的多个应用, ...

  10. YAML 语言教程与使用案例

    YAML语言教程与使用案例,如何编与读懂写YAML文件. YAML概要 YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写.在开发的这种 ...