Jupiter как добавить оглавление с номерами страниц

от admin

4 совета по улучшению Jupyter Notebooks

Jupyter Notebooks — отличный инструмент для всех разработчиков, желающих поделиться своей работой. Он предоставляет простой способ обмена проектами и широко используется в таких областях, как анализ данных и наука о данных.

Однако многие не знакомы со всеми возможностями Jupyter Notebooks и используют лишь основные функции написания кода Python и отображения графиков.

Рассмотрим 4 полезных совета, которые помогут улучшить функциональность Jupyter Notebooks!

(1) Выполнение команд оболочки

Оболочка в техническом/программном контексте — это способ взаимодействия с компьютером через текстовые команды. Самая популярная оболочка Unix — это Bash (Bourne Again SHell). Она является оболочкой по умолчанию, а найти ее можно через терминал на любом компьютере с Linux.

Довольно часто при работе с Python нужно переключаться между написанием кода Python и использованием оболочки. Например, чтобы прочитать определенный файл с диска с помощью Python, для начала необходимо проверить его имя. Обычно вы просто заходите в терминал и набираете команду ls, чтобы получить список всех файлов и папок в текущей директории. Эти скачки туда-сюда довольно утомительны и неэффективны.

Одной из интересных особенностей Jupyter является возможность выполнения команд оболочки без необходимости покидать браузер. Нужно лишь поставить дополнительный восклицательный знак ! перед командой оболочки, и Jupyter переведет его в Bash. Любую команду, работающую в командной строке, можно использовать в Python Jupyter Notebook с префиксом ! .

Также можно присваивать выходные данные команд оболочки переменным Python, как показано ниже:

(2) Изменение тем

Во многих текстовых редакторах и программных IDE есть настраиваемые темы. Большинство разработчиков предпочитают темные режимы, такие как monaki, поскольку они более комфортны для глаз при длительном нахождении перед экраном, и в Jupyter тоже есть плагин для выбора тем.

Как я могу добавить оглавление в записную книжку Jupyter / JupyterLab?

Вы можете предоставить концептуальную структуру для вашего вычислительного документа в целом, используя разные уровни заголовков; доступно 6 уровней, от уровня 1 (верхний уровень) до уровня 6 (параграф). Их можно использовать позже для построения оглавлений и т. Д.

Однако я нигде не могу найти инструкций о том, как использовать мои иерархические заголовки для создания такого оглавления. Есть ли способ сделать это?

NB: Мне также были бы интересны другие виды навигации с использованием заголовков блокнотов ipython, если таковые существуют. Например, переход назад и вперед от заголовка к заголовку, чтобы быстро найти начало каждого раздела, или скрытие (сворачивание) содержимого всего раздела. Это мой список желаний, но любая навигация была бы интересна. Спасибо!

11 ответов

Существует ipython nbextension, который создает оглавление для записной книжки. Кажется, он обеспечивает только навигацию, а не сворачивание разделов.

Вы можете добавить оглавление вручную с помощью Markdown и HTML. Вот как я добавляю:

Создайте оглавление в верхней части Jupyter Notebook:

Добавьте якоря html по всему телу:

Возможно, это не лучший подход, но он работает. Надеюсь это поможет.

Как насчет использования плагина браузера, который дает вам обзор ЛЮБОЙ HTML-страницы. Я пробовал следующее:

    для Chrome для Firefox

Оба они очень хорошо работают с ноутбуками IPython. Я не хотел использовать предыдущие решения, поскольку они казались немного нестабильными, и в конечном итоге использовал эти расширения.

Недавно я создал небольшое расширение для Jupyter под названием jupyter-navbar. Он ищет заголовки, записанные в ячейках уценки, и отображает ссылки на них на боковой панели в иерархическом порядке. Размер боковой панели можно изменять, и она складывается. См. Снимок экрана ниже.

Его легко установить, и он использует «пользовательские» коды JS и CSS, которые запускаются при каждом открытии записной книжки, поэтому вам не нужно запускать его вручную.

Теперь есть два пакета, которые можно использовать для обработки расширений Jupyter:

jupyter_contrib_nbextensions, устанавливающий расширения, включая оглавление;

jupyter_nbextensions_configurator, который предоставляет графический пользовательский интерфейс для настройки того, какие nbextensions включены (загружаются автоматически для каждого ноутбука) и предоставляет элементы управления для настройки параметров nbextensions.

Начиная с последних версий jupyter_contrib_nbextensions , по крайней мере, с conda вам не нужно устанавливать jupyter_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. Независимо от того, сколько хешей # у вас в заголовке, используйте один для гиперссылки. Любые пробелы в названии заменяются дефисами — .

Создать таблицу содержимого

Создать заголовки

Вы также можете добавить гиперссылку обратно к содержимому.

Это похоже на ответ Мэтта Данчо, но я всегда считаю привязки html неудобными.

Инструкции JupyterLab ToC

На этот вопрос уже есть много хороших ответов, но они часто требуют настройки для правильной работы с блокнотами в JupyterLab. Я написал этот ответ, чтобы подробно описать возможные способы включения ToC в записную книжку во время работы и экспорта из JupyterLab.

Как боковая панель

Расширение jupyterlab-toc добавляет ToC в качестве боковой панели которые могут нумеровать заголовки, сворачивать разделы и использоваться для навигации (см. рисунок ниже для демонстрации). Это расширение включено по умолчанию, начиная с JupyterLab 3.0, в более старой версии вы можете установить его с помощью следующей команды

В записной книжке как клетка

На данный момент, это можно сделать вручную, как в ответе Мэтта Данчо, или автоматически через расширение toc2 jupyter для записных книжек в классическом интерфейсе ноутбука.

Читать:
Как зайти в биос на hp pavilion

Первый, установите 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 для навигации по записной книжке во время работы, и по-прежнему получать ToC в экспортированном выводе не прибегая к использованию классического интерфейса ноутбука (для пуристов среди нас).

Обратите внимание, что настройка параметров toc2 по умолчанию как описано выше, не изменит формат nbconver —to html_toc . Вам нужно открыть блокнот в классическом интерфейсе блокнота для записи метаданных в файл .ipynb (nbconvert читает метаданные при экспорте) В качестве альтернативы, вы можете добавить метаданные вручную через вкладку «Инструменты блокнота» на боковой панели JupyterLab, например что-то вроде:

Если вы предпочитаете подход, основанный на графическом интерфейсе, у вас должна быть возможность открыть классический блокнот и нажмите File —> Save as HTML (with ToC) (хотя учтите, что этот пункт меню был недоступен для меня).

На приведенные выше гифки есть ссылки из соответствующей документации расширений.

How can I add a table of contents to a Jupyter / JupyterLab notebook?

How can I add a table of contents to a Jupyter / JupyterLab notebook?

You can add a TOC manually with Markdown and HTML. Heres how I have been adding:

Create TOC at top of Jupyter Notebook:

Add html anchors throughout body:

It may not be the best approach, but it works. Hope this helps.

There is an ipython nbextension that constructs a table of contents for a notebook. It seems to only provide navigation, not section folding.

How can I add a table of contents to a Jupyter / JupyterLab notebook?

JupyterLab ToC instructions

There are already many good answers to this question,
but they often require tweaks to work properly with notebooks in JupyterLab.
I wrote this answer to detail the possible ways of including a ToC
in a notebook while working in and exporting from JupyterLab.

As a side panel

The jupyterlab-toc extension adds the ToC as a side panel
that can number headings, collapse sections, and be used for navigation (see gif below for a demo). This extension is included by default since JupyterLab 3.0, in older version you can install it with the following command

In the notebook as a cell

At the time being,
this can either be done manually as in Matt Danchos answer,
or automatically via the toc2 jupyter notebook extension
in the classic notebook interface.

Then,
launch JupyterLab,
go to Help —> Launch Classic Notebook ,
and open the notebook in which you want to add the ToC.
Click the toc2 symbol in the toolbar
to bring up the floating ToC window
(see the gif below if you cant find it),
click the gear icon and check the box for
Add notebook ToC cell.
Save the notebook and the ToC cell will be there
when you open it in JupyterLab.
The inserted cell is a markdown cell with html in it,
it will not update automatically.

The default options of the toc2
can be configured in the Nbextensions tab
in the classic notebook launch page.
You can e.g. choose to number headings
and to anchor the ToC as a side bar
(which I personally think looks cleaner).

In an exported HTML file

nbconvert can be used to export notebooks to HTML
following rules of how to format the exported HTML.
The toc2 extension mentioned above adds an export format called html_toc ,
which can be used directly with nbconvert from the command line
(after the toc2 extension has been installed):

Remember that shell commands can be added to notebook cells
by prefacing them with an exclamation mark ! ,
so you can stick this line in the last cell of the notebook
and always have an HTML file with a ToC generated
when you hit Run all cells
(or whatever output you desire from nbconvert ).
This way,
you could use jupyterlab-toc to navigate the notebook while you are working,
and still get ToCs in the exported output
without having to resort to using the classic notebook interface
(for the purists among us).

Note that configuring the default toc2 options
as described above,
will not change the format of nbconver —to html_toc .
You need to open the notebook in the classic notebook interface
for the metadata to be written to the .ipynb file
(nbconvert reads the metadata when exporting)
Alternatively,
you can add the metadata manually
via the Notebook tools tab of the JupyterLab sidebar,
e.g. something like:

If you prefer a GUI-driven approach,
you should be able to open the classic notebook
and click File —> Save as HTML (with ToC)
(although note that this menu item was not available for me).

The gifs above are linked from the respective documentation of the extensions.

How to create a table of contents in a jupyter notebook ?

How to create a table of contents in a jupyter notebook ?

then, to create a table of contents, a solution is to create a markdown link to an anchor:

Add the anchors to the notebook

Then, just add the anchors

For example the TOC link

How to create a table of contents in a jupyter notebook ?

References

Links Site
How can I add a table of contents to a Jupyter / JupyterLab notebook? stackoverflow
iPython (er, Jupyter) Table of Contents medium.com
Table of Contents (2) jupyter-contrib-nbextensions.readthedocs.io

Author profile-image

Benjamin

Greetings, I am Ben! I completed my PhD in Atmospheric Science from the University of Lille, France. Subsequently, for 12 years I was employed at NASA as a Research Scientist focusing on Earth remote sensing. Presently, I work with NOAA concentrating on satellite-based Active Fire detection. Python, Machine Learning and Open Science are special areas of interest to me.

Похожие статьи