当前位置:首页 » 《关于电脑》 » 正文

【python】jupyter notebook导出pdf和pdf不显示中文问题

2 人参与  2024年04月14日 19:24  分类 : 《关于电脑》  评论

点击全文阅读


文章目录

写在前面1. 使用jupyter notebook导出pdf1.1 安装`Pandoc`1.2 安装`MiKTex`1.3 示例导出pdf 2. 中文显示问题2.1 显示中文问题示例2.2 解决办法1:修改tex2.3 解决办法2:修改内置文件 3. 插入.svg图问题3.1 报错描述3.2 解决办法

写在前面

使用jupyter notebook导出pdf时,出现了一些问题:

1)会报错,缺少安装包;

2)没有报错并且生成了pdf,但是只显示英文,不显示中文;

3)插入svg图片问题;

下面是给出了一些网搜后适用自己的解决办法。

1. 使用jupyter notebook导出pdf

导出pdf步骤:File-> Download as -> PDF via LaTex(.pdf)

在这里插入图片描述

出现报错没有Pandoc

jupyter notebook nbconvert failed: Pandoc wasn't found. Please check that pandoc is installed

报错说明:转换失败,原因是没有找到Pandoc

1.1 安装Pandoc

Pandoc官网下载地址: https://pandoc.org/installing.html

下载安装包github地址:https://github.com/jgm/pandoc/releases/tag/3.1.6.2
在这里插入图片描述

gitcode的镜像也有:https://gitcode.net/mirrors/jgm/pandoc/-/releases/3.1.6.1?spm=1033.2243.3001.5876
在这里插入图片描述
下载pandoc后根据提示正常安装即可。

1.2 安装MiKTex

如果导出pdf通过LaTex,还需要下载MiKTex: https://miktex.org/download
在这里插入图片描述
下载MiKtex后根据提示正常安装即可。

两个包(Pandoc,MiKTex)都安装完成后,退出并重启jupyter notebook后才生效。并且,在重启后在导出pdf过程中,会自动安装一些依赖包,根据提示点击安装即可。

注:期间想通过HTML导出pdf,还安装过pip install nbconvert(不过,PDF via. HTML还是报错,先忽略)。

1.3 示例导出pdf

Jupyter编辑示例:
在这里插入图片描述

导出的pdf示例:
在这里插入图片描述

2. 中文显示问题

如果jupyter notebook编辑的内容都是英文,安装上面2个包并安装依赖包后直接导出是没有问题的。如果内容包含中文,则只显示英文忽略中文。

2.1 显示中文问题示例

Jupyter编辑内容包含中文示例:
在这里插入图片描述

包含中文导出pdf示例:只输出英文内容,忽略中文。
在这里插入图片描述

2.2 解决办法1:修改tex

需要以下三步:

(1)将.ipynb文件编译为.tex格式:

jupyter nbconvert --to latex ${ipynb_file}# 示例:jupyter nbconvert --to latex jupy2pdf-中文.ipynb

执行完成后,会生成文件jupy2pdf-中文.tex

(2) 修改tex文件:

在tex文件的中加入加载包命令:

\usepackage{fontspec, xunicode, xltxtra}\setmainfont{Microsoft YaHei}\usepackage{ctex}

在这里插入图片描述

(3) 使用 MiKTeX 生成pdf:

执行如下命令可生成pdf:

xelatex ${tex_file}# 示例:xelatex jupy2pdf-中文.tex 

其中,命令xelatex就是前面下载的MiKTex软件,对应下载路径:

/YourDir/MiKTeX/miktex/bin/x64/xelatex

执行完成后,会生成相应的中间文件:

jupy2pdf-中文.ipynb  # 原文件jupy2pdf-中文.tex  # tex编辑文件jupy2pdf-中文.auxjupy2pdf-中文.logjupy2pdf-中文.outjupy2pdf-中文.pdf  # 目标pdf文件

示例生成的目标pdf文件:jupy2pdf-中文.pdf
在这里插入图片描述

2.3 解决办法2:修改内置文件

"解决方法1:修改tex"虽然解决了中文显示问题,但是每次需要手动添加相应的中文包才能解决。

(1)先是参考了一篇博客,需要在Python安装包下:

Python\Lib\site-packages\nbconvert\templates\latex 

找到 base.tplx 文件并进行修改。

笔者有nbcovert安装目录,但是没有找到 latex目录(更没有 base.tplx 文件),可能这种方法可以从根本上解决并直接导出pdf(而不需要每次手动在tex文件中手动添加)。

(2)其他地方找到了解决办法

参考: https://www.zhihu.com/question/427092422

与上面修改文件的路不同,修改的是jupyter目录下的文件:

Python\share\jupyter\nbconvert\templates\latex\index.tex.j2

就是把 block doclass下的 article 改成 ctexart
在这里插入图片描述

示例:从jupyter导出pdf显示中文 (章节名称居中了?)

在这里插入图片描述

(3)章节名称居中问题调整

类似地,修改内置文件:

Python\share\jupyter\nbconvert\templates\latex\index.tex.j2

index.tex.j2文件中增加如下命令:参考博客

\CTEXsetup[format={\Large\bfseries}]{section}

修改前后:
在这里插入图片描述

调整后pdf导出示例:
在这里插入图片描述

3. 插入.svg图问题

3.1 报错描述

如果想在pdf中显示高清图,可用.pdf格式的图(可通过.tex插入),也可使用svg(网页即可打开)。

(比如 在 https://www.drawio.com/ 这里画的流程图可导出多种格式)

而问题是,在jupyter notebook编辑时,无法插入一个pdf文件,所以想在ipynb插入图只能使用.svg格式的图了,插入方式同一般的图片插入:

![图命名](图路径)# 比如:![myfig](./abc.svg)

如果直接的ipynb页面执行 File-> Download as -> PDF via LaTex(.pdf),是会报错的。(并没有明确指出报错的步骤)
在这里插入图片描述

使用命令行执行:

jupyter nbconvert --to latex ./yourfile.ipynbxelatex yourfile.tex

也会报错:

! Undefined control sequence.l.695 \includesvg                 {abc.svg}

总之,可能是MiKTex不支持.svg格式,或者缺少一些包导致。

3.2 解决办法

放弃在ipynb中使用高清图,使用png/jpg等图片格式,导出则不受影响。

为了在ipynb和导出pdf都可显示高清图,当前的解决办法是:

需要svg格式和pdf格式文件都有的情况下:(只有一种格式的话,可用格式转化工具将svg<>pdf转换)

ipynb继续使用svg格式但是用xelatex导出pdf文件时,按如下步骤执行:
# 1) 将ipynb 编译为.tex格式jupyter nbconvert --to latex ./yourfile.ipynb# 2) 修改 .tex文件# 将:  \includesvg{yourfig.svg}# 改为: \includegraphics{yourfig.pdf}# 3) 再执行:xelatex ./yourfile.tex # 生成 yourfile.pdf 文件

此时的麻烦程度可能真的想直接在网页ctrl+p另存为pdf算了。。。

但是,如果编辑的文字或脚本不过分长还好,如果比较长或者要用滚动条显示的,直接ctrl+p得到的pdf显示的内容是不全的。


<完>

2023.08.23 -
2023.08.31 增加.svg图插入问题及解决


点击全文阅读


本文链接:http://zhangshiyu.com/post/95324.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • (此去经年无故人)南初陆南城:结局+番外精品选集起点章节+阅读即将发布预订
  • 沈凝夏叶晚怡附加完整在线阅读(归雁不栖故人枝)最近更新列表
  • 剧情人物是时初,白浩雄的玄幻言情小说《召诸神,踏万界,天命帝女逆乾坤》,由网络作家&ldquo;海鸥&rdquo;所著,情节扣人心弦,本站TXT全本,欢迎阅读!本书共计381345字,185章节,:结局+番外免费品鉴:结局+番外评价五颗星
  • 凤青禾,江明远,***枢小说(别人修仙我捡漏,卷王们破防了)最近更新(凤青禾,江明远,***枢)整本无套路阅读
  • 薛梨小说无删减+后续(曾经亲情似草芥)畅享阅读
  • 沈南栀小说(穿越时空,我要修补时空裂缝)章节目录+起点章节(沈南栀)全篇清爽版在线
  • 未婚妻被巨蟒缠身,我该吃就吃该喝就喝前言+后续_阿豪林月周然后续+番外_小说后续在线阅读_无删减免费完结_
  • 陆骁,陆本初小说(陆骁,陆本初)(癫!睁眼穿成老太太挥鞭***逆子)前传+阅读全新作品预订
  • 姐姐含冤而死后冥王另娶,我杀穿整个地府在线阅读_阎罗殿殷红别提一口气完结_小说后续在线阅读_无删减免费完结_
  • (书荒必看)毒后重生:疯王的神医小娇妻沈清歌,萧绝:+后续热血十足
  • 重生后我和太监联手灭了敌国喻辰,林雪续集(重生后我和太监联手灭了敌国)终极反转(喻辰,林雪)全篇一口气阅读
  • 我不做灵媒后,自称灵媒摆渡人的养妹害怕了内容精选_苏晓霍老阿姐无广告_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1