这个问题在这里已有答案:
我有一个带有大量数字和文字的大笔记本。我想将其转换为html文件。但是,我不想导出代码。我使用以下命令
ipython nbconvert --to html notebook.ipynb
但是这个选项也会导出代码。有没有办法将笔记本转换为没有代码的HTML?
我发现this 文章有趣,它解释了如何删除输入列:
您只需要在与要转换的笔记本相同的目录中创建名为“hidecode.tplx”的模板文件,并在其中添加这些行:
((*- extends 'article.tplx' -*))
((* block input_group *))
((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
((( super() )))
((*- endif -*))
((* endblock input_group *))
运行此命令后,它将使用pdfLatex通过latex转换为PDF格式的笔记本:
jupyter nbconvert --to pdf --template hidecode Example.ipynb
或者如果要编辑,可以将其转换为.tex文档,并使用pdfLatex将其放入pdf中:
jupyter nbconvert --to latex --template hidecode Example.ipynb
编辑2018年9月:ipython nbconvert
已被弃用。它将被jupyter nbconvert
取代:所以我们用ipython
替换命令jupyter
我在SO中寻找同样的问题,最后以一种非常直接的方式:
假设使用Firefox(57)+ Win7
F12
激活浏览器控制台document.querySelectorAll("div.input").forEach(function(a){a.remove()})
right mouse button
并选择“保存页面为”并保存“完整页面”(不是单页)。如果您不使用Firefox或Windows,请调整以上3-6步骤。
您可以将此css添加到页面,然后从浏览器打印到PDF。请注意,代码只是隐藏,而不是删除。
div.output_prompt { visibility: hidden; }
*{ font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif !important }
.input,#header { display: none; }
要确保删除代码,您应该使用类似的东西
$(".input").remove()
据我所知,没有办法通过乳胶生成不包含代码的PDF。虽然有一个jupyter笔记本扩展程序,但它会很棒...
nbconvert
使用模板将笔记本的JSON转换为文档;例如,在nbconvert附带的markdown模板中,markdown.tpl
:
{% block input %}
{% if nb.metadata.language_info %}{{ nb.metadata.language_info.name }}{% endif %}
{{ cell.source}}
{% endblock input %}
它在输出中打印每个单元格的源。如果删除{{ cell.source}}
,则不会打印出单元格源。 HTML和Latex模板中也有相应的块。
更好的是,制作你自己的模板,完全符合你的要求:)
作为this answer的概括,可以从多个位置访问hidecode模板:
user_name
更改为您的用户名):
cd /home/<user_name>/.jupyter
jupyter_nbconvert_config.py
。.py
文件(将user_name
更改为您的用户名):
c = get_config()
c.TemplateExporter.template_path = ['.', "/home/<user_name>/.jupyter" ]
c.LatexExporter.template_path = ['.', "/home/<user_name>/.jupyter"]
hidecode.tplx
或hidecode.tpl
的模板文件:
((*- extends 'article.tplx' -*))
((* block input_group *))
((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
((( super() )))
((*- endif -*))
((* endblock input_group *))
.ipynb
文件代码的PDF(将file_name
更改为您的文件名):
jupyter nbconvert --to pdf '<file_name>.ipynb' --template=hidecode.tpl
我是这样做的:我只是将我的笔记本下载为html。
然后运行此python脚本来转换该html文件,以便提示和代码单元格消失:
FILE = "/somewhere/myHTMLFile.html"
with open(FILE, 'r') as html_file:
content = html_file.read()
# Get rid off prompts and source code
content = content.replace("div.input_area {","div.input_area {\n\tdisplay: none;")
content = content.replace(".prompt {",".prompt {\n\tdisplay: none;")
f = open(FILE, 'w')
f.write(content)
f.close()
该脚本基本上为类'prompt'或'input_area'的所有div添加了CSS'display:none'属性。