Notebook Latex

Notebook Latex




💣 👉🏻👉🏻👉🏻 ALL INFORMATION CLICK HERE 👈🏻👈🏻👈🏻




















































Есть отличный инструмент для обучения/отчётов/написания умных книг про код — Jupyter Notebook. Если отчёт или книга, например, пишутся на кириллице, а нужно быстро сделать из этого PDF с красивыми формулами и тире правильной длины, то сразу обнаруживается проблема: в стандартном шаблоне, который Jupyter использует для конвертации блокнотов в PDF через LaTeX, нет подключения нужных пакетов с нужными параметрами, поэтому LaTeX просто не компилируется и PDF не получить.

Постоянно действующие предположения: будем говорить о Jupyter, который отсоединился от основного проекта IPython в релизе IPython 4; если вы хотите поговорить об IPython 3.x, заменяйте в командах jupyter на ipython и проверяйте возможные несовпадения имён файлов. Для генерации PDF мы используем либо командную строку (jupyter nbconvert --to pdf myfile.ipynb), либо кнопку из веб-интерфейса Download as -> PDF via LaTeX.

Самый простой способ решить проблему с недостающими пакетами — jupyter nbconvert --to latex myfile.ipynb, открываем полученный TeX-исходник и дописываем недостающие пакеты. Компилируем исходник (pdflatex myfile.tex или что кому нравится), цель достигнута.

Если проблема не решается в одну строчку (нужно серьёзно менять шаблон и не хочется копаться в неприятном результате конвертирования в LaTeX) / у меня много блокнотов / я хочу более общее решение, то продолжаем.

TL;DR: для того, чтобы получить pdf с кириллицей, добавьте к себе два файла (ссылка ведёт на комментарий с кратчайшим описанием).

Нужно объяснить конвертеру, что для конвертации блокнота в LaTeX он должен использовать не стандартный шаблон, а наш, с расширенным заголовком, самым правильным шрифтом и корпоративной темой оформления.


jupyter nbconvert --to pdf --template mytemplate.tplx myfile.ipynb

Проблемы: mytemplate.tplx успешно находится только в той директории, откуда запускается nbconvert, через веб-интерфейс это не протащить, как писать шаблон — непонятно.


Файлы настроек

Сначала про конфигурацию и местонахождение файлов. Это быстро решается написанием собственного файла настроек. Файл настроек для nbconvert — это файл с кодом на Python. Как указать файл настроек при вызове конвертера:


jupyter nbconvert --to pdf --config cfg.py myfile.ipynb

Файл настроек выглядит примерно так:


c = get_config()
c.NbConvertApp.export_format = 'pdf'
c.TemplateExporter.template_path = ['.']
c.Exporter.template_file = 'article'

Здесь export_format — значение по умолчанию для --to, template_path — список директорий с шаблонами, здесь говорит, что файлы шаблонов должны искаться в той директории, откуда запускается nbconvert, template_file означает, что, если не указано иначе, нужно пользоваться шаблоном article.tplx.

Теперь если запустить jupyter notebook --config cfg.py, то все настройки для конвертации будут браться сначала из файла конфигурации, что нам и нужно. Если нужно, чтобы эти настройки были по умолчанию при любом запуске nbconvert этим пользователем, их нужно положить в файл ~/.jupyter/jupyter_nbconvert_config.py. Соответственно, для notebook общий файл настроек — ~/.jupyter/jupyter_notebook_config.py.


Шаблоны

Самая интересная часть — как писать шаблоны. Шаблоны пишутся с использованием шаблонизатора Jinja2; во избежание конфликтов со специальными символами LaTeX служебные последовательности шаблонизатора переопределены (первая { заменена на ((, остальные { на (, с обратными скобками зеркально). Набор шаблонов, которые используются по умолчанию, находится в NBCONVERT_INSTALLATION_DIR/nbconvert/templates/latex/. Они хорошо документированы, от них имеет смысл наследоваться при создании своих шаблонов. Ещё примеры шаблонов есть в репозитории nbconvert-examples на Github. Скриншоты различных вариантов оформления можно посмотреть в readme к одному из разделов этого репозитория.

Как написать свой шаблон, в котором будут выполняться все необходимые лично вам вещи? Создать файл mytemplate.tplx, в котором написать несколько необходимых вещей.

Во-первых — аккуратно унаследоваться от шаблона, определяющего конкретный стиль отрисовки клеток с кодом (как в примере):


% Default to the notebook output style
((* set cell_style = 'style_notebook.tplx' *))
% Inherit from the specified cell style.
((* extends cell_style *))


Здесь я наследуюсь от шаблона style_notebook.tplx, который не является стандартным, а лежит в nbconvert-examples. Ещё этот шаблон написан, видимо, для старой версии nbconvert, поэтому в нём нужно будет поменять строчку ((* extends 'latex_base.tplx' *)) на ((* extends 'base.tplx' *)).

Во-вторых — определить \documentclass будущего LaTeX-файла и не делать заголовка (можно вместо этого написать код, берущий заголовок из метаданных файла .ipynb или откуда-нибудь ещё):


((* block docclass *))
\documentclass{article}
((* endblock docclass *))

((* block maketitle *))((* endblock maketitle *))

В-третьих — подключить вожделенные пакеты с поддержкой кириллицы (и ещё десяток-другой любимых):


((* block packages *))
((( super() ))) % load all other packages
\usepackage[T2A]{fontenc}
\usepackage[english, russian]{babel}
\usepackage{mathtools}
((* endblock packages *))

Полный список блоков описан в nbconvert/templates/latex/skeleton/null.tplx и nbconvert/templates/latex/base.tplx (и это тоже ссылки на GitHub).

Если мы хотим использовать полученный шаблон не в конкретном проекте, но во всех блокнотах, можно положить его, например, в ~/.jupyter/templates/ и изменить соответствующую строчку в файле настроек (спасибо spitty за замечание о том, что относительные пути просто так работать не будут):


import os
c.TemplateExporter.template_path = ['.', os.path.expanduser('~/.jupyter/templates/')]

После небольших исправлений в шаблоне для отрисовки клеток с кодом (мне не нравились надписи In[*]) у меня получились вот такие отчёты (скриншот из PDF-файла):


Присылаем лучшие статьи раз в месяц
18 мая 202134 000 ₽New Professions Lab

To respond to this story,
get the free Medium app.
There are currently no responses for this story.
Learn How to Write Markdown & LaTeX in The Jupyter Notebook
Interactive notebooks are experiencing a rise in popularity. Why?
Simply because it’s a great teaching environment, powerful, shareable, and provides the ability to perform data visualization in the same environment. Which interactive notebooks should I use? I recommend:
It’s a very simple language that allows you to write HTML in a shortened way. It can be used on some websites like Stack Overflow or to write documentations (essentially on GitHub).
When you write in Markdown, you use shortened notations which are replaced by the corresponding HTML tags. Each time, I will tell you the HTML equivalent of the Markdown notation to show you how Markdown made our life easier than ever.
Even web developers, now, use Markdown then convert it to HTML using some websites.
You make titles using hashtags #. A single hashtag gives you a title (h1), two hashtags give you a subtitle (h2) and so on as shown below:
Paragraphs are represented by the tag in HTML. In Markdown, they’re separated by one or more blank lines. Like HTML, whitespace is ignored. So if you add 10 blank lines, you’re still only going to have one paragraph.
Just end a line with two or more spaces , then type return. Or leave an empty line.
You can add emphasis by making text bold or italic.
Creating lists in Markdown is a real pleasure, you will see that there is nothing simpler!
To create a link, you must place the text of the link in square brackets followed by the URL in parentheses. Images are almost inserted in the same way as links, add an exclamation mark (!), followed by alt text in brackets, and the path or URL to the image asset in parentheses.
To create a horizontal rule, use three or more asterisks (***), dashes (---), or underscores (___) on a line by themselves.
It’s so freaking easy. And you can use this website to generate them.
Use \ before the dollar signs $, on your Notebook, otherwise, you’ll enter the math display mode (check it out on the LaTeX side).
Blockquotes work like replies to e-mails: you must precede the quoted lines with a >.
Have you ever asked yourself, how they write complex maths and physics equations using computer? Well, it’s all about LaTeX.
The Jupyter Notebook uses MathJax to render LaTeX inside HTML / Markdown. Just put your LaTeX math inside $ $. Or enter in display math mode by writing between$$ $$.
To write greek letters, type \ and the letter name:
Important Note:
To write Capital Greek Letter, type the first case after the backslash \as an uppercase, for example:
To define a left vertical curly brace we use the attribute
For horizontal curly braces, we use :
A 21 years old IT engineer student. http://github.com/AhmedAzizKhelifi/
Every Thursday, the Variable delivers the very best of Towards Data Science: from hands-on tutorials and cutting-edge research to original features you don't want to miss. Take a look.
You'll need to sign in or create an account to receive this newsletter.
Your home for data science. A Medium publication sharing concepts, ideas and codes.

Times New Roman Latex
Liquid Latex
Latex Under
Ass Latex Vk
Mistress Latex Slave
Learn How to Write Markdown & LaTeX in The Jupyter Notebook
Настройка LaTeX-шаблонов для Jupyter notebook / Хабр
Learning LaTeX in Jupyter Notebooks – Mike Pawliuk ...
(some) LaTeX environments for Jupyter notebook — jupyter ...
LaTeX - Mathematical Python
Footnotes - Overleaf, Online LaTeX Editor
jupyter_latex_envs · PyPI
Notebook Latex




Report Page