Экспорт из ipynb в PDF с сохранением русского языка. Python nbconvert
я столкнулся с проблемой при попытке экспорта файла ipynb в PDF используя команду
jupyter nbconvert --to pdf C:\Users\idkon\Documents\DLS\neural_networks_pytorch.ipynb
из библиотеки nbconvert
При экспорте не сохраняются символы русского алфавита. В итоге я должен был бы получить что-то такое:

А получаю это:
Подскажите пожалуйста, как избежать этого? MIKTeX скачан и русский язык там есть, Pandoc тоже.
Ответы (1 шт):
Этому вопросу больше двух лет, но, возможно, ответ кому-то пригодится.
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-файле будут отображаться кириллические буквы.
Windows + MikTex
%%% пока не готово

