Dokumentasi di http://ipython.org/ipython-doc/stable/interactive/notebook.html mengatakan
Anda dapat memberikan struktur konseptual untuk dokumen komputasi Anda secara keseluruhan menggunakan level heading yang berbeda; ada 6 level yang tersedia, dari level 1 (level atas) hingga level 6 (paragraf). Ini dapat digunakan nanti untuk membuat daftar isi, dll.
Namun, saya tidak dapat menemukan petunjuk di mana pun tentang cara menggunakan judul hierarki saya untuk membuat daftar isi seperti itu. Apakah ada cara untuk melakukan ini?
NB: Saya juga tertarik dengan jenis navigasi lain yang menggunakan judul notebook ipython, jika ada. Misalnya, melompat mundur dan maju dari satu judul ke judul lain untuk menemukan awal setiap bagian dengan cepat, atau menyembunyikan (melipat) konten dari seluruh bagian. Ini adalah daftar keinginan saya - tetapi segala jenis navigasi sama sekali akan menarik. Terima kasih!
sumber
Jawaban:
Ada ipython nbextension yang membuat daftar isi untuk notebook. Sepertinya hanya menyediakan navigasi, bukan pelipatan bagian.
sumber
Anda dapat menambahkan TOC secara manual dengan Markdown dan HTML. Begini cara saya menambahkan:
Buat TOC di atas Notebook Jupyter:
Tambahkan jangkar html di seluruh tubuh:
Ini mungkin bukan pendekatan terbaik, tetapi berhasil. Semoga ini membantu.
sumber
<a name="pookie"></a>
untuk jangkar dan untuk penggunaan tautan:Take me to [pookie](#pookie)
Berikut satu opsi lagi tanpa terlalu merepotkan JS: https://github.com/kmahelona/ipython_notebook_goodies
sumber
Bagaimana jika menggunakan plugin Browser yang memberi Anda gambaran umum tentang halaman html APA SAJA. Saya telah mencoba yang berikut ini:
Keduanya bekerja dengan cukup baik untuk Notebook IPython. Saya enggan menggunakan solusi sebelumnya karena tampaknya agak tidak stabil dan akhirnya menggunakan ekstensi ini.
sumber
Saya baru-baru ini membuat ekstensi kecil untuk Jupyter bernama jupyter-navbar . Ini mencari tajuk yang ditulis dalam sel penurunan harga, dan menampilkan tautan ke mereka di bilah sisi secara hierarkis. Bilah sisi dapat diubah ukurannya dan dapat diciutkan. Lihat gambar di bawah.
Ini mudah dipasang, dan memanfaatkan kode JS dan CSS 'khusus' yang dijalankan setiap kali buku catatan dibuka, jadi Anda tidak perlu menjalankannya secara manual.
sumber
Sekarang ada dua paket yang dapat digunakan untuk menangani ekstensi Jupyter:
jupyter_contrib_nbextensions yang menginstal ekstensi, termasuk daftar isi;
jupyter_nbextensions_configurator yang menyediakan antarmuka pengguna grafis untuk mengonfigurasi nbextensions mana yang diaktifkan (memuat secara otomatis untuk setiap notebook) dan menyediakan kontrol untuk mengonfigurasi opsi nbextensions.
MEMPERBARUI:
Mulai dari versi terbaru
jupyter_contrib_nbextensions
, setidaknya denganconda
Anda tidak perlu menginstaljupyter_nbextensions_configurator
karena sudah terpasang bersama dengan ekstensi tersebut.sumber
Petunjuk ToC JupyterLab
Sudah ada banyak jawaban bagus untuk pertanyaan ini, tetapi sering kali memerlukan penyesuaian agar berfungsi dengan baik dengan notebook di JupyterLab. Saya menulis jawaban ini untuk merinci kemungkinan cara memasukkan ToC di notebook saat bekerja dan mengekspor dari JupyterLab.
Sebagai panel samping
The jupyterlab-toc ekstensi menambahkan TOC sebagai panel samping yang judul jumlah kaleng, bagian runtuh, dan akan digunakan untuk navigasi (lihat gif di bawah ini untuk demo). Instal dengan perintah berikut
Di notebook sebagai sel
Saat ini, ini dapat dilakukan secara manual seperti dalam jawaban Matt Dancho, atau secara otomatis melalui ekstensi notebook toc2 jupyter di antarmuka notebook klasik.
Pertama, instal toc2 sebagai bagian dari bundel jupyter_contrib_nbextensions :
Lalu, luncurkan JupyterLab, buka
Help --> Launch Classic Notebook
, dan buka notebook tempat Anda ingin menambahkan ToC. Klik simbol toc2 di toolbar untuk menampilkan jendela ToC mengambang (lihat gif di bawah jika Anda tidak dapat menemukannya), klik ikon roda gigi dan centang kotak "Tambahkan sel ToC notebook". Simpan notebook dan sel ToC akan ada di sana saat Anda membukanya di JupyterLab. Sel yang dimasukkan adalah sel penurunan harga dengan html di dalamnya, itu tidak akan diperbarui secara otomatis.Opsi default toc2 dapat dikonfigurasi di tab "Nbextensions" di halaman peluncuran buku catatan klasik. Misalnya, Anda dapat memilih nomor tajuk dan mengaitkan ToC sebagai bilah samping (yang menurut saya pribadi terlihat lebih bersih).
Dalam file HTML yang diekspor
nbconvert
dapat digunakan untuk mengekspor notebook ke HTML mengikuti aturan tentang cara memformat HTML yang diekspor. Thetoc2
ekstensi yang disebutkan di atas menambahkan format ekspor yang disebuthtml_toc
, yang dapat digunakan langsung dengannbconvert
dari baris perintah (setelahtoc2
perpanjangan telah terinstal):Ingatlah bahwa perintah shell dapat ditambahkan ke sel notebook dengan diawali dengan tanda seru
!
, sehingga Anda dapat menempelkan baris ini di sel terakhir notebook dan selalu memiliki file HTML dengan ToC yang dibuat saat Anda menekan "Jalankan semua sel" ( atau hasil apa pun yang Anda inginkannbconvert
). Dengan cara ini, Anda dapat menggunakanjupyterlab-toc
untuk menavigasi notebook saat Anda bekerja, dan masih mendapatkan ToC dalam output yang diekspor tanpa harus menggunakan antarmuka notebook klasik (untuk puritan di antara kita).Perhatikan bahwa mengonfigurasi opsi toc2 default seperti dijelaskan di atas, tidak akan mengubah format
nbconver --to html_toc
. Anda perlu membuka notebook di antarmuka notebook klasik agar metadata dapat ditulis ke file .ipynb (nbconvert membaca metadata saat mengekspor) Atau, Anda dapat menambahkan metadata secara manual melalui tab Alat Notebook dari sidebar JupyterLab, misalnya sesuatu Suka:Jika Anda lebih suka pendekatan berbasis GUI, Anda harus dapat membuka buku catatan klasik dan mengklik
File --> Save as HTML (with ToC)
(meskipun perhatikan bahwa item menu ini tidak tersedia untuk saya).Gif di atas ditautkan dari dokumentasi masing-masing ekstensi.
sumber
jupyter lab
, tetapi perlu menambahkan TOC ke output HTML notebook besar. Ini bekerja dengan sempurna! Ada beberapa langkah tambahan untuk membuatnya bekerja: 1. Aktifkan TOC2, misalnyaconda install -c conda-forge jupyter_nbextensions_configurator
, pergi kehttp://localhost:8888/nbextensions
, hapus centang "kompatibilitas" dan aktifkan "Toc2" 2. Luncurkan Notebbok Klasik, ubah pengaturan TOC sesuai kebutuhan Anda danAdd TOC to Cell
(lanjutkan seperti yang dijelaskan). 3. Buka.ipynb
file Anda dan cari"toc"
, salin konfigurasi json toc dan tambahkan ke metadata menggunakan tab alat lab Jupyterpengantar
Seperti yang telah disebutkan @Ian dan @Sergey, nbextensions adalah solusi sederhana. Untuk menguraikan jawaban mereka, berikut adalah beberapa informasi lagi.
Apa itu nbextensions?
Misalnya, hanya untuk mengutip beberapa ekstensi:
Daftar Isi
Judul yang bisa diciutkan
Pasang nbextensions
Instalasi dapat dilakukan melalui Conda atau PIP
Salin file js dan css
Untuk menyalin file javascript dan css nbextensions ke direktori pencarian server jupyter, lakukan hal berikut:
Alihkan ekstensi
Perhatikan bahwa jika Anda tidak terbiasa dengan terminal, akan lebih baik untuk menginstal nbextensions configurator (lihat bagian selanjutnya)
Anda dapat mengaktifkan / menonaktifkan ekstensi pilihan Anda. Seperti yang disebutkan dalam dokumentasi, perintah generiknya adalah:
Secara konkret, untuk mengaktifkan ekstensi ToC (Daftar Isi), lakukan:
Instal antarmuka Konfigurasi (opsional tapi berguna)
Seperti yang dikatakan dalam dokumentasinya, nbextensions_configurator menyediakan antarmuka config untuk nbextensions.
Ini terlihat seperti berikut:
Untuk menginstalnya jika Anda menggunakan conda:
Jika Anda tidak memiliki Conda atau tidak ingin menginstal melalui Conda, lakukan 2 langkah berikut:
sumber
toc2/main
sama dengan memeriksa "Daftar Isi (2)" di localhost: 8888 / tree # nbextensions_configurator .Inilah pendekatan saya, kikuk apa adanya dan tersedia di github :
Letakkan di sel notebook pertama, sel impor:
Di suatu tempat setelah sel impor, masukkan sel genTOCEntry tetapi jangan jalankan dulu:
Di bawah sel genTOCEntry`, buat sel TOC sebagai sel penurunan harga:
Saat notebook dikembangkan, letakkan genTOCMarkdownCell ini sebelum memulai bagian baru:
Pindahkan genTOCMarkdownCell ke bawah ke titik di buku catatan Anda di mana Anda ingin memulai bagian baru dan buat argumen ke genTOCMarkdownCell sebagai judul string untuk bagian baru Anda, lalu jalankan. Tambahkan sel penurunan harga tepat setelahnya dan salin keluaran dari genTOCMarkdownCell ke dalam sel penurunan harga yang memulai bagian baru Anda. Lalu pergi ke sel genTOCEntry di dekat bagian atas notebook Anda dan jalankan. Misalnya, jika Anda membuat argumen ke genTOCMarkdownCell seperti yang ditunjukkan di atas dan menjalankannya, Anda mendapatkan output ini untuk ditempelkan ke sel penurunan harga pertama dari bagian yang baru diindeks:
Kemudian saat Anda pergi ke bagian atas notebook Anda dan menjalankan genTocEntry, Anda mendapatkan output:
Salin string tautan ini dan tempelkan ke sel penurunan harga TOC sebagai berikut:
Setelah Anda mengedit sel TOC untuk menyisipkan string link lalu Anda menekan shift-enter, link ke bagian baru Anda akan muncul di Daftar Isi buku catatan Anda sebagai link web dan mengkliknya akan menempatkan browser ke bagian baru Anda.
Satu hal yang sering saya lupakan adalah mengklik sebuah baris di TOC membuat browser melompat ke sel itu tetapi tidak memilihnya. Sel apa pun yang aktif ketika kita mengklik tautan TOC masih aktif, jadi panah bawah atau atas atau shift-enter mengacu pada sel yang masih aktif, bukan sel yang kita dapatkan dengan mengklik tautan TOC.
sumber
Seperti yang telah ditunjukkan Ian, ada ekstensi daftar isi oleh minrk untuk Notebook IPython. Saya mengalami kesulitan untuk membuatnya bekerja dan membuat Notebook IPython ini yang secara semi-otomatis menghasilkan file untuk ekstensi daftar isi minrk di Windows. Itu tidak menggunakan 'curl'-commands atau links, tapi menulis file * .js dan * .css langsung ke direktori IPython Notebook-profile-directory.
Ada bagian di buku catatan yang disebut 'Apa yang perlu Anda lakukan' - ikuti dan buat daftar isi mengambang yang bagus :)
Berikut adalah versi html yang sudah menunjukkannya: http://htmlpreview.github.io/?https://github.com/ahambi/140824-TOC/blob/master/A%20floating%20table%20of%20contents.htm
sumber