Домашнее задание 2: Генератор LaTeX
📚 Лекция: Функциональное программирование
8 дней с момента занятия.
Необходимо реализовать генератор LaTeX в функциональном стиле. Для генерации LaTeX нельзя использовать сторонние библиотеки.
Это хороший повод попробовать! LaTeX — стандартный инструмент для вёрстки научных документов. Проверить валидность сгенерированного кода можно, например, в Overleaf.
Задача 2.1: Генерация таблиц
Написать функцию для генерации таблиц (кода .tex). На вход поступает двойной список, на выходе строка с отформатированным валидным LaTeX.
Используя другой модуль (.py файл), нужно импортировать вашу функцию и, используя её, сохранить в .tex файл пример работы этой функции. Это и будет артефактом для этой задачи.
Задача 2.2: Генерация картинок и публикация библиотеки
Написать функцию для генерации картинок в LaTeX (в том же модуле, что и предыдущую функцию). В качестве картинк и использовать любую картинку (PNG файл), НО:
- Нужно собрать ваш код в библиотеку при помощи любого build frontend/backend
- Выложить в любой репозиторий
- Установить вашу библиотеку
- После этого, используя вашу библиотеку, сгенерировать по полученному LaTeX PDF с таблицей из задачи 2.1 и картинкой
Генерировать PDF можно при помощи pdflatex. Но чтобы он заработал, нужен дистрибутив самого TeX (их много разных).
Артефакты: PDF-файл + ссылка на репозиторий в PyPI/Anaconda.
Задача 2.3: Dockerfile
Скорее всего, для задачи 2.2 вы руками установили какие-то бинарные зависимости LaTeX. Если другой разработчик захочет переиспользовать ваш код, то ему придётся проделать то же самое. Чтобы этого избежать, обычно используют Docker.
Задача — написать Dockerfile, в котором будут устанавливаться зависимости, запускаться ваш код (для генерации .tex), а затем генерироваться PDF.
Можно использовать Docker Compose.
Артефакт: Dockerfile (можно оставить в папке hw_2).