В документации на http://ipython.org/ipython-doc/stable/interactive/notebook.html говорится
Вы можете предоставить концептуальную структуру для своего вычислительного документа в целом, используя заголовки разных уровней; доступно 6 уровней, от уровня 1 (верхний уровень) до уровня 6 (параграф). Их можно использовать позже для построения оглавлений и т. Д.
Однако я нигде не могу найти инструкций о том, как использовать мои иерархические заголовки для создания такого оглавления. Есть ли способ сделать это?
NB: Меня также интересовали бы другие виды навигации с использованием заголовков ipython notebook, если таковые существуют. Например, переход назад и вперед от заголовка к заголовку, чтобы быстро найти начало каждого раздела, или скрытие (сворачивание) содержимого всего раздела. Это мой список желаний, но любая навигация была бы интересна. Спасибо!
источник
Ответы:
Существует ipython nbextension, которое создает оглавление для записной книжки. Кажется, он обеспечивает только навигацию, а не сворачивание разделов.
источник
Вы можете добавить оглавление вручную с помощью Markdown и HTML. Вот как я добавляю:
Создайте оглавление в верхней части Jupyter Notebook:
Добавьте якоря html по всему телу:
Возможно, это не лучший подход, но он работает. Надеюсь это поможет.
источник
<a name="pookie"></a>
for anchor and for link use:Take me to [pookie](#pookie)
Вот еще один вариант без особых проблем с JS: https://github.com/kmahelona/ipython_notebook_goodies
источник
Как насчет использования плагина для браузера, который дает вам обзор ЛЮБОЙ HTML-страницы. Я пробовал следующее:
Оба они очень хорошо работают с ноутбуками IPython. Я не хотел использовать предыдущие решения, поскольку они казались немного нестабильными, и в конечном итоге использовал эти расширения.
источник
Недавно я создал небольшое расширение для Jupyter с именем jupyter-navbar . Он ищет заголовки, записанные в ячейках уценки, и отображает ссылки на них на боковой панели в иерархическом порядке. Размер боковой панели можно изменять, и она складывается. См. Снимок экрана ниже.
Его легко установить, и он использует «пользовательские» коды JS и CSS, которые запускаются каждый раз при открытии записной книжки, поэтому вам не нужно запускать его вручную.
источник
Теперь есть два пакета, которые можно использовать для обработки расширений Jupyter:
jupyter_contrib_nbextensions, который устанавливает расширения, включая оглавление;
jupyter_nbextensions_configurator, который предоставляет графический пользовательский интерфейс для настройки того, какие nbextensions включены (загружаются автоматически для каждой записной книжки), и предоставляет элементы управления для настройки параметров nbextensions.
ОБНОВИТЬ:
Начиная с последних версий
jupyter_contrib_nbextensions
, по крайней мере,conda
вам не нужно устанавливать,jupyter_nbextensions_configurator
потому что он устанавливается вместе с этими расширениями.источник
Инструкции JupyterLab ToC
На этот вопрос уже есть много хороших ответов, но они часто требуют настройки для правильной работы с записными книжками в JupyterLab. Я написал этот ответ, чтобы подробно описать возможные способы включения ToC в записную книжку во время работы и экспорта из JupyterLab.
Как боковая панель
Расширение jupyterlab-toc добавляет ToC в качестве боковой панели, которая может нумеровать заголовки, сворачивать разделы и использоваться для навигации (см. Рисунок ниже для демонстрации). Установите с помощью следующей команды
В записной книжке как клетка
В настоящее время это можно сделать либо вручную, как в ответе Мэтта Данчо, либо автоматически с помощью расширения toc2 jupyter notebook. в классическом интерфейсе ноутбука.
Сначала установите toc2 как часть пакета jupyter_contrib_nbextensions :
Затем запустите JupyterLab, перейдите к
Help --> Launch Classic Notebook
и откройте записную книжку, в которую вы хотите добавить ToC. Щелкните символ toc2 на панели инструментов, чтобы открыть плавающее окно ToC (см. Гифку ниже, если вы не можете его найти), щелкните значок шестеренки и установите флажок «Добавить ячейку ToC для записной книжки». Сохраните записную книжку, и ячейка ToC будет там, когда вы откроете ее в JupyterLab. Вставленная ячейка представляет собой ячейку уценки с HTML-кодом в ней, она не будет обновляться автоматически.Параметры toc2 по умолчанию можно настроить на вкладке «Nbextensions» на классической странице запуска записной книжки. Вы можете, например, пронумеровать заголовки и привязать ToC как боковую панель (что, по моему мнению, выглядит чище).
В экспортированном HTML-файле
nbconvert
может использоваться для экспорта записных книжек в HTML, следуя правилам форматирования экспортируемого HTML.toc2
Расширение уже упоминалось выше , добавляет формат экспорта под названиемhtml_toc
, которое можно использовать непосредственноnbconvert
из командной строки (после того , какtoc2
было установлено расширение):Помните, что команды оболочки могут быть добавлены в ячейки записной книжки, поставив перед ними восклицательный знак
!
, поэтому вы можете вставить эту строку в последнюю ячейку записной книжки и всегда иметь файл HTML с ToC, сгенерированный при нажатии кнопки «Выполнить все ячейки» ( или любой другой результат, который вам нуженnbconvert
). Таким образом, вы можете использоватьjupyterlab-toc
для навигации по записной книжке во время работы и по-прежнему получать ToCs в экспортированном выводе, не прибегая к использованию классического интерфейса записной книжки (для пуристов среди нас).Обратите внимание, что настройка параметров toc2 по умолчанию, как описано выше, не изменит формат файла
nbconver --to html_toc
. Вам нужно открыть записную книжку в классическом интерфейсе записной книжки, чтобы метаданные были записаны в файл .ipynb (nbconvert считывает метаданные при экспорте). Кроме того, вы можете добавить метаданные вручную через вкладку «Инструменты записной книжки» на боковой панели JupyterLab, например что-то лайк:Если вы предпочитаете подход, основанный на графическом интерфейсе пользователя, у вас должна быть возможность открыть классический блокнот и щелкнуть
File --> Save as HTML (with ToC)
(хотя обратите внимание, что этот пункт меню был недоступен для меня).На приведенные выше гифки есть ссылки из соответствующей документации расширений.
источник
jupyter lab
, но мне нужно было добавить оглавление в большой HTML-вывод записной книжки. Работает безупречно! Были некоторые дополнительные шаги, чтобы заставить его работать: 1. Включите TOC2, напримерconda install -c conda-forge jupyter_nbextensions_configurator
, перейдитеhttp://localhost:8888/nbextensions
, снимите флажок «Совместимость» и включите «Toc2» 2. Запустите Classical Notebbok, измените настройки TOC в соответствии с вашими потребностями иAdd TOC to Cell
(действуйте, как описано). 3. Откройте.ipynb
файл и найдите"toc"
, скопируйте конфигурации json toc и добавьте их в метаданные, используя вкладку инструментов лаборатории Jupyter--to html_toc
работал. Формат отличный и добавляет красивое оглавление сбоку, а также номера заголовков.Введение
Как отметили @Ian и @Sergey, nbextensions - простое решение. Чтобы уточнить свой ответ, вот еще несколько сведений.
Что такое nbextensions?
Например, просто чтобы процитировать несколько расширений:
Оглавление
Складные заголовки
Установить nbextensions
Установка может производиться через Conda или PIP.
Скопируйте файлы js и css
Чтобы скопировать файлы javascript и css nbextensions в каталог поиска сервера jupyter, выполните следующие действия:
Переключить расширения
Обратите внимание: если вы не знакомы с терминалом, лучше установить конфигуратор nbextensions (см. Следующий раздел)
Вы можете включить / отключить расширения по вашему выбору. Как упоминается в документации, общая команда:
Конкретно, чтобы включить расширение ToC (Table of Contents), выполните:
Установите интерфейс конфигурации (необязательно, но полезно)
Как сказано в документации, nbextensions_configurator предоставляет интерфейсы конфигурации для nbextensions.
Выглядит это примерно так:
Чтобы установить его, если вы используете conda:
Если у вас нет Conda или вы не хотите устанавливать через Conda, выполните следующие 2 шага:
источник
toc2/main
аналогично проверке «Таблицы содержания (2)» на локальном хосте: 8888 / tree # nbextensions_configurator .Вот мой подход, неуклюжий и доступный на github :
Поместите в самую первую ячейку записной книжки, ячейку импорта:
Где-то после ячейки импорта поместите ячейку genTOCEntry, но пока не запускайте ее:
Под ячейкой genTOCEntry` сделайте ячейку TOC как ячейку уценки:
По мере разработки ноутбука поместите этот genTOCMarkdownCell перед началом нового раздела:
Переместите genTOCMarkdownCell вниз в то место в записной книжке, где вы хотите начать новый раздел, и сделайте аргумент genTOCMarkdownCell заголовком строки для нового раздела, затем запустите его. Добавьте ячейку уценки сразу после нее и скопируйте вывод genTOCMarkdownCell в ячейку уценки, с которой начинается новый раздел. Затем перейдите к ячейке genTOCEntry в верхней части записной книжки и запустите ее. Например, если вы передадите аргумент genTOCMarkdownCell, как показано выше, и запустите его, вы получите этот вывод для вставки в первую ячейку уценки вашего недавно проиндексированного раздела:
Затем, когда вы перейдете в верхнюю часть записной книжки и запустите genTocEntry, вы получите результат:
Скопируйте эту строку ссылки и вставьте ее в ячейку уценки TOC следующим образом:
После того как вы отредактируете ячейку оглавления, чтобы вставить строку ссылки, а затем нажмете shift-enter, ссылка на ваш новый раздел появится в вашем оглавлении записной книжки в виде веб-ссылки, и щелчок по ней переместит браузер в ваш новый раздел.
Одна вещь, которую я часто забываю, - это то, что щелчок по строке в оглавлении заставляет браузер переходить к этой ячейке, но не выбирает ее. Какая бы ячейка ни была активна, когда мы щелкнули ссылку оглавления, она все еще активна, поэтому стрелка вниз или вверх или Shift-Enter относится к все еще активной ячейке, а не к ячейке, которую мы получили, щелкнув ссылку оглавления.
источник
Как уже отмечал Ян, существует расширение оглавления от minrk для IPython Notebook. У меня возникли проблемы с его работой, и я сделал этот блокнот IPython, который полуавтоматически генерирует файлы для расширения оглавления minrk в Windows. Он не использует команды или ссылки curl, а записывает файлы * .js и * .css непосредственно в ваш IPython Notebook-profile-directory.
В записной книжке есть раздел под названием «Что вам нужно сделать» - следите за ним и получите красивое плавающее оглавление :)
Вот html-версия, которая уже показывает это: http://htmlpreview.github.io/?https://github.com/ahambi/140824-TOC/blob/master/A%20floating%20table%20of%20contents.htm
источник