笔记本过滤器

概述

如果你正在渲染现有的 Jupyter 笔记本,而这些笔记本并非专为 Quarto 设计,你可能希望在将笔记本转换为 Markdown 之前对其进行一些预处理。这可以通过指定一个或多个 ipynb-filters 来实现。这些过滤器会接收笔记本的 JSON 表示 作为 stdin 输入,并应将转换后的 JSON 表示输出到 stdout

Note

笔记本过滤器的目的是为了使现有的 .ipynb 文件适应 Quarto 的使用。因此,笔记本过滤器仅在原始输入为 .ipynb 文件时运行(对于 .qmd 文件不会运行)。

示例

例如,这个笔记本过滤器使用 nbformat 包读取笔记本,在每个代码单元格的源代码前添加一个注释,然后将其写回 stdout

import sys
import nbformat

# 从 stdin 读取笔记本
nb = nbformat.reads(sys.stdin.read(), as_version = 4)

# 在每个单元格的源代码前添加注释
for index, cell in enumerate(nb.cells):
  if cell.cell_type == 'code':
     cell.source = "# 注释\n" + cell.source
  
# 将笔记本写入 stdout 
nbformat.write(nb, sys.stdout)

你可以通过 ipynb-filters 选项(在文档或项目级别指定)来安排此过滤器的运行:

---
ipynb-filters:
  - filter.py
---

请注意,过滤器的当前工作目录将设置为输入笔记本的位置。