jupyter notebook默認(rèn)是無(wú)法導(dǎo)出包含中文的pdf文件的饭入,并且對(duì)于pandas的表格也不能很好的支持。需要安裝pandoc谐丢、latex和修改模板文件才能正常顯示蚓让。
接下來(lái)前兩部分將介紹如何從jupyter notebook導(dǎo)出包含中文的PDF文件讥珍。第三部分介紹如何修改設(shè)置,使導(dǎo)出的文件中正常顯示pandas的表格趟卸。
以下所有的操作在Ubuntu 18.04環(huán)境(WSL windows下的Linux子系統(tǒng)氏义,支持windows10,推薦Windows10用戶使用)和jupyter lab 0.34(jupyter notebook的下一代產(chǎn)品惯悠,基本操作與jupyter notebook類似)下測(cè)試成功,其他系統(tǒng)按照相關(guān)的需求修改即可饶囚。
1 安裝依賴
依賴包括nbconvert
鸠补、pandoc
和latex
,安裝方法參考:官方文檔
-
安裝nbconvert
pip install nbconvert # OR conda install nbconvert
-
安裝pandoc
sudo apt-get install pandoc
其他系統(tǒng)的安裝方法參考官方網(wǎng)站
-
安裝latex
sudo apt-get install texlive-xetex sudo apt-get install latex-cjk-all # 對(duì)中文的支持包
其他系統(tǒng)的安裝(沒(méi)有測(cè)試latex-cjk-al包的安裝)
2 導(dǎo)出PDF
有兩種方法可以導(dǎo)出包含中文的PDF文件规惰,一是:通過(guò)latex文件轉(zhuǎn)換(2.1節(jié))泉蝌;二是:修改nbconvert的模板文件(2.2節(jié))
2.1 通過(guò)latex文件轉(zhuǎn)換
導(dǎo)出為L(zhǎng)aTex文件,然后修改latex文件并編譯成pdf勋陪,步驟如下:
- 導(dǎo)出LaTex文件
-
修改Latex文件
在最后一行documentclass下方添加如下代碼
\usepackage{fontspec} \usepackage{xeCJK} \setCJKmainfont[BoldFont=SimHei]{SimSun} \setCJKmonofont{SimSun}% 設(shè)置缺省中文字體
-
編譯
輸入如下命令進(jìn)行編譯
xelatex filename
編譯成功之后即可輸出正常的PDF文件
2.2 修改nbconvert的模板文件使中文正常顯示(推薦)
除了上述通過(guò)latex文件轉(zhuǎn)換為正常的PDF之外诅愚,更推薦的方法是通過(guò)修改nbconvert的模板文件來(lái)使jupyter notebook可以正常的導(dǎo)出PDF文件。具體的步驟如下:
2.2.1 修改模板文件
nbconvert的模板文件位于python_install_path/site-packages/nbconvert/templates/latex/
文件夾下违孝。
1 修改模板文件使其正常顯示中文
修改模板文件下的:base.tplx
。在block packages的最后添加如下內(nèi)容
\usepackage{fontspec}
\usepackage{xeCJK}
\setCJKmainfont[BoldFont=SimHei]{SimSun}
\setCJKmonofont{SimSun}% 設(shè)置缺省中文字體
位置如圖所示
2 修改模板文件使其正常顯示中文標(biāo)題
導(dǎo)出pdf文件的標(biāo)題默認(rèn)是獲取.ipynb
文件的文件名喇喉,默認(rèn)情況下校坑,當(dāng)文件名是中文的時(shí)候千诬,pdf文件是無(wú)法正常顯示標(biāo)題的(顯示為幾個(gè)問(wèn)號(hào))膏斤,需要更改文件模板后才能正常顯示。同樣修改文件base.tplx
掸绞。修改block title下的內(nèi)容耕捞,刪除| ascii_only
,具體如下圖所示
2.2.2 導(dǎo)出PDF文件
最后直接在jupyter notebook中導(dǎo)出PDF即可
3 在PDF中正常顯示pandas表格
默認(rèn)情況下jupyter notebook中的pandas表格導(dǎo)出為pdf后不會(huì)正常顯示,如下圖所示:
需要設(shè)置pandas的展示格式振愿,設(shè)置的代碼如下:
pd.options.display.latex.repr = True
更改之后導(dǎo)出的pdf文件中的pandas表格顯示如下:
更多pandas的設(shè)置參考這個(gè)網(wǎng)址