[jupyter-notebook] Jupyter / JupyterLab 노트북에 목차를 추가하려면 어떻게해야합니까?

http://ipython.org/ipython-doc/stable/interactive/notebook.html 의 설명서에 따르면

다른 수준의 제목을 사용하여 전체적으로 계산 문서에 대한 개념적 구조를 제공 할 수 있습니다. 레벨 1 (최상위 레벨)에서 레벨 6 (문단)까지 6 개의 레벨을 사용할 수 있습니다. 나중에 목차 등을 구성하는 데 사용할 수 있습니다.

그러나 계층 적 제목을 사용하여 이러한 목차를 만드는 방법에 대한 지침은 어디에서도 찾을 수 없습니다. 이 작업을 수행하는 방법이 있습니까?

NB : ipython 노트북 제목이있는 경우 다른 종류의 탐색에도 관심이 있습니다. 예를 들어 각 섹션의 시작 부분을 빠르게 찾기 위해 제목에서 제목으로 앞뒤로 건너 뛰거나 전체 섹션의 내용을 숨 깁니다 (접기). 이것은 내 위시리스트이지만 모든 종류의 탐색이 흥미로울 것입니다. 감사!



답변

노트북의 목차를 구성 하는 ipython nbextension 이 있습니다. 섹션 접기가 아닌 탐색 만 제공하는 것 같습니다.


답변

Markdown 및 HTML을 사용하여 TOC를 수동으로 추가 할 수 있습니다. 내가 추가 한 방법은 다음과 같습니다.

Jupyter Notebook 상단에 TOC를 만듭니다.

## TOC:
* [First Bullet Header](#first-bullet)
* [Second Bullet Header](#second-bullet)

본문 전체에 html 앵커 추가 :

## First Bullet Header <a class="anchor" id="first-bullet"></a>

code blocks...

## Second Bullet Header <a class="anchor" id="second-bullet"></a>

code blocks...

최선의 방법은 아니지만 작동합니다. 도움이 되었기를 바랍니다.


답변

너무 많은 JS 번거 로움이없는 옵션이 하나 더 있습니다 : https://github.com/kmahelona/ipython_notebook_goodies


답변

모든 HTML 페이지의 개요를 제공하는 브라우저 플러그인을 사용하는 것은 어떻습니까? 나는 다음을 시도했다 :

둘 다 IPython 노트북에서 잘 작동합니다. 나는 이전 솔루션이 약간 불안정 해 보이며 결국 이러한 확장을 사용하기 때문에 사용을 꺼려했습니다.


답변

최근에 jupyter-navbar 라는 이름의 Jupyter에 대한 작은 확장을 만들었습니다 . 마크 다운 셀에 쓰여진 헤더를 검색하고 계층 구조로 사이드 바에 링크를 표시합니다. 사이드 바는 크기를 조정하고 접을 수 있습니다. 아래 스크린 샷을 참조하십시오.

설치가 쉽고 노트북이 열릴 때마다 실행되는 ‘사용자 지정’JS 및 CSS 코드를 활용하므로 수동으로 실행할 필요가 없습니다.

여기에 이미지 설명 입력


답변

이제 Jupyter 확장을 처리하는 데 사용할 수있는 두 개의 패키지가 있습니다.

  1. 목차 를 포함하여 확장 프로그램을 설치하는 jupyter_contrib_nbextensions

  2. 사용할 nbextension 을 구성하기위한 그래픽 사용자 인터페이스 (모든 노트북에 대해 자동로드)를 제공하고 nbextensions의 옵션을 구성하는 컨트롤을 제공하는 jupyter_nbextensions_configurator입니다.

최신 정보:

의 최신 버전부터는 해당 확장 프로그램과 함께 설치 되므로 jupyter_contrib_nbextensions최소한 conda설치할 필요가 없습니다 jupyter_nbextensions_configurator.


답변

JupyterLab ToC 지침

이 질문에 대한 좋은 답변은 이미 많이 있지만 JupyterLab의 노트북에서 제대로 작동하려면 종종 조정이 필요합니다. JupyterLab에서 작업하고 내보내는 동안 노트북에 ToC를 포함하는 가능한 방법을 자세히 설명하기 위해이 답변을 작성했습니다.

사이드 패널로

jupyterlab-TOC의 확장 CAN 번호 제목, 축소 부, 그리고 (데모 GIF 아래 참조)를 탐색 할 수있는 측면 패널로 TOC를 추가한다. 다음 명령으로 설치

jupyter labextension install @jupyterlab/toc

여기에 이미지 설명 입력


노트북에서 셀로

현재 Matt Dancho의 답변 에서처럼 수동으로 수행하거나
클래식 노트북 인터페이스 의 toc2 jupyter 노트북 확장 을 통해 자동으로 수행 할 수 있습니다 .

먼저 jupyter_contrib_nbextensions 번들의 일부로 toc2를 설치 합니다 .

conda install -c conda-forge jupyter_contrib_nbextensions

그런 다음 JupyterLab을 시작하고로 이동 Help --> Launch Classic Notebook하여 ToC를 추가 할 노트북을 엽니 다. 도구 모음에서 toc2 기호를 클릭하여 부동 ToC 창을 표시하고 (찾을 수없는 경우 아래 gif 참조) 기어 아이콘을 클릭하고 “노트북 ToC 셀 추가”확인란을 선택합니다. 노트북을 저장하면 JupyterLab에서 열 때 ToC 셀이 표시됩니다. 삽입 된 셀은 html이 포함 된 마크 다운 셀이며 자동으로 업데이트되지 않습니다.

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

셸 명령은 앞에 느낌표를 붙여 노트북 셀에 추가 할 수 있으므로 노트북 !의 마지막 셀에이 줄을 붙일 수 있으며 “모든 셀 실행”을 누를 때 생성 된 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는 확장의 각 문서에서 링크되었습니다.