用于交互的启动按钮#

您可以自动添加按钮,让用户与您的书籍内容进行互动。这可以通过引导他们访问在云端运行的 BinderHub 或 JupyterHub,或者通过使用 Thebe 使您的页面具有互动性来实现。

要使用 Binder 或 JupyterHub 链接,您首先需要配置文档仓库的 URL:

html_theme_options = {
    ...
    "repository_url": "https://github.com/{your-docs-url}",
    "repository_branch": "{your-branch}",
    "path_to_docs": "{path-relative-to-site-root}",
    ...
}

Binder / BinderHub#

要在您的页面添加Binder链接,请添加以下配置:

html_theme_options = {
    ...
    "launch_buttons": {
        "binderhub_url": "https://{your-binderhub-url}"
    },
    ...
}

JupyterHub#

要在您的页面添加JupyterHub链接,请添加以下配置:

html_theme_options = {
    ...
    "launch_buttons": {
        "jupyterhub_url": "https://{your-binderhub-url}"
    },
    ...
}

Google Colab#

要在您的页面添加Google Colab链接,请添加以下配置:

html_theme_options = {
    ...
    "launch_buttons": {
        "colab_url": "https://colab.research.google.com"
    },
    ...
}

Deepnote#

要在您的页面中添加 Deepnote 链接,请添加以下配置:

html_theme_options = {
    ...
    "launch_buttons": {
        "deepnote_url": "https://deepnote.com"
    },
    ...
}

警告

“每次点击启动按钮时,这将创建新的 Deepnote 项目。”

使用 Thebe 活代码单元格#

Thebe 将您的静态代码块转换为交互式代码块,这些代码块由 Jupyter 内核驱动。它通过在后台请求 BinderHub 内核,并将您的所有代码单元转换为交互式代码单元来实现这一点。这使得用户可以在不离开页面的情况下运行您页面上的代码。

您可以使用 Sphinx 扩展 sphinx-thebe 为您的文档添加实时代码功能。您可以通过 pip 安装 sphinx-thebe,然后通过将其添加到 conf.py 的扩展列表中来激活它:

extensions = [
    ...
    "sphinx_thebe"
    ...
]

如果您希望在 sphinx-book-theme 中激活 sphinx-thebe 的用户界面元素,请添加以下主题配置:

html_theme_options = {
    ...
    "launch_buttons": {
        "thebe": True,
    },
    ...
}

这将添加自定义启动按钮,并为 Thebe 添加一些用户界面元素。

如果您在主题配置中同时指定了 repository_urlsphinx-thebe 将使用此仓库作为其环境:

html_theme_options = {
    ...
    "repository_url": "https://github.com/{your-docs-url}",
    ...
}

小技巧

您还可以通过 thebe_config 字典手动自定义 Thebe。这将覆盖从 html_theme_options 配置中提取的任何配置。有关可配置的内容,请参阅 sphinx-thebe 文档。

配置到源文件的相对路径#

要配置到文档的相对路径,请添加以下配置:

html_theme_options = {
    ...
    "path_to_docs" = "{path-relative-to-repo-root}"
    ...
}

控制打开的用户界面#

您可以控制当用户点击启动按钮时打开的界面。为此,请添加以下配置:

html_theme_options = {
    ...
    "launch_buttons": {
        "notebook_interface": "jupyterlab",
    },
    ...
}