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

文章目录

  • 写在前面
  • 1. 使用jupyter notebook导出pdf
    • 1.1 安装`Pandoc`
    • 1.2 安装`MiKTex`
    • 1.3 示例导出pdf
  • 2. 中文显示问题
    • 2.1 显示中文问题示例
    • 2.2 解决办法1:修改tex
    • 2.3 解决办法2:修改内置文件

写在前面

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

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

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

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

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-中文.aux
    jupy2pdf-中文.log
    jupy2pdf-中文.out
    jupy2pdf-中文.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导出示例:
在这里插入图片描述


<完>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/84577.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文1500字从0到1搭建 Jenkins 自动化测试平台

Jenkins 自动化测试平台的作用 自动化构建平台的执行流程&#xff08;目标&#xff09;是&#xff1a; 我们将代码提交到代码托管工具上&#xff0c;如github、gitlab、gitee等。 1、Jenkins要能够检测到我们的提交。 2、Jenkins检测到提交后&#xff0c;要自动拉取代码&#x…

开源与区块链:去中心化的未来

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

git通过fork-merge request实现多人协同

一、问题 对于一个项目&#xff0c;如果需要多人协同开发&#xff0c;大家都在原始仓库中进行修改提交&#xff0c;经常会发生冲突&#xff0c;而且一不小心会把别人的代码内容覆盖掉。为了避免这样的问题&#xff0c;git提供了fork-merge request这样的协同方式。 二、仓库框…

深度学习4. 循环神经网络 – Recurrent Neural Network | RNN

目录 循环神经网络 – Recurrent Neural Network | RNN 为什么需要 RNN &#xff1f;独特价值是什么&#xff1f; RNN 的基本原理 RNN 的优化算法 RNN 到 LSTM – 长短期记忆网络 从 LSTM 到 GRU RNN 的应用和使用场景 总结 百度百科维基百科 循环神经网络 – Recurre…

Django(3)-创建第一个数据模型-ORM映射

数据库配置 根目录下settings.py 。这是个包含了 Django 项目设置的 Python 模块。 通常&#xff0c;这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库&#xff0c;或者只是想尝试下 Django&#xff0c;这是最简单的选择。Python 内置 SQLite&#xff0c;所以你无…

糟改押ong韵诗词,末三字改qiao ben zhong

题目给出诗词行的汉语拼音&#xff0c;糟改诗词押ong诗词行末三字“敲笨钟“。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff…

websocket和uni-app里使用websocket

一、HTTP是无状态协议 特点&#xff1a; 1、浏览器发送请求时&#xff0c;浏览器和服务器会建立一个连接。完成请求和响应。在http1.0之前&#xff0c;每次请求响应完毕后&#xff0c;会立即断开连接。在http1.1之后&#xff0c;当前网页的所有请求响应完毕后&#xff0c;才断…

springboot+mp完成简单案例

目录 1.框架搭建 2.前端搭建 3.后端编写 需求&#xff1a;完成简单的连表条件查询以及添加即可 1.框架搭建 1.创建springboot项目 2.相关依赖 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo…

数据库——Redis 没有使用多线程?为什么不使用多线程?

文章目录 Redis6.0 之后为何引入了多线程&#xff1f; 虽然说 Redis 是单线程模型&#xff0c;但是&#xff0c; 实际上&#xff0c;Redis 在 4.0 之后的版本中就已经加入了对多线程的支持。 不过&#xff0c;Redis 4.0 增加的多线程主要是针对一些大键值对的删除操作的命令&a…

00-音视频-概述

有很多场合会使用的音视频&#xff0c;比如安防、视频闸机、影音播放器、视频通话&#xff0c;短视频等等。 从摄像头采集到用户观看&#xff0c;这中间涉及到了很多技术。 用户一般观看的高清视频1080P30帧。若按24位RGB对视频进行存储&#xff0c;一个60分钟视频所占空间 …

大语言模型微调实践——LoRA 微调细节

1. 引言 近年来人工智能领域不断进步&#xff0c;大语言模型的崛起引领了自然语言处理的革命。这些参数量巨大的预训练模型&#xff0c;凭借其在大规模数据上学习到的丰富语言表示&#xff0c;为我们带来了前所未有的文本理解和生成能力。然而&#xff0c;要使这些通用模型在特…

二叉树的层序遍历及完全二叉树的判断

文章目录 1.二叉树层序遍历 2.完全二叉树的判断 文章内容 1.二叉树层序遍历 二叉树的层序遍历需要一个队列来帮助实现。 我们在队列中存储的是节点的地址&#xff0c;所以我们要对队列结构体的数据域重定义&#xff0c; 以上代码 从逻辑上来讲就是1入队&#xff0c;1出队&am…