【问题标题】:How to Convert a Jupyter Notebook to an Academic Paper Format?如何将 Jupyter Notebook 转换为学术论文格式?
【发布时间】:2018-08-28 12:21:40
【问题描述】:

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

是否存在以编程方式将笔记本转换为期刊提交可接受的形式的方法?理想情况下,我希望使用 knitr's functionality 之类的东西来创建学术风格的论文,但要使用 Jupyter 而不是专注于 R 的工具。

我已经为好几家期刊(包括我想投稿的期刊)找到了pandoc templates,但不清楚它与 Jupyter 的集成度如何。

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

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

【问题讨论】:

    标签: jupyter-notebook nbconvert


    【解决方案1】:

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

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

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

    --no-prompt:如果您不想在手稿中出现,将有助于摆脱代码单元。您也可以在最终输出中不需要的降价单元格中使用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语法。你必须使用 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

    【讨论】:

    • 嗨@BND,感谢您的回答!如果使用cite2c,你会如何建议生成bibtex?
    • 由于 cite2c 从 Zotero 生成引文,因此可以从 Zotero 生成兼容的 BibTeX。但是,从文档页面的屏幕截图中,cite2c 以 HTML 语法生成引用,然后您必须确保 markdown 文件中的引用键与 Zotero BibTeX 文件中生成的引用键相同。
    • 非常感谢您的评论。我想知道,您是否在 github 上有一个示例 jupyter 文件,其中包含一些引用和交叉引用(来自 pandoc-citeproc 和 pandoc-crossref),例如您不介意分享?提前非常感谢!
    • @Sosi 您可能想在这里考虑这种方法:github.com/chrisjsewell/ipypublish
    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 2019-12-13
    • 2017-09-06
    • 2020-06-09
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多