Dokumentacja pod adresem http://ipython.org/ipython-doc/stable/interactive/notebook.html mówi
Możesz zapewnić strukturę koncepcyjną dla swojego dokumentu obliczeniowego jako całości, używając różnych poziomów nagłówków; Dostępnych jest 6 poziomów, od poziomu 1 (najwyższy poziom) do poziomu 6 (akapit). Można ich później użyć do tworzenia spisów treści itp.
Jednak nigdzie nie mogę znaleźć instrukcji, jak używać moich nagłówków hierarchicznych do tworzenia takiego spisu treści. Czy jest na to sposób?
NB: Byłbym również zainteresowany innymi rodzajami nawigacji wykorzystującymi nagłówki notatnika ipython, jeśli takie istnieją. Na przykład przeskakiwanie wstecz i do przodu od nagłówka do nagłówka, aby szybko znaleźć początek każdej sekcji lub ukrywanie (składanie) zawartości całej sekcji. To jest moja lista życzeń - ale jakakolwiek nawigacja byłaby interesująca. Dzięki!
źródło
Odpowiedzi:
Istnieje rozszerzenie ipython, które tworzy spis treści dla notatnika. Wydaje się, że zapewnia tylko nawigację, a nie zwijanie sekcji.
źródło
Możesz dodać spis treści ręcznie za pomocą Markdown i HTML. Oto jak dodawałem:
Utwórz spis treści w górnej części Notatnika Jupyter:
Dodaj kotwice html w całym ciele:
Może nie jest to najlepsze podejście, ale działa. Mam nadzieję że to pomoże.
źródło
<a name="pookie"></a>
do zakotwiczenia i do linków:Take me to [pookie](#pookie)
Oto jeszcze jedna opcja bez zbytniego kłopotu z JS: https://github.com/kmahelona/ipython_notebook_goodies
źródło
Co powiesz na użycie wtyczki do przeglądarki, która zapewnia przegląd DOWOLNEJ strony html. Próbowałem następujących rzeczy:
Oba działają całkiem dobrze dla notebooków IPython. Nie chciałem korzystać z poprzednich rozwiązań, ponieważ wydają się one nieco niestabilne i ostatecznie korzystałem z tych rozszerzeń.
źródło
Niedawno stworzyłem małe rozszerzenie do Jupyter o nazwie jupyter-navbar . Wyszukuje nagłówki zapisane w komórkach przecen i wyświetla linki do nich na pasku bocznym w sposób hierarchiczny. Pasek boczny można zmieniać i zwijać. Zobacz zrzut ekranu poniżej.
Jest łatwy w instalacji i korzysta z „niestandardowych” kodów JS i CSS, które są wykonywane przy każdym otwarciu notatnika, więc nie trzeba go uruchamiać ręcznie.
źródło
Istnieją teraz dwa pakiety, których można użyć do obsługi rozszerzeń Jupyter:
jupyter_contrib_nbextensions, które instalują rozszerzenia, w tym spis treści;
jupyter_nbextensions_configurator, który zapewnia graficzne interfejsy użytkownika do konfigurowania, które rozszerzenia nbextensions są włączone (ładuje się automatycznie dla każdego notebooka) i zapewnia elementy sterujące do konfigurowania opcji nbextensions.
AKTUALIZACJA:
Począwszy od najnowszych wersji
jupyter_contrib_nbextensions
, przynajmniejconda
nie musisz instalować,jupyter_nbextensions_configurator
ponieważ jest instalowany razem z tymi rozszerzeniami.źródło
Instrukcje dotyczące ToC JupyterLab
Istnieje już wiele dobrych odpowiedzi na to pytanie, ale często wymagają one poprawek, aby poprawnie współpracować z notebookami w JupyterLab. Napisałem tę odpowiedź, aby szczegółowo opisać możliwe sposoby umieszczania ToC w notatniku podczas pracy i eksportowania z JupyterLab.
Jako panel boczny
Rozszerzenie jupyterlab-toc dodaje ToC jako panel boczny, który może numerować nagłówki, zwijać sekcje i być używany do nawigacji (zobacz poniższy gif dla demonstracji). Zainstaluj za pomocą następującego polecenia
W zeszycie jako komórka
W tej chwili można to zrobić ręcznie, jak w odpowiedzi Matta Dancho, lub automatycznie przez rozszerzenie notebooka toc2 jupyter w klasycznym interfejsie notebooka.
Najpierw zainstaluj toc2 jako część pakietu jupyter_contrib_nbextensions :
Następnie uruchom JupyterLab, przejdź do
Help --> Launch Classic Notebook
i otwórz notatnik, w którym chcesz dodać ToC. Kliknij symbol toc2 na pasku narzędzi, aby wyświetlić ruchome okno ToC (zobacz poniższy gif, jeśli nie możesz go znaleźć), kliknij ikonę koła zębatego i zaznacz pole „Dodaj komórkę ToC notatnika”. Zapisz notatnik, a komórka ToC będzie tam, gdy otworzysz go w JupyterLab. Wstawiona komórka to komórka przeceny zawierająca kod HTML, nie zaktualizuje się automatycznie.Domyślne opcje toc2 można skonfigurować na karcie „Nbextensions” na stronie uruchamiania klasycznego notatnika. Możesz np. Wybrać numerowanie nagłówków i zakotwiczenie ToC jako paska bocznego (co osobiście uważam za bardziej przejrzyste).
W wyeksportowanym pliku HTML
nbconvert
może być używany do eksportowania notatników do HTML zgodnie z zasadami formatowania eksportowanego HTML. Wspomnianetoc2
rozszerzenie dodaje format eksportu o nazwiehtml_toc
, który może być używany bezpośrednio znbconvert
linii poleceń (po zainstalowaniutoc2
rozszerzenia):Pamiętaj, że polecenia powłoki można dodawać do komórek notatnika, poprzedzając je wykrzyknikiem
!
, więc możesz umieścić tę linię w ostatniej komórce notatnika i zawsze mieć plik HTML z ToC wygenerowany po naciśnięciu przycisku „Uruchom wszystkie komórki” ( lub cokolwiek z czego chcesznbconvert
). W ten sposób możesz używaćjupyterlab-toc
do nawigacji w notebooku podczas pracy i nadal otrzymywać ToC w wyeksportowanych wynikach bez konieczności uciekania się do korzystania z klasycznego interfejsu notebooka (dla purystów wśród nas).Zwróć uwagę, że skonfigurowanie domyślnych opcji toc2 zgodnie z powyższym opisem nie zmieni formatu
nbconver --to html_toc
. Musisz otworzyć notatnik w klasycznym interfejsie notatnika, aby metadane zostały zapisane w pliku .ipynb (nbconvert czyta metadane podczas eksportu). Alternatywnie możesz dodać metadane ręcznie za pomocą zakładki Narzędzia notatnika na pasku bocznym JupyterLab, np. lubić:Jeśli wolisz podejście oparte na GUI, powinieneś być w stanie otworzyć klasyczny notatnik i kliknąć
File --> Save as HTML (with ToC)
(chociaż zauważ, że ta pozycja menu nie była dla mnie dostępna).Powyższe gify są powiązane z odpowiednią dokumentacją rozszerzeń.
źródło
jupyter lab
, ale potrzebuję dodać spis treści do wyjścia HTML dużego notatnika. To działa bez zarzutu! Było kilka dodatkowych kroków, aby to działało: 1. Włącz TOC2, np.conda install -c conda-forge jupyter_nbextensions_configurator
Przejdź dohttp://localhost:8888/nbextensions
, odznacz "kompatybilność" i włącz "Toc2" 2. Uruchom Classical Notebbok, zmodyfikuj ustawienia TOC do swoich potrzeb iAdd TOC to Cell
(postępuj zgodnie z opisem). 3. Otwórz.ipynb
plik i wyszukaj"toc"
, skopiuj konfiguracje json toc i dodaj do metadanych za pomocą karty narzędzi w laboratorium Jupyter--to html_toc
zadziałało. Format jest świetny i dodaje ładny spis treści z boku oraz numery nagłówków.Wprowadzenie
Jak wspomnieli @Ian i @Sergey, nbextensions to proste rozwiązanie. Aby rozwinąć ich odpowiedź, oto kilka dodatkowych informacji.
Co to jest nbextensions?
Na przykład, żeby zacytować kilka rozszerzeń:
Spis treści
Zwijane nagłówki
Zainstaluj nbextensions
Instalację można przeprowadzić za pomocą Conda lub PIP
Skopiuj pliki js i css
Aby skopiować pliki javascript i css nbextensions do katalogu wyszukiwania serwera jupyter, wykonaj następujące czynności:
Przełącz rozszerzenia
Zauważ, że jeśli nie jesteś zaznajomiony z terminalem, lepiej byłoby zainstalować konfigurator nbextensions (patrz następna sekcja)
Możesz włączyć / wyłączyć wybrane rozszerzenia. Jak wspomniano w dokumentacji, ogólne polecenie to:
Konkretnie, aby włączyć rozszerzenie ToC (spis treści), wykonaj:
Zainstaluj interfejs konfiguracyjny (opcjonalny, ale przydatny)
Jak mówi dokumentacja, nbextensions_configurator zapewnia interfejsy konfiguracyjne dla nbextensions.
Wygląda to następująco:
Aby go zainstalować, jeśli używasz conda:
Jeśli nie masz Conda lub nie chcesz instalować przez Conda, wykonaj następujące 2 kroki:
źródło
toc2/main
jest tym samym, co sprawdzenie " Spisu treści (2)" na localhost: 8888 / tree # nbextensions_configurator .Oto moje podejście, niezgrabne i dostępne na githubie :
Umieść pierwszą komórkę notebooka, komórkę importu:
Gdzieś po komórce importu umieść komórkę genTOCEntry, ale jeszcze jej nie uruchamiaj:
Pod komórką genTOCEntry` utwórz komórkę TOC jako komórkę przeceny:
W miarę opracowywania notebooka, przed rozpoczęciem nowej sekcji umieść tę genTOCMarkdownCell:
Przenieś genTOCMarkdownCell w dół do punktu w swoim notatniku, w którym chcesz rozpocząć nową sekcję i wprowadź argument do genTOCMarkdownCell jako ciąg tytuł dla nowej sekcji, a następnie uruchom go. Dodaj komórkę przeceny zaraz po niej i skopiuj dane wyjściowe z genTOCMarkdownCell do komórki przeceny, która rozpoczyna nową sekcję. Następnie przejdź do komórki genTOCEntry w górnej części notebooka i uruchom ją. Na przykład, jeśli utworzysz argument do genTOCMarkdownCell, jak pokazano powyżej, i uruchomisz go, otrzymasz te dane wyjściowe do wklejenia do pierwszej komórki markdown nowo zindeksowanej sekcji:
Następnie, gdy przejdziesz na górę swojego notebooka i uruchomisz genTocEntry, otrzymasz wynik:
Skopiuj ten ciąg linku i wklej go do komórki markdown TOC w następujący sposób:
Po wyedytowaniu komórki spisu treści w celu wstawienia ciągu łącza, a następnie naciśnięciu klawisza shift-enter, łącze do nowej sekcji pojawi się w spisie treści notatnika jako łącze internetowe, a kliknięcie go przestawi przeglądarkę na nową sekcję.
Często zapominam, że kliknięcie wiersza w spisie treści powoduje, że przeglądarka przeskakuje do tej komórki, ale jej nie wybiera. Każda komórka była aktywna po kliknięciu łącza TOC, więc nadal jest aktywna, więc strzałka w dół lub w górę lub shift-enter odnosi się do wciąż aktywnej komórki, a nie komórki, którą otrzymaliśmy po kliknięciu łącza TOC.
źródło
Jak już zauważył Ian, minrk ma rozszerzenie spisu treści dla Notatnika IPython. Miałem trochę problemów, aby to działało i stworzyłem ten notatnik IPython, który półautomatycznie generuje pliki dla rozszerzenia spisu treści Minrk w systemie Windows. Nie używa poleceń „curl” ani linków, ale zapisuje pliki * .js i * .css bezpośrednio w katalogu IPython Notebook-profile-profile.
W notatniku znajduje się sekcja zatytułowana `` Co musisz zrobić '' - postępuj zgodnie z nią i miej ładny, pływający spis treści:)
Oto wersja html, która już to pokazuje: http://htmlpreview.github.io/?https://github.com/ahambi/140824-TOC/blob/master/A%20floating%20table%20of%20contents.htm
źródło