笔记本过滤器
概述
如果你正在渲染现有的 Jupyter 笔记本,而这些笔记本并非专为 Quarto 设计,你可能希望在将笔记本转换为 Markdown 之前对其进行一些预处理。这可以通过指定一个或多个 ipynb-filters
来实现。这些过滤器会接收笔记本的 JSON 表示 作为 stdin
输入,并应将转换后的 JSON 表示输出到 stdout
。
Note
笔记本过滤器的目的是为了使现有的 .ipynb
文件适应 Quarto 的使用。因此,笔记本过滤器仅在原始输入为 .ipynb
文件时运行(对于 .qmd
文件不会运行)。
示例
例如,这个笔记本过滤器使用 nbformat 包读取笔记本,在每个代码单元格的源代码前添加一个注释,然后将其写回 stdout
:
import sys
import nbformat
# 从 stdin 读取笔记本
= nbformat.reads(sys.stdin.read(), as_version = 4)
nb
# 在每个单元格的源代码前添加注释
for index, cell in enumerate(nb.cells):
if cell.cell_type == 'code':
= "# 注释\n" + cell.source
cell.source
# 将笔记本写入 stdout
nbformat.write(nb, sys.stdout)
你可以通过 ipynb-filters
选项(在文档或项目级别指定)来安排此过滤器的运行:
---
ipynb-filters:
- filter.py
---
请注意,过滤器的当前工作目录将设置为输入笔记本的位置。