我有一个大笔记本,里面有很多数字和文字。我想将其转换为 html 文件。但是,我不想导出代码。我正在使用以下命令
ipython nbconvert --to html notebook.ipynb
但是这个选项也会导出代码。有没有办法在没有代码的情况下将笔记本转换为 html?
我有一个大笔记本,里面有很多数字和文字。我想将其转换为 html 文件。但是,我不想导出代码。我正在使用以下命令
ipython nbconvert --to html notebook.ipynb
但是这个选项也会导出代码。有没有办法在没有代码的情况下将笔记本转换为 html?
我发现这篇文章很有趣,它解释了如何删除输入列:
您必须在与要转换的笔记本相同的目录中创建一个名为“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
编辑 2021 年 2 月:( 这是我最好的答案,所以让我来处理)
在 @Mrule 评论之后添加 --no-input 标志将使其在没有模板的情况下工作......
jupyter nbconvert --to latex --no-input Example.ipynb
PS:如果您遇到问题,请说:
未找到与 tcolorbox.sty 相关的 LaTeX 错误
我在 SO 中寻找同样的问题,最后变成了一种非常直接的方式:
假设使用 Firefox(57) + Win7
F12
在控制台中运行以下命令:
document.querySelectorAll("div.input").forEach(function(a){a.remove()})
该代码删除所有输入 div DOM。然后right mouse button
选择“将页面另存为”并保存“完整页面”(不是单页)。
您将在 Windows 中获得一个包含相关文件夹的页面。通过压缩 html 页面使用技巧,然后提取以解除关联。文件夹没用。
现在它是一个没有代码的单个 html 页面。您可以重新分发它或将其打印为 PDF。
如果您使用的不是 Firefox 或 Windows,请调整以上 3-6 个步骤。
我是这样做的:我只是将我的笔记本下载为 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'属性。
作为这个答案的概括,因此可以从多个位置访问隐藏代码模板:
进入你的主目录:
cd ~/.jupyter
jupyter_nbconvert_config.py
在这个目录下创建。
将以下内容写入.py
文件(更改user_name
为您的用户名):
c = get_config()
c.TemplateExporter.template_path = ['.', "~/.jupyter" ]
c.LatexExporter.template_path = ['.', "~/.jupyter"]
在这个目录下创建一个模板文件,命名为hidecode.tplx
or 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
您可以将此 css 添加到您的页面,然后从浏览器打印成 PDF。请注意,代码只是隐藏,而不是删除。
div.output_prompt { visibility: hidden; }
*{ font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif !important }
.input,#header { display: none; }
为了确保您删除代码,您应该使用类似的东西
$(".input").remove()
据我所知,无法通过乳胶生成不包含代码的 PDF。拥有一个能够做到这一点的 jupyter notebook 扩展会很棒......
nbconvert
使用模板将 notebook 的 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 模板中也有相应的块。
更好的是,制作您自己的模板,完全符合您的要求 :)