gpt4 book ai didi

python - 将 pandoc 和 pandoc-citeproc 与 Jupyter Notebook 结合使用

转载 作者:太空宇宙 更新时间:2023-11-03 15:26:28 27 4
gpt4 key购买 nike

我正在开发一个基础设施,开发人员可以使用 Jupyter 笔记本记录他们的验证测试。基础设施的一部分是一个 Python 脚本,它可以将 .ipynb 文件转换为 .html 文件,以提供面向公众的测试文档。

使用 nbconvert 模块可以完成我想要的大部分操作,但我希望在最终的 HTML 文件中允许引用和引用。我可以使用 pypandoc 生成 HTML 文本,将引文转换为正确的内联语法并添加 引用 部分:

from urllib import urlopen
import nbformat
import pypandoc
from nbconvert import MarkdownExporter

response = urlopen('SimpleExample.ipynb').read().decode()
notebook = nbformat.reads(response, as_version=4)
exporter = MarkdownExporter()
(body, resources) = exporter.from_notebook_node(notebook)

filters = ['pandoc-citeproc']
extra_args = ['--bibliography="ref.bib"',
'--reference-links',
'--csl=MWR.csl']
new_body = pypandoc.convert_text(body,
'html',
'md',
filters=filters,
extra_args=extra_args)

问题在于,生成的 HTML 丢失了 nbconvert.HTMLExporter 提供的所有重要格式和其他功能。

我的问题是,是否有一种简单的方法来合并 nbconvert.HTMLExporterpypandoc.convert_text() 的结果,以便我得到的大部分是前者,以及内联引用和从后者添加的引用部分?

最佳答案

我不知道这是否一定算“直接”,但我能够想出一个解决方案。它涉及编写一个继承于 nbconvert.preprocessors.Preprocessor 的类并实现 preprocess(self, nb, resources) 方法。这是 preprocess() 的作用:

  1. 循环笔记本中的每个单元格并存储一组引文键(其格式为[@bibtex_key]
  2. 创建仅包含这些引文键的简短文本正文,每个引文键均以 '\n\n' 分隔
  3. 使用上面的 pandoc 转换从这段简短的文本中生成 HTML 文本。如果 num_cite 是引用次数,则生成文本的前 num_cite 行将是引用的内联版本(例如“(Author, Year)”);其余行将是引用文献部分的内容。
  4. 返回每个单元格,并将每个引文的内嵌文本替换为其关键字。
  5. 使用 ## References 将单元格添加到笔记本
  6. 向笔记本添加一个包含引用部分内容的单元格

现在,当 HTMLExporter 使用此预处理器 转换笔记本时,结果将包含内联引用、引用部分以及您期望的所有格式HTMLExporter

关于python - 将 pandoc 和 pandoc-citeproc 与 Jupyter Notebook 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43102881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com