jupyter notebook代碼導出_Jupyter Notebook導出包含中文的pdf_親測有效

Jupyter Notebook是很好的數據科學創作環境,是非常方便的Python代碼編輯器。jupyter提供導出的格式有.py、.html、.md、.pdf等。目前用其導出包含中文的pdf會遇到很多坑,網上也有一些解決方案,大致分為兩種方式,一是安裝 pandoc并不斷根據報錯提示安裝sty文件,不是很有效,另一種是安裝MiKTeX并改LaTeX文件。本文主要講第二種方式。Jupyter Notebook支持的導出格式

從效果來看,網頁中notebook的渲染是最好看的,導出的html對代碼和超鏈接失真嚴重。在網頁上點Download as -> PDF via LaTex的時候先是說缺少Pandoc庫,于是pip install pandoc,之后不再說缺少這個庫了,而是

nbconvert failed: pdflatex not found on PATH 或者 nbconvert failed: PDF creating failed, captured latex output。查了一些資料后改用命令行,要避免'xelatex' 不是內部或外部命令,也不是可運行的程序或批處理文件,需要先安裝MiKTeX,在其官網下載后,Windows版一路next安裝就行,安裝包有190MB,安裝過程還是耗費些時間的。安裝過程中其實就在自動地安裝一些sty模塊了,簡化了自己安裝的步驟。安裝MiKTeX的部分過程

下載安裝完成之后的步驟是:

1, ipynb文件編譯為tex

在命令行中定位到要轉換的jupyter文件的路徑下,輸入

jupyter nbconvert --to latex yourNotebookName.ipynb編譯ipynb文件為LaTeX文件

在文件目錄下就可以看到一個叫yourNotebookName.tex的LaTeX文件了。

2, 手動編輯latex文件

為了能支持輸出中文,需要改一下tex文件,在編輯器(我用的是Notepad++)打開剛才生成的LaTeX文件,

在\documentclass{article}(沒有這一句就在\documentclass[11pt]{ctexart} 的后面插入下面的語句)后面插入

\usepackage{fontspec, xunicode, xltxtra}

\setmainfont{Microsoft YaHei}

注意的是,目前(2019年8月)下載的MiKTeX 通過上面語句編譯生成的tex會缺少一句\usepackage{ctex} ,所以如果在\setmainfont{Microsoft YaHei}缺了對ctex的引用的話,就需要加上 \usepackage{ctex} 。修改latex文件

3, 轉LaTex為PDF

隨后在命令行下輸入:(我演示文件用的是GeoCluster.tex)

xelatex yourNotebookName.tex命令行轉latex為pdf

如果之前沒有運行過xelatex,首次運行會安裝一些依賴文件,會慢一些,最后運行完畢:運行完xelatex命令

可以在文件夾下看到輸出的文件:文件夾下的輸出結果

其中:.ipynb 是我們的jupyter文件

.tex 是由jupyter notebook文件生成的

.pdf 是我們最后的目標文件由.tex文件生成

.log、.out、.aux是LaTex生成pdf的一些輸出和日志

總結一下,從jupyter notebook生成pdf文件需要的依賴項還是比較多的,Windows下安裝MiKTeX才能用xelatex命令。生成步驟是先把ipynb文件編譯為LaTex,然后為了支持中文修改一下lex文件,最后轉換為pdf文件。

最后效果如下,雖然還是比不上網頁端.ipynb的直接渲染效果,但比起導出的html等格式,更好地作為展示格式。生成pdf的效果

有可能跑xelatex yourNotebookName.tex會遇到如下問題:LaTeX里字體形狀不符合要求,會改為默認字體,于是中文全部消失了,這種情況需要加上ctex的支持。運行提示LaTeX里字體形狀不符合要求增加對ctex的支持

之后就正常導出包含中文的pdf文件了。

另外從ipynb文件變成pdf文件還可以采用的方式有:打開ipynb文件后在瀏覽器直接選擇打印;

導出markdown在Typora軟件中選擇導出為PDF;

這三種方式生成的PDF效果對比如下圖:

可看出,文中這種導出LaTeX再變成PDF是很實用的。

注:2,查了一下ctex的資料:CTeX 中文套裝在 MiKTeX 的基礎上增加了對中文的完整支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453840.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端之使用 POST 提交數據并跳轉

GET 方式 window.location.href是我們常用來在js中實現頁面跳轉的方法,這是使用get方式發送請求,示例如下 window.location.href url;優點是簡單易用,缺點是如果有參數的話,參數會暴露在url地址中,這降低了系統的安…

cef js返回c++的代碼_CEF3開發者系列之外篇——IE中JS與C++交互

使用IE內核開發客戶端產品,系統和前端頁面之間的交互,通常給開發和維護帶來很大的便利性。但操作系統和前端之間的交互卻是比較復雜的。具體來說就是腳本語言和編譯語言的交互。在IE內核中html和css雖然不兼容,但是IE編程接口是完全一樣的,這得益于微軟的…

多線程編程指南 part 2

多線程編程指南Sun Microsystems, Inc.4150 Network CircleSanta Clara, CA95054U.S.A.文件號碼819–7051–102006 年10 月版權所有2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA95054 U.S.A. 保留所有權利。本文檔及其相關產品的使用、復制、分發和反編譯…

00030_ArrayList集合

1、數組可以保存多個元素,但在某些情況下無法確定到底要保存多少個元素,此時數組將不再適用,因為數組的長度不可變 2、JDK中提供了一系列特殊的類,這些類可以存儲任意類型的元素,并且長度可變,統稱為集合 3…

1.3tf的varible\labelencoder

1.tf的varible變量 import tensorflow as tf #定義變量--這里是計數的變量 statetf.Variable(0,namecounter) print (state.name) #輸出變量值 onetf.constant(1) #常量new_valuetf.add(state,one) updatetf.assign(state,new_value)#初始化所有變量 inittf.initialize_all_var…

kafka 日志相關配置

日志目錄 ${kafka.logs.dir}/server.log :服務器日志${kafka.logs.dir}/state-change.log:狀態變化日志${kafka.logs.dir}/kafka-request.log:請求處理日志${kafka.logs.dir}/log-cleaner.log:日志清理${kafka.logs.dir}/control…

linux mc服務器 mod_如何在linux搭建MC服務器

摘要:前言Q:為什么要用linux搭建MC服務器?A:因為linux系統占用率低,跑服務器效果非常好Q:看不懂linux ssh,后期自己無力運維怎么辦A:沒關系,這個教程是通過安裝BT...前言…

flask-SQLAlchemy 使用 session.commit() 處理異常回滾

最為原始的try/except辦法,多次插入數據就要寫多次,很麻煩,使用python原生的contextlib.contextmanager簡化代碼! try:user_db User(emailself.email, nicknameself.nickname, passwordself.password)db.session.add(user_db)#所…

小米機器人清理主刷和軸承_掃地機主刷怎樣更換

原標題:掃地機主刷怎樣更換隨著電動掃地機逐漸取代手動清潔,電動掃地機的工作量不斷增加,從而導致主刷磨損更加嚴重,并增加了主刷更換的次數。因此,偉頓在這里告訴大家掃地機主刷怎樣更換:1 .首先&#xff…

多線程編程指南

1. 多線程編程指南1--線程基礎 線程編程指南1--線程基礎 Wednesday, 29. March 2006, 11:48:45 多線程 本文出自:BBS水木清華站 作者:Mccartney (coolcat) (2002-01-29 20:25:25) multithreading可以被翻譯成多線程控制。與傳統的UNIX不同,一個傳統 的UNIX進…

路由器和貓的區別

路由器和貓的區別 網絡在我們現在生活中必不可少,我們鏈接互聯網經常需要用到貓和路由器,但是依然有很多菜鳥根本不知道什么是貓什么是路由器,至于貓和路由器怎么使用就更不知道了,下面給大家詳細的講解下路由器和貓的區別。 路由器和貓的用途和鏈接位置不一樣,如下圖: 路由器:…

Docker 精通之 docker-compose

1、Docker-compose簡介 1.1、ocker-compose簡介 Docker-Compose項目是Docker官方的開源項目,負責實現對Docker容器集群的快速編排。   Docker-Compose將所管理的容器分為三層,分別是工程(project),服務&#xff08…

json數據格式 穗康碼_Json數據格式

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。JSON采用完全獨立于語言的文本格式,這些特性使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JSON 比 XML 更小、更快,更易解析。JSON建構于兩種結…

Linux 系統版本查詢

顯示Linux版本信息輸入"cat /proc/version",說明正在運行的內核版本。輸入"cat /etc/issue", 顯示的是發行版本信息。輸入"lsb_release -a ",可對多個linux版本適用。輸入"uname -a ",可顯示電腦以及操作系統的相關信息。轉載于:https…

kafka 命令行命令大全

kafka 腳本 connect-distributed.sh connect-mirror-maker.sh connect-standalone.sh kafka-acls.sh kafka-broker-api-versions.sh kafka-configs.sh kafka-console-consumer.sh kafka-console-producer.sh kafka-consumer-groups.sh kafka-consumer-perf-test.sh kafka-dele…

kotlin將對象轉換為map_Kotlin程序將哈希映射(HashMap)轉換為列表(List)

Kotlin程序將哈希映射(HashMap)轉換為列表(List)在此程序中,您將學習在Kotlin中將map轉換為列表的不同方法。示例:將map轉換為列表示例import java.util.ArrayListimport java.util.HashMapfun main(args: Array) {val map HashMap()map.put(1, "a…

零元學Expression Blend 4 - Chapter 4元件重復運用的觀念

零元學Expression Blend 4 - Chapter 4元件重復運用的觀念 原文:零元學Expression Blend 4 - Chapter 4元件重復運用的觀念本章將教大家Blend元件重復運用的觀念,這在Silverlight設計中是非常重要的,另外加碼贈送漸層工具(Gradient Tool)。 ? 本章將教…

Python 內置模塊之 ConfigParser - 解析 ini 文件

ini配置文件是被configParser直接解析然后再加載的,如果只是修改配置文件,并不會改變已經加載的配置 INI文件結構簡單描述 INI文件就是擴展名為“ini”的文件。在Windows系統中,INI文件是很多,最重要的就是“System.ini”、“Sy…

電腦老是彈出vrvedp_m_出現三個可疑進程vrvedp_m.exe?vrvrf_c.exe?vrvsafec.exe

滿意答案 你機器里裝了北信源的DeviceRegist軟件,這個軟件不是殺毒軟件或者防毒軟件,而是一個遠程桌面管理軟件。這類軟件其實和木馬程序原理上一樣,只不過是正規軟件公司開發的,但是流氓程度不容小覷,即使在安全模式下也會加載vrvrf_c.exe,vrvedp_m.exe,vrvsafec.exe,wat…

音視頻編解碼 文件格式 協議內容詳解

編解碼學習筆記(一):基本概念 媒體業務是網絡的主要業務之間。尤其移動互聯網業務的興起,在運營商和應用開發商中,媒體業務份量極重,其中媒體的編解碼服務涉及需求分析、應用開發、釋放license收費等等。最…