宣布新的Jupyter书

2020-08-13 05:49:57

注意:此公告在Jupyter博客和可执行图书项目更新博客之间交叉发布。

Jupyter Book是一个开源项目,用于从包含计算内容的源材料构建漂亮的出版质量的图书、网站和文档。通过这篇文章,我们很高兴地宣布,Jupyter Book已经从头开始重新编写,使其更易于安装、使用更快,并且能够在您的图书中创建更复杂的发布内容。它现在得到了可执行图书项目(Executable Book Project)的支持,该项目是一个开放社区,为Jupyter生态系统内外的交互式和可执行文档构建开放源码工具。

这篇文章简要概述了Jupyter Book中的新功能,并就该项目的未来提供了一些背景知识。

❗❗木星图书仍处于测试阶段,所以情况总是在变化。我们希望您能就如何使项目更好提供反馈、想法和公关!❗❗。

新版的Jupyter Book给人的感觉会非常相似。然而,由于下面有新的Jupyter图书堆栈,它有很多新功能(稍后将详细介绍)。

新的Jupyter图书有以下主要功能(每个功能都有指向相关文档的链接):

Jupyter用✅编写出版质量的内容您可以用Jupyter markdown编写,也可以用带有发布功能的扩展风格的markdown编写。这包括对丰富语法的支持,例如引用和交叉引用、数学和方程式以及数字。

✅在Jupyter笔记本中写入内容这允许您在图书中包含代码和输出。您还可以完全以标记方式编写笔记本,以便在构建图书时执行。

✅为.ipynb和降价笔记本执行并缓存您的图书内容,执行代码并将最新输出插入到您的图书中。此外,还可以缓存和重用稍后使用的输出。

✅将笔记本输出插入到您的内容中在您构建文档时生成输出,并将它们与您的内容一起跨页面插入。

✅生成各种输出,包括单页和多页网站,以及PDF输出。

✅使用简单的命令行界面构建图书您可以使用一个命令快速生成图书,如下所示:jupyter-book build mybook/。

这些只是我们所做的主要改变中的一小部分。有关您可以做什么的更完整的想法,请查看Jupyter图书文档。

在接下来的几节中,我们将讨论一些你可能会注意到的木星之书中的主要变化。

Jupyter Book最大的增强是对myst Markdown语言的支持。Myst代表“明显结构化的文本”,是一种标记风格,它实现了Sphinx文档引擎的所有功能,允许您以标记形式编写科学出版物。它的灵感来自于RMarkdown和reStructiredText工具生态系统。你在狮身人面像可以做的任何事情,你也可以用myst来做。

Myst Markdown是Jupyter Markdown(AKA,CommonMark)的超集,这意味着Jupyter笔记本中的任何默认降价在Jupyter Book中都是有效的。如果你想在Markdown中加入额外的功能,比如引用、数字、参考文献等,那么你可以在你的内容中加入额外的myst Markdown语法。

例如,下面是如何在新的Jupyter书中包括引文的方法:

旧版本的Jupyter Book使用Python和Jekyll的组合来构建图书的HTML,而新版本的Jupyter Book完全使用Python。这意味着为您的图书构建HTML非常简单,如下所示:

此外,新的构建系统利用Jupyter Cache仅在代码更新时执行笔记本内容,并在构建时插入来自缓存的输出。这样可以避免重新执行未更改的代码,从而节省您的时间。

通过利用Sphinx,Jupyter Book将能够支持比HTML网站更复杂的输出。例如,我们目前正在通过HTML和LaTeX制作PDF输出的原型。这为Jupyter Book提供了更大的灵活性,可以为您的用例生成合适的图书。

您还可以在各个页面上运行Jupyter Book。这意味着您可以完全用Markdown编写单页内容(就像一篇科学文章)。

本质上最大的变化是Jupyter Book现在使用Sphinx文档引擎而不是Jekyll来构建图书。通过利用Sphinx生态系统,Jupyter Book可以更有效地构建在社区工具之上,并可以将组件回馈给更广泛的社区。

旧的Jupyter Book存储库不再是一个单一的存储库,而是被分成了几个模块化的工具。这些工具中的每一个都可以在您的Sphinx文档中单独使用,并且可以通过Jupyter Book将它们协调在一起:

用于Sphinx的myst markdown解析器允许您用Markdown编写功能齐全的Sphinx文档。

Myst-NB是用于Sphinx的.ipynb解析器,允许您在笔记本中使用myst Markdown。它还提供了在Sphinx中执行、缓存和插入Jupyter笔记本变量的工具。

Sphinx Book主题是Sphinx的一个漂亮的类似书籍的主题,它构建在PyData Sphinx主题之上。

Jupyter Cache允许您执行笔记本集合,并将其输出存储在散列数据库中。这使您可以缓存笔记本的输出,而无需将其包含在.ipynb文件本身中。

Sphinx-Thebe将您的“静态”HTML页面转换为包含由Binder内核远程运行的代码单元的交互式页面。

最后,Jupyter Book还支持越来越多的Sphinx扩展,比如sphinx-copy button、sphinx-togglebutton、sphinx-Comments和sphinx-panel。

我们将在将来编写一篇更以开发人员为中心的帖子,更详细地描述这些组件中的每一个。

Jupyter Book及其相关项目将继续作为可执行图书项目的一部分进行开发。Executable Book Project是一个利用Jupyter生态系统内外的计算内容为高质量科学出版物构建开源工具的社区。

如果您想了解有关Jupyter Book的更多信息或开始构建您自己的图书,请查看新的Jupyter Book文档。Jupyter Book仍处于测试阶段,并在不断改进,因此欢迎您的反馈和贡献。

如果有您想要查看的特定功能,打开一个问题或给一个预先存在的问题一个👍,它就会出现在功能请求排行榜上。

如果你想为这篇文章中列出的任何一个项目做贡献,我们非常鼓励你这样做!Executable Book项目(因此Jupyter Book)是作为一个开放项目运行的,欢迎其他人的贡献。

我们对新的Jupyter Book中的所有新功能和改进感到兴奋,并期待看到社区使用此堆栈创建的新书!