JupyterLab ToC 说明
这个问题已经有很多很好的答案了,
但它们通常需要调整才能与 JupyterLab 中的笔记本正常工作。
我写了这个答案来详细说明包含 ToC 的可能方式
在 JupyterLab 中工作和导出时在笔记本中。
作为侧面板
jupyterlab-toc 扩展将 ToC 添加为侧面板
它可以对标题进行编号、折叠部分并用于导航(参见下面的 gif 以获取演示)。自 JupyterLab 3.0 起默认包含此扩展,在旧版本中您可以使用以下命令安装它
jupyter labextension install @jupyterlab/toc
在笔记本中作为一个单元格
目前,
这可以像马特丹乔的回答那样手动完成,
或自动通过toc2 jupyter notebook extension
在经典笔记本界面中。
首先,
将 toc2 作为jupyter_contrib_nbextensions bundle 的一部分安装:
conda install -c conda-forge jupyter_contrib_nbextensions
那么,
启动 JupyterLab,
去Help --> Launch Classic Notebook,
并打开要在其中添加 ToC 的笔记本。
单击工具栏中的 toc2 符号
调出浮动 ToC 窗口
(如果找不到,请参阅下面的 gif),
单击齿轮图标并选中复选框
“添加笔记本 ToC 单元”。
保存笔记本,ToC 单元将在那里
当你在 JupyterLab 中打开它时。
插入的单元格是一个带有 html 的 markdown 单元格,
它不会自动更新。
toc2 的默认选项
可以在“Nbextensions”选项卡中配置
在经典笔记本启动页面中。
你可以例如选择给标题编号
并将 ToC 锚定为侧栏
(我个人认为看起来更干净)。
在导出的 HTML 文件中
nbconvert 可用于将笔记本导出为 HTML
遵循如何格式化导出的 HTML 的规则。
上面提到的toc2 扩展添加了一个名为html_toc 的导出格式,
可以在命令行中直接与nbconvert 一起使用
(在安装了toc2 扩展之后):
jupyter nbconvert file.ipynb --to html_toc
# Append `--ExtractOutputPreprocessor.enabled=False`
# to get a single html file instead of a separate directory for images
请记住,shell 命令可以添加到笔记本单元格中
通过在它们前面加上感叹号!,
所以你可以把这条线贴在笔记本的最后一个单元格中
并始终生成一个带有 ToC 的 HTML 文件
当您点击“运行所有单元格”时
(或您希望从nbconvert 获得的任何输出)。
这边走,
您可以在工作时使用jupyterlab-toc 在笔记本中导航,
并且仍然在导出的输出中获得 ToC
无需求助于使用经典的笔记本界面
(对于我们中间的纯粹主义者)。
注意配置默认的 toc2 选项
如上所述,
不会更改nbconver --to html_toc 的格式。
需要在经典笔记本界面打开笔记本
将元数据写入 .ipynb 文件
(nbconvert 在导出时读取元数据)
或者,
您可以手动添加元数据
通过 JupyterLab 侧边栏的笔记本工具选项卡,
例如类似:
"toc": {
"number_sections": false,
"sideBar": true
}
如果您更喜欢 GUI 驱动的方法,
你应该可以打开经典笔记本
然后点击File --> Save as HTML (with ToC)
(但请注意,我无法使用此菜单项)。
上面的 gif 文件链接自扩展的相应文档。