一般情况下我们直接使用 JupyterLab 导出的 PDF 是无法显示中文的。
这是 JupyterLab 导出 PDF 的过程:
graph LR A["Jupyter Notebook (.ipynb)"] -->|nbconvert| B["LaTeX (.tex)"] B -->|XeLaTeX| C["PDF (.pdf)"]可以看到在导出过程中使用了 nbconvert
包,这个包会先将 .ipynb
文件转换为 .tex
文件,再由 XeLaTeX 将 .tex
文件转换为 PDF。
问题就出在中间的 .tex
文件。nbconvert
使用的 LaTeX 转换模板不支持中文,因此最后导出的 PDF 无法显示中文。我们需要新增一个支持中文的转换模板。
-
首先找到 Python 安装目录:
$ conda list nbconvert # packages in environment at /opt/homebrew/Caskroom/miniconda/base/envs/py311: # # Name Version Build Channel nbconvert 7.10.0 py311hca03da5_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
可以看到 Python 安装目录为
/opt/homebrew/Caskroom/miniconda/base/envs/py311
。cd /opt/homebrew/Caskroom/miniconda/base/envs/py311
-
进入 LaTeX 模板目录。
LaTeX 模板存放在 Python 安装目录下的
share/jupyter/nbconvert/templates/latex
处。cd share/jupyter/nbconvert/templates/latex