8

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

有没有办法以编程方式将笔记本转换为期刊提交可接受的形式?理想情况下,我想要类似knitr's 的功能来创建学术风格的论文,但适用于 Jupyter 而不是专注于 R 的工具。

我找到了几本期刊的pandoc模板(包括我想投稿的期刊),但不清楚它与 Jupyter 的集成程度如何。

我还发现了这种在论文写作过程中使用 Jupyter notebooks 的描述,但作者似乎只是将它用于数据分析和生成图表;它也可能是一个标准脚本。

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

4

1 回答 1

5

将您的笔记本转换为 Markdown,然后使用带有过滤器(pandoc crossref 和 pandoc citeproc)的 pandoc 转换为 Word。

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

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

--no-prompt:如果您不想在手稿中使用,将有助于摆脱代码单元。您还可以在最终输出中不需要的降价单元格中使用隐藏单元格。然后你需要 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语法。你必须使用 Markdown 语法来编写你的笔记本,这在 Jupiter 笔记本中是默认的。有趣的例子在这里这里这里也是:)。您还需要一个 .bib 格式的参考文件来管理您的引文。然后只需运行以下命令:

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

你可以把你的整个笔记本变成漂亮、干净的手稿

pandoc 有许多其他的自定义选项:colorlinks、papersize、geometry、number-sections...(参见 pandoc –help)

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

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

于 2019-02-02T13:34:38.537 回答