如何将Jupyter笔记本转换为学术论文格式?

时间:2018-03-19 20:02:46

标签: jupyter-notebook nbconvert

我有一个Jupyter笔记本,其中包含我想要放入学术论文(文本,方程式和情节)的所有内容,以及我想隐藏的代码。

是否存在以编程方式将笔记本转换为日记提交可接受的形式的方法?理想情况下,我想要knitr's functionality来创建学术风格的论文,但是对于Jupyter而不是R-focused工具。

我已经找到pandoc templates几种期刊(包括我想提交的期刊),但不清楚它与Jupyter的整合程度如何。

我还发现this描述了在纸质书写过程中使用Jupyter笔记本,但作者似乎只是用它来进行数据分析和生成图表;它也可能是一个标准的脚本。

如果尚未存在,那么为此任务制作可重复使用的工具有什么必要? nbconvert自定义导出器是否足够,或者我是否需要完整的Jupyter扩展才能在笔记本界面中指定参考书目和绘图/表格位置?

1 个答案:

答案 0 :(得分:2)

将您的笔记本转换为降价,然后将pandoc与过滤器(pandoc crossref和pandoc citeproc)一起使用,即可正常工作。

您需要标题,部分,交叉引用,引文,编号,图形和带有字幕的表格… 这是一个有效的工作流程: 您可以先将笔记本转换为markdown,这可以使用nbconvert轻松完成:

jupyter nbconvert --to markdown --no-prompt your_notebook.ipynb

-无提示:如果您不想在手稿中使用,将有助于删除代码单元。您也可以在最终输出中不需要的降价单元格中使用hidden cells。 然后,您需要pandoc和两个过滤器pandoc-crossref和pandoc-citeproc。我正在使用Windows和Anaconda 3进行安装:

https://anaconda.org/conda-forge/pandoc

https://anaconda.org/conda-forge/pandoc-crossref

幸运的是,通过anaconda安装pandoc也会带来pandoc-citeproc。您需要与pandoc版本(当前为pandoc 2.5)兼容的pandoc-crossref。 因此,从conda安装时,您可以使用:

conda install -c conda-forge pandoc=2.5

然后您可以简单地运行:

conda install -c conda-forge pandoc-crossref

关键在于降价语法。您必须使用markdown语法编写笔记本,这在Jupiter笔记本中仍然是默认设置。有趣的示例是hereherehere also :)。 您还需要一个.bib格式的参考文件来管理引文。 然后只需运行以下命令:

pandoc -s your_notebook.md -o your_notebook.pdf -F pandoc-crossref -F pandoc-citeproc --bibliography=your_references.bib -f markdown 

您可以将整个笔记本变成精美的手稿

pandoc还有许多其他自定义选项:颜色链接,纸张尺寸,几何形状,数字部分…(请参阅pandoc –help)

因此,编写自定义的Jupiter导出器可以将这两个命令结合起来,并将笔记本作为手稿导出。

这里另一种有趣的方法https://github.com/chrisjsewell/ipypublish