ipython 노트북에 목차를 추가하려면 어떻게해야합니까?
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 페이지의 개요를 제공하는 브라우저 플러그인을 사용하는 것은 어떻습니까? 나는 다음을 시도했다 :
- Chrome 용 HTML 5 Outliner
- Firefox 용 제목지도
둘 다 IPython 노트북에서 잘 작동합니다. 나는 이전 솔루션이 약간 불안정 해 보이며 결국 이러한 확장을 사용하기 때문에 사용을 꺼려했습니다.
최근에 jupyter-navbar 라는 이름의 Jupyter에 대한 작은 확장을 만들었습니다 . 마크 다운 셀에 쓰여진 헤더를 검색하고 계층 구조로 사이드 바에 링크를 표시합니다. 사이드 바는 크기를 조정하고 접을 수 있습니다. 아래 스크린 샷을 참조하십시오.
설치가 쉽고 노트북이 열릴 때마다 실행되는 '사용자 지정'JS 및 CSS 코드를 활용하므로 수동으로 실행할 필요가 없습니다.
이제 Jupyter 확장을 처리하는 데 사용할 수있는 두 개의 패키지가 있습니다.
목차 를 포함하여 확장 프로그램을 설치하는 jupyter_contrib_nbextensions
사용할 nbextension 을 구성하기위한 그래픽 사용자 인터페이스 (모든 노트북에 대해 자동로드)를 제공하고 nbextensions의 옵션을 구성하는 컨트롤을 제공하는 jupyter_nbextensions_configurator입니다.
최신 정보:
의 최신 버전부터는 해당 확장과 함께 설치 되므로 jupyter_contrib_nbextensions
최소한 conda
설치할 필요가 없습니다 jupyter_nbextensions_configurator
.
내 접근 방식은 github 에서 사용할 수 있습니다 .
첫 번째 노트북 셀인 가져 오기 셀을 넣으십시오.
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을 넣으십시오.
with open('TOCMarkdownCell.txt', 'w') as outfile:
outfile.write(toc.genTOCMarkdownCell('Introduction'))
!cat TOCMarkdownCell.txt
!rm TOCMarkdownCell.txt
새 섹션을 시작할 노트북의 지점으로 genTOCMarkdownCell을 아래로 이동하고 genTOCMarkdownCell에 대한 인수를 새 섹션의 문자열 제목으로 만든 다음 실행합니다. 바로 뒤에 마크 다운 셀을 추가하고 genTOCMarkdownCell의 출력을 새 섹션을 시작하는 마크 다운 셀에 복사하십시오. 그런 다음 노트북 상단에있는 genTOCEntry 셀로 이동하여 실행합니다. 예를 들어, 위와 같이 genTOCMarkdownCell에 대한 인수를 만들고 실행하면 다음 출력을 가져와 새로 인덱싱 된 섹션의 첫 번째 마크 다운 셀에 붙여 넣습니다.
<a id='Introduction'></a>
###Introduction
그런 다음 노트북 상단으로 이동하여 genTocEntry를 실행하면 출력이 표시됩니다.
[Introduction](#Introduction)
이 링크 문자열을 복사하여 다음과 같이 TOC 마크 다운 셀에 붙여 넣습니다.
<a id='TOC'></a>
#TOC
[Introduction](#Introduction)
TOC 셀을 편집하여 링크 문자열을 삽입 한 다음 Shift-Enter를 누르면 새 섹션에 대한 링크가 노트북 목차에 웹 링크로 표시되고 클릭하면 브라우저가 새 섹션에 배치됩니다.
내가 자주 잊는 한 가지는 TOC에서 한 줄을 클릭하면 브라우저가 해당 셀로 이동하지만 선택하지는 않는다는 것입니다. 목차 링크를 클릭했을 때 활성 상태였던 셀은 여전히 활성 상태이므로 아래쪽 또는 위쪽 화살표 또는 Shift-Enter는 TOC 링크를 클릭하여 얻은 셀이 아니라 여전히 활성 셀을 나타냅니다.
Ian이 이미 지적했듯이 IPython Notebook에 대한 minrk의 목차 확장이 있습니다. 나는 그것을 작동시키는 데 약간의 어려움이 있었고 Windows에서 minrk의 목차 확장을위한 파일을 반자동으로 생성하는 이 IPython Notebook 을 만들었습니다 . 'curl'명령 또는 링크를 사용하지 않지만 * .js 및 * .css 파일을 IPython Notebook-profile-directory에 직접 씁니다.
노트북에는 'What you need to do' 라는 섹션이 있습니다. 따라 가면 멋진 플로팅 목차가 있습니다.)
다음은 이미 표시된 html 버전입니다. http://htmlpreview.github.io/?https://github.com/ahambi/140824-TOC/blob/master/A%20floating%20table%20of%20contents.htm
소개
@Ian과 @Sergey가 언급했듯이 nbextensions 는 간단한 솔루션입니다. 그들의 대답을 자세히 설명하기 위해 여기에 몇 가지 추가 정보가 있습니다.
nbextensions는 무엇입니까?
nbextensions에는 Jupyter 노트북에 기능을 추가하는 확장 프로그램 모음이 포함되어 있습니다.
예를 들어, 몇 가지 확장을 인용하기 위해 :
목차
접을 수있는 제목
nbextensions 설치
Conda 또는 PIP를 통해 설치할 수 있습니다.
# If conda:
conda install -c conda-forge jupyter_contrib_nbextensions
# or with pip:
pip install jupyter_contrib_nbextensions
js 및 css 파일 복사
nbextensions의 javascript 및 css 파일을 jupyter 서버의 검색 디렉토리에 복사하려면 다음을 수행하십시오.
jupyter contrib nbextension install --user
확장 기능 전환
터미널에 익숙하지 않은 경우 nbextensions configurator를 설치하는 것이 좋습니다 (다음 섹션 참조).
선택한 확장을 활성화 / 비활성화 할 수 있습니다. 문서에서 언급했듯이 일반 명령은 다음과 같습니다.
jupyter nbextension enable <nbextension require path>
구체적으로 ToC (목차) 확장을 사용하려면 다음을 수행하십시오.
jupyter nbextension enable toc2/main
구성 인터페이스 설치 (선택 사항이지만 유용함)
설명서에서 알 수 있듯이 nbextensions_configurator 는 nbextensions에 대한 구성 인터페이스를 제공합니다.
conda를 사용하는 경우 설치하려면 :
conda install -c conda-forge jupyter_nbextensions_configurator
Conda가 없거나 Conda를 통해 설치하지 않으려면 다음 두 단계를 수행하십시오.
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
'Nice programing' 카테고리의 다른 글
mongodb-native findOne ()에서 변수를 필드 이름으로 사용하는 방법은 무엇입니까? (0) | 2020.10.11 |
---|---|
도메인이 다른 동일한 IP / 서버에서 여러 Node.js 사이트를 호스팅하려면 어떻게해야합니까? (0) | 2020.10.11 |
Xcode에서 빌드 타이밍을 활성화하는 방법은 무엇입니까? (0) | 2020.10.11 |
이름으로 C # .Net 어셈블리를 얻는 방법? (0) | 2020.10.11 |
tkinter에서 두 프레임 간 전환 (0) | 2020.10.11 |