Экспорт из ipynb в PDF с сохранением русского языка. Python nbconvert

я столкнулся с проблемой при попытке экспорта файла ipynb в PDF используя команду

jupyter nbconvert --to pdf C:\Users\idkon\Documents\DLS\neural_networks_pytorch.ipynb

из библиотеки nbconvert

При экспорте не сохраняются символы русского алфавита. В итоге я должен был бы получить что-то такое: просто вырезка из юпитер ноутбука, который нужно экспортировать

А получаю это:

вырезка из полученного PDF файла

Подскажите пожалуйста, как избежать этого? MIKTeX скачан и русский язык там есть, Pandoc тоже.


Ответы (1 шт):

Автор решения: Dmitri Chubarov

Этому вопросу больше двух лет, но, возможно, ответ кому-то пригодится.

Jupyter использует xelatex для того, чтобы генерировать PDF из тетрадки. xelatex — это LaTeX, сделанный на основе XeTeX — версии TeX, в которой используется Unicode для кодировки символов, а не байтовые кодировки, как в оригинальном TeXе.

Встроенная поддержка Unicode — это хорошо, но нужны ещё шрифты, в которых есть кириллические буквы. К сожалению, стандартный формат xelatex использует шрифты, в которых нет нужных символов.

Для решения проблемы можно воспользоваться тем, что Jupyter генерирует TeX-файл из тетрадки ipynb, используя шаблон Jinja2, который хранится в файле index.tex.j2. Место расположения этого файла и выбор шрифтов на замену зависит от окружения.

Linux + TeXLive

В Linux Jupyter ищет этот шаблон по списку директорий, первое место в котором занимает директория ~/.local/share/jupyter/nbconvert/templates/latex.

Хорошие шрифты для Linux — это шрифты семейства Droid.

В директорию с шаблонами нужно положить файл примерно такого содержания, который обеспечит подключение шрифтов Droid.

((=- Default to the notebook output style -=))
((*- if not cell_style is defined -*))
    ((* set cell_style = 'style_jupyter.tex.j2' *))
((*- endif -*))

((=- Inherit from the specified cell style. -=))
((* extends cell_style *))


%===============================================================================
% Latex Article
%===============================================================================

((*- block docclass -*))
\documentclass[11pt]{article}

((*- endblock docclass -*))

((*- block packages -*))
((( super() )))
\usepackage{droid}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{russian}
\newfontfamily{\cyrillicfont}{DroidSerif}
\newfontfamily{\cyrillicfonttt}{DroidSansMono}
\AtBeginDocument{
\setmainfont{DroidSerif-Regular.ttf}
\setsansfont{DroidSans.ttf}
\setmonofont{DroidSansMono.ttf}
}

((*- endblock packages -*))

После того, как в генерируемый TeX файл будут включены команды из бока packages, в PDF-файле будут отображаться кириллические буквы.

изображение страницы PDF-файла

Windows + MikTex

%%% пока не готово
→ Ссылка