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

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

作者: EAST4021 | 来源:发表于2018-11-02 16:33 被阅读0次

    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的设置参考这个网址

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/zkscxqtx.html