自定义笔记本格式和 Jupytext¶
您可以指定将其他文件类型转换为笔记本,然后以与常规笔记本相同的方式执行/解析。
小技巧
本页本身就是一个 RMarkdown 笔记本!
sphinx:
config:
nb_custom_formats:
.mysuffix: mylibrary.converter_function
该字符串应该是一个 Python 函数,它将由
import mylibrary.converter_function
加载该函数应该接受文件的内容(以
str
形式)并返回 nbformat.NotebookNode
如果函数接受其他关键字参数,则可以在第二个参数中指定这些关键字作为字典。例如,这是默认转换的样子:
sphinx:
config:
nb_custom_formats:
.ipynb:
- nbformat.reads
- as_version: 4
重要
默认情况下,笔记本中的 Markdown 单元格将使用与其他 Markdown 文件相同的 MyST 解析器配置进行解析。
但是,如果这与你的文件格式不兼容,那么你可以指定 Markdown 被严格地解析为 CommonMark,使用第三个参数:
sphinx:
config:
nb_custom_formats:
.ipynb:
- nbformat.reads
- as_version: 4
- true
最后,对于基于文本的格式,MyST-NB 还在输出笔记本的元数据中搜索一个可选的 source_map
键。这个键应该是一个列表,将每个单元格映射到原始源文件的起始行号,例如一个有三个单元格的笔记本:
{
"metadata": {
"source_map": [10, 21, 53]
}
}
此映射允许 “true” 错误报告,如 中所述。
使用 Jupytext¶
Jupytext 是一个优秀的 Python 工具,用于在 Jupyter Notebook .ipynb
文件和各种基于文本的文件之间进行双向转换。
Jupyter Book 原生支持 Jupytext 文件格式:带有 MyST Markdown 的笔记本,但你可以添加其他格式,如 RMarkdown 或 Python 文件。
配置看起来像这样:
sphinx:
config:
nb_custom_formats:
.Rmd:
- jupytext.reads
- fmt: Rmd
警告
请注意,有些执行特性(比如 RMarkdown 中的内联代码执行)在 Jupyter Book 中是不可用的。
现在你可以使用 RMarkdown 块:
```{python echo=TRUE}
print("Hallo I'm an RMarkdown block!")
```
print("Hallo I'm an RMarkdown block!")
Hallo I'm an RMarkdown block!
重要
为了与 myst-parser
完全兼容,必须使用 jupytext>=1.6.0
。
将一个 Jupytext 文件转换为 MyST 笔记本¶
或者,如果你想把你之前存在的 Jupytext 文件转换成 MyST 笔记本的格式,直接在你的书中使用,安装 Jupytext,然后运行以下命令:
jupytext --to myst path/to/yourfile
请注意,您还可以传递一个通配符,它将用于转换多个文件。例如:
jupytext --to myst ./*.py
更多信息请参见 Jupytext CLI 文档。