Перейти к основному содержимому

Домашнее задание 2: Генератор LaTeX

📚 Лекция: Функциональное программирование

Дедлайн

8 дней с момента занятия.

Необходимо реализовать генератор LaTeX в функциональном стиле. Для генерации LaTeX нельзя использовать сторонние библиотеки.

Если вы никогда не работали с LaTeX

Это хороший повод попробовать! LaTeX — стандартный инструмент для вёрстки научных документов. Проверить валидность сгенерированного кода можно, например, в Overleaf.

Задача 2.1: Генерация таблиц

Написать функцию для генерации таблиц (кода .tex). На вход поступает двойной список, на выходе строка с отформатированным валидным LaTeX.

Используя другой модуль (.py файл), нужно импортировать вашу функцию и, используя её, сохранить в .tex файл пример работы этой функции. Это и будет артефактом для этой задачи.

Задача 2.2: Генерация картинок и публикация библиотеки

Написать функцию для генерации картинок в LaTeX (в том же модуле, что и предыдущую функцию). В качестве картинки использовать любую картинку (PNG файл), НО:

  1. Нужно собрать ваш код в библиотеку при помощи любого build frontend/backend
  2. Выложить в любой репозиторий
  3. Установить вашу библиотеку
  4. После этого, используя вашу библиотеку, сгенерировать по полученному 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).