Jupyter notebook 如何将目录添加到Jupyter/JupyterLab笔记本?

Jupyter notebook 如何将目录添加到Jupyter/JupyterLab笔记本?,jupyter-notebook,jupyter,jupyter-lab,Jupyter Notebook,Jupyter,Jupyter Lab,网站上的文件说 您可以使用不同级别的标题为整个计算文档提供概念结构;共有6个级别,从级别1(顶级)到级别6(段落)。这些可用于以后构建目录等 然而,我在任何地方都找不到关于如何使用层次标题创建这样一个目录的说明。有办法做到这一点吗 注:我还对使用ipython笔记本标题的其他导航类型感兴趣,如果有的话。例如,从一个标题跳到另一个标题以快速找到每个部分的开头,或者隐藏(折叠)整个部分的内容。这是我的愿望清单——但任何一种导航都是有趣的。谢谢 有一个为笔记本构建目录的工具。它似乎只提供导航,而不提供

网站上的文件说

您可以使用不同级别的标题为整个计算文档提供概念结构;共有6个级别,从级别1(顶级)到级别6(段落)。这些可用于以后构建目录等

然而,我在任何地方都找不到关于如何使用层次标题创建这样一个目录的说明。有办法做到这一点吗


注:我还对使用ipython笔记本标题的其他导航类型感兴趣,如果有的话。例如,从一个标题跳到另一个标题以快速找到每个部分的开头,或者隐藏(折叠)整个部分的内容。这是我的愿望清单——但任何一种导航都是有趣的。谢谢

有一个为笔记本构建目录的工具。它似乎只提供导航,而不提供章节折叠。

这里还有一个没有太多JS麻烦的选项:

正如Ian已经指出的,minrk为IPython笔记本提供了目录扩展。我有一些麻烦,使它的工作,并使这半自动生成的文件minrk的目录扩展在Windows中。它不使用“curl”命令或链接,而是将*.js和*.css文件直接写入IPython笔记本配置文件目录

笔记本中有一个部分叫做“你需要做什么”——遵循它,并有一个很好的浮动目录:)

下面是一个html版本,它已经显示了:

如何使用浏览器插件,为您提供任何html页面的概览。我尝试了以下方法:

jupyter contrib nbextension install --user
  • 对于Firefox

它们在IPython笔记本电脑上都非常有效。我不愿意使用以前的解决方案,因为它们看起来有点不稳定,最终使用了这些扩展

这是我的方法,虽然很笨重,但可以在以下位置找到:

放入第一个笔记本单元,即导入单元:

from IPythonTOC import IPythonTOC

toc = IPythonTOC()
在导入单元格之后的某个位置,放入genTOCEntry单元格,但不要运行它:

''' if you called toc.genTOCMarkdownCell before running this cell, 
the title has been set in the class '''

print toc.genTOCEntry()
在genTOCEntry单元格“”下方,将TOC单元格作为标记单元格:

<a id='TOC'></a>

#TOC
将genTOCMarkdownCell向下移动到笔记本中要开始新分区的位置,并将genTOCMarkdownCell参数设置为新分区的字符串标题,然后运行它。在其后面添加一个标记单元格,并将genTOCMarkdownCell的输出复制到启动新节的标记单元格中。然后转到笔记本顶部附近的genTOCEntry单元格并运行它。例如,如果您将参数设置为如上所示的genTOCMarkdownCell并运行它,则会得到以下输出 要粘贴到新索引部分的第一个标记单元格中,请执行以下操作:

<a id='Introduction'></a>

###Introduction
复制此链接字符串并将其粘贴到TOC标记单元格中,如下所示:

<a id='TOC'></a>

#TOC

[Introduction](#Introduction)

#TOC
[导言](#导言)
编辑TOC单元格以插入链接字符串,然后按shift-enter键后,指向新分区的链接将作为web链接显示在笔记本目录中,单击该链接将浏览器定位到新分区


我经常忘记的一件事是,单击TOC中的一行会使浏览器跳转到该单元格,但不会选择它。单击TOC链接时处于活动状态的单元格仍处于活动状态,因此向下或向上箭头或shift-enter表示仍处于活动状态的单元格,而不是单击TOC链接时得到的单元格。

您可以使用标记和HTML手动添加TOC。以下是我如何添加的内容:

在Jupyter笔记本顶部创建TOC: 在正文中添加html锚定:
##第一个项目符号标题
代码块。。。
##第二个子弹头
代码块。。。

这可能不是最好的方法,但它是有效的。希望这有帮助。

现在有两个包可用于处理Jupyter扩展:

  • 安装扩展,包括目录

  • 它提供图形用户界面,用于配置启用了哪些nbextensions(为每个笔记本自动加载),并提供控件来配置nbextensions的选项

  • 更新:


    从最新版本的
    jupyter\u contrib\u nbextensions
    开始,至少使用
    conda
    您不需要安装
    jupyter\u nbextensions\u configurator
    ,因为它与这些扩展一起安装。

    我最近为jupyter创建了一个名为。它搜索在标记单元格中写入的标题,并以分层方式在侧栏中显示指向这些标题的链接。侧边栏可调整大小并可折叠。请参见下面的屏幕截图

    它易于安装,并且利用了每次打开笔记本时都会执行的“自定义”JS和CSS代码,因此您无需手动运行它

    nbextensions ToC说明 介绍 正如@Ian和@Sergey所提到的,这是一个简单的解决方案。为了详细说明他们的答案,这里还有一些信息

    什么是nbextensions

    nbextensions包含一个扩展集合 为您的Jupyter笔记本添加功能

    例如,仅举几个扩展:

    • 目录

    • 可折叠标题

    安装nbextensions 安装可以通过Conda或PIP完成

    # If conda:
    conda install -c conda-forge jupyter_contrib_nbextensions
    # or with pip:
    pip install jupyter_contrib_nbextensions
    
    您将在jupyter笔记本菜单中看到新选项卡
    Nbextensions
    。取消选中顶部的复选框
    禁用无显式兼容性的nbextensions配置(它们可能会破坏您的笔记本环境,但对nbextension开发非常有用)
    ,然后选中
    目录(2)
    。仅此而已。截图:

    复制js和css文件 要将nbextensions的javascript和css文件复制到jupyter服务器的搜索目录中,请执行以下操作:

    jupyter contrib nbextension install --user
    
    ## First Bullet Header <a class="anchor" id="first-bullet"></a>
    
    code blocks...
    
    ## Second Bullet Header <a class="anchor" id="second-bullet"></a>
    
    code blocks...
    
    # If conda:
    conda install -c conda-forge jupyter_contrib_nbextensions
    # or with pip:
    pip install jupyter_contrib_nbextensions
    
    jupyter contrib nbextension install --user
    
    jupyter nbextension enable <nbextension require path>
    
    jupyter nbextension enable toc2/main
    
    conda install -c conda-forge jupyter_nbextensions_configurator
    
    pip install jupyter_nbextensions_configurator
    jupyter nbextensions_configurator enable --user
    
    jupyter labextension install @jupyterlab/toc
    
    conda install -c conda-forge jupyter_contrib_nbextensions
    
        "toc": {
            "number_sections": false,
            "sideBar": true
        }
    
    # Contents
    - [Section 1](#Section-1)
    - [Section 2](#Section-2)
    - [Section 3](#Section-3)
    
    # Section 1
    
    ## Section 2
    
    ### Section 3
    [top](#Contents)