jupyter notebook导出包含中文的PDF并正常显示p

2018-11-02  本文已影响0人  EAST4021

jupyter notebook默认是无法导出包含中文的pdf文件的,并且对于pandas的表格也不能很好的支持。需要安装pandoc、latex和修改模板文件才能正常显示。

接下来前两部分将介绍如何从jupyter notebook导出包含中文的PDF文件。第三部分介绍如何修改设置,使导出的文件中正常显示pandas的表格。

以下所有的操作在Ubuntu 18.04环境(WSL windows下的Linux子系统,支持windows10,推荐Windows10用户使用)和jupyter lab 0.34(jupyter notebook的下一代产品,基本操作与jupyter notebook类似)下测试成功,其他系统按照相关的需求修改即可。

1 安装依赖

依赖包括nbconvertpandoclatex,安装方法参考:官方文档

  1. 安装nbconvert

    pip install nbconvert
    # OR
    conda install nbconvert
    
  2. 安装pandoc

    sudo apt-get install pandoc
    

    其他系统的安装方法参考官方网站

  3. 安装latex

    sudo apt-get install texlive-xetex
    sudo apt-get install latex-cjk-all  # 对中文的支持包
    

    其他系统的安装(没有测试latex-cjk-al包的安装)

2 导出PDF

有两种方法可以导出包含中文的PDF文件,一是:通过latex文件转换(2.1节);二是:修改nbconvert的模板文件(2.2节)

2.1 通过latex文件转换

导出为LaTex文件,然后修改latex文件并编译成pdf,步骤如下:

  1. 导出LaTex文件
jupyter notebook导出latex
  1. 修改Latex文件

    在最后一行documentclass下方添加如下代码

    \usepackage{fontspec}
    \usepackage{xeCJK} 
    \setCJKmainfont[BoldFont=SimHei]{SimSun}
    \setCJKmonofont{SimSun}% 设置缺省中文字体
    
  2. 编译

    输入如下命令进行编译

    xelatex filename
    

编译成功之后即可输出正常的PDF文件

2.2 修改nbconvert的模板文件使中文正常显示(推荐)

除了上述通过latex文件转换为正常的PDF之外,更推荐的方法是通过修改nbconvert的模板文件来使jupyter notebook可以正常的导出PDF文件。具体的步骤如下:

2.2.1 修改模板文件

nbconvert的模板文件位于python_install_path/site-packages/nbconvert/templates/latex/文件夹下。

1 修改模板文件使其正常显示中文

修改模板文件下的:base.tplx。在block packages的最后添加如下内容

\usepackage{fontspec}
\usepackage{xeCJK} 
\setCJKmainfont[BoldFont=SimHei]{SimSun}
\setCJKmonofont{SimSun}% 设置缺省中文字体

位置如图所示

修改base.tplx文件.png

2 修改模板文件使其正常显示中文标题

导出pdf文件的标题默认是获取.ipynb文件的文件名,默认情况下,当文件名是中文的时候,pdf文件是无法正常显示标题的(显示为几个问号),需要更改文件模板后才能正常显示。同样修改文件base.tplx。修改block title下的内容,删除| ascii_only,具体如下图所示

修改后 修改前
2.2.2 导出PDF文件

最后直接在jupyter notebook中导出PDF即可

jupyter-notebook导出pdf.png

3 在PDF中正常显示pandas表格

默认情况下jupyter notebook中的pandas表格导出为pdf后不会正常显示,如下图所示:

默认情况下jupyter notebook导出的表格样式.png

需要设置pandas的展示格式,设置的代码如下:

pd.options.display.latex.repr = True

更改之后导出的pdf文件中的pandas表格显示如下:

给该配置之后导出的表格样式

更多pandas的设置参考这个网址

上一篇下一篇

猜你喜欢

热点阅读