将ipynb文件转换为pdf
英文
1.安装python或者安装miniconda(带有python)
2.安装MiKTeX :https://miktex.org/download
3.利用conda命令安装 Jupyter
运行:
jupyter notebook
会将当前目录下的文件加载到浏览器本地网站目录下(确保.ipynb文件也在当前目录下),然后在网站上点开如00.ipynb。
但是上面的方式只能保存英文,中文好像不可以。
中文
下面我们使用文献1中的方法,当然也要确保上面的都安装好。
ipynb2pdf.py:
# coding:utf-8
import sys
import os
import re
import shutil
notebook = sys.argv[1]
texFile = notebook.replace(".ipynb",".tex")
# 1.convert .ipynb to latex file .tex
# 将ipynb文件转为tex文件
print "1. convert " + notebook + " to " + texFile
print "------
"
os.system(r"jupyter nbconvert --to latex " + notebook)
print "convert over"
# 2. add Chinese support by adding the string below
# 加入引用的包使支持中文(直接转换中文会丢失)
# usepackage{fontspec, xunicode, xltxtra}
# setmainfont{Microsoft YaHei}
# usepackage{ctex}
print "2. add Chinese support to .tex file"
print "------"
file = open(texFile,"r")
str_file = file.read()
strinfo = re.compile("(documentclass[dD]+{article})") #查找的字符line0
m=re.findall(strinfo,str_file)
if len(m) == 0:
print r"can not find documentclass[**pt]{article}"
sys.exit(1)
str_file = strinfo.sub("\1
\usepackage{fontspec, xunicode, xltxtra}
\setmainfont{Microsoft YaHei}
\usepackage{ctex}",str_file) # 替换的字符line1
file.close()
file = open(texFile,"w")
file.write(str_file)
file.close()
print "add Chinese support successed"
# 3. convert .tex to .pdf by xelatex
# 使用xelatex命令编译.tex文件得到pdf
print "3. convert tex to pdf"
print "------"
os.system("xelatex " + texFile)
print "convert pdf successed"
# 4. delete the auxiliary files
# 清理生成的中间文件
# change there if latex file is needed
print "4. delete auxiliary files"
print "------"
os.remove(notebook.replace(".ipynb",".aux"))
os.remove(notebook.replace(".ipynb",".log"))
os.remove(notebook.replace(".ipynb",".out"))
# change there if latex file is needed
os.remove(notebook.replace(".ipynb",".tex"))
if os.path.isdir(notebook.replace(".ipynb","_files")):
shutil.rmtree(notebook.replace(".ipynb","_files"))
print "delete auxiliary files successed"
将上面的文件ipynb2pdf.py拷贝到python.exe文件所在目录,同时需要转换的00.ipynb也在此目录(我们用的相对路径),利用下面的指令:
python ipynb2pdf.py 00.ipynb
此过程MiKTeX可能会自动下载所需要的包,最后可以在同目录下生成00.pdf文件。
手动将.ipynb 转换为latex,然后再转换为pdf
利用上面的方法转换的pdf格式是默认的,例如是A4大小,有些代码可能显示不出来,我们需要将纸张的大小设置为A3的,但是自己又不会修改上面的代码,因此可以先转换为latex,然后利用texlive或者MiKTeX ,打开latex文件,自己在上面修改纸张的大小,如:
documentclass[11pt,a3paper]{article}
具体转换如下:
1.将.ipynb转换为.tex
jupyter-nbconvert --to latex 00.ipynb
编辑生成的.tex文件,添加支持中文:
usepackage{fontspec, xunicode, xltxtra}
setmainfont{Microsoft YaHei}
usepackage{ctex}
2 将.tex 转换为pdf
即利用texlive或者MiKTeX打开运行即可。
参考文献:
1.http://www.cnblogs.com/fly2wind/p/6294831.html [直接执行的python代码ipynb2pdf.py]
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。