如何以编程方式为Jupyter Notebook添加幻灯片单元格元数据
编程方式为Jupyter/Colab单元格添加幻灯片元数据方法
nbconvert导出幻灯片时读取的单元格配置存储在metadata.slideshow.slide_type字段下,和编程添加标签、隐藏代码的元数据修改逻辑完全一致,仅需按照固定格式写入对应值即可,不需要依赖GUI编辑面板,在Colab环境下可直接使用。
支持的幻灯片类型取值
所有取值和GUI面板选项一一对应:
slide:标记为新主幻灯片起始,导出时单独生成一页subslide:标记为子幻灯片起始,归属上一级主幻灯片,导航时按顺序展示fragment:标记为当前页内分段内容,不单独成页,播放时点击逐步显现skip:标记单元格在导出的幻灯片中完全隐藏notes:标记为演讲者备注,仅演讲者视图可见-:默认普通单元格,跟随所在幻灯片内容流正常展示
单元格内实时配置方法(Colab兼容)
在Notebook中运行如下代码,即可为当前执行代码的单元格写入指定幻灯片元数据,无额外依赖:
from IPython.display import Javascript, display def set_slide_type(slide_type: str): display(Javascript(f""" const currentCell = Jupyter.notebook.get_selected_cell(); currentCell.metadata.slideshow = {{slide_type: "{slide_type}"}}; Jupyter.notebook.save_notebook(); """)) # 调用示例:将当前单元格设为新幻灯片起始 # set_slide_type("slide")
运行后元数据自动保存到Notebook文件,和手动GUI配置效果完全一致。
批量自动化配置方法
ipynb本质为结构化JSON文件,可直接通过Python读写实现全量单元格的幻灯片配置批量修改,无需打开Notebook界面,适合自动化流程:
import json from pathlib import Path def batch_config_slides(input_nb_path: str, output_nb_path: str = None): with open(Path(input_nb_path), "r", encoding="utf-8") as f: notebook = json.load(f) for cell in notebook["cells"]: cell["metadata"].setdefault("slideshow", {}) # 以下为示例配置规则,可根据自身需求修改判断逻辑 if cell["cell_type"] == "markdown": first_line = cell["source"][0].strip() if cell["source"] else "" if first_line.startswith("# "): cell["metadata"]["slideshow"]["slide_type"] = "slide" elif first_line.startswith("## "): cell["metadata"]["slideshow"]["slide_type"] = "subslide" else: cell["metadata"]["slideshow"]["slide_type"] = "fragment" else: cell["metadata"]["slideshow"]["slide_type"] = "fragment" save_path = Path(output_nb_path) if output_nb_path else Path(input_nb_path) with open(save_path, "w", encoding="utf-8") as f: json.dump(notebook, f, ensure_ascii=False, indent=2) # 调用示例 # batch_config_slides("demo.ipynb", "slides_demo.ipynb")
配置完成后可直接通过jupyter nbconvert --to slides 目标文件.ipynb命令导出幻灯片。
内容的提问来源于stack exchange,提问作者jeroaranda
相关产品推荐
相关产品推荐

