将教程添加或编辑为 Jupyter 笔记本#

在 SciPy 树的 doc/source/ 文件夹下,您可以找到一些以 MyST Markdown 格式编写的文档。这些文件中的内容在 SciPy 文档构建时(本地或在 CI 上)执行,并且执行生成的任何输出都会在最终的 HTML 文件中渲染。此外,通过使用 jupyterlite-sphinx 扩展,它们可以在 SciPy 文档网站中实现交互。

如果您有一份以 Jupyter 笔记本格式(`.ipynb` 文件)编写的文档,并希望将其作为 SciPy 文档的一部分提交,则有两种选择:您可以将其转换为 MyST Markdown 文件,只处理一个 `.md` 文件;或者您可以将您的 `.ipynb` 文件与一个 `.md` 文件配对,同时处理两者。请注意,`.ipynb` 文件*不应*提交到 SciPy 文档中。

在本文件中,我们将讨论转换为 MyST Markdown 文件。有关 MyST-NB、Jupytext 和配对笔记本的更多信息,您也可以查阅 NumPy 教程中的配对教程。获取更多信息,请查阅 MyST-NB 文档

如何将 `.ipynb` 文件转换为 `.md` 文件#

如果您不需要保留 `.ipynb` 文件,只想使用 MyST Markdown,请按照以下步骤操作。

  1. 使用 `pip install jupytext` 或 `conda install jupytext -c conda-forge` 安装 jupytext 工具;

  2. 在您的终端中,运行 `jupytext notebook.ipynb --to myst`,其中 `notebook.ipynb` 应替换为您要转换的文件。

现在,生成的 `.md` 文件(MyST Markdown 格式)应该包含一个类似下面的序言,表明其内容将在 SciPy 文档构建时执行

---
jupytext:
   text_representation:
      extension: .md
      format_name: myst
      format_version: 0.13
      jupytext_version: 1.14.0
kernelspec:
   display_name: Python 3 (ipykernel)
   language: python
   name: python3
---

您无需编辑此序言,因为它是自动生成的。

使笔记本具有交互性#

如果您希望在 SciPy 文档网站中渲染笔记本时启用交互性,您需要在 markdown 文件开头添加以下代码片段

```{eval-rst}
.. notebooklite:: <filename>.md
   :new_tab: True
```

其中 `<filename>.md` 应替换为您正在处理的文件名。这将创建一个按钮,允许用户在新标签页中打开笔记本并与之交互。请参阅 Bartlett 的方差相等性检验(及其 源代码)作为示例。

注意

为了简单起见,我们不希望某些笔记本单元格在渲染的文档中可见。我们可以通过将 `"jupyterlite_sphinx_strip"` 添加到相应单元格元数据的标签部分来隐藏它们。要在 Markdown 文件中执行此操作,请在要隐藏的单元格前添加以下代码片段

+++ {"tags": ["jupyterlite_sphinx_strip"]}

请注意,`+++` 符号应成对出现,包围您要隐藏的单元格。

请访问 NotebookLite 指令文档 以获取更多详细信息和选项。

在 Jupyter Notebook 应用程序中打开 MyST Markdown 文件#

如果您安装了 `jupytext` 工具,您可以在 Jupyter Notebook 应用程序中打开 MyST Markdown `.md` 文件并执行它们,就像处理 `.ipynb` 文件一样。

将 `.rst` 文件转换为 MyST Markdown#

要将 reStructuredText (`.rst`) 文件转换为 MyST Markdown (`.md`),您可以遵循上述格式说明。您还可以使用 RST-to-MyST 等工具来自动化转换,但请注意,可能需要进行一些审查以确保转换正确。特别是,一些 reStructuredText 指令可能需要包装在 `{eval-rst}` MyST 指令中,如下所示

Some Markdown here

```{eval-rst}
.. some_rest_directive_here::
  :some_option: some_value
```

Some more Markdown here