Содержание
Проблематика
Здесь я обычно расписываю длиннющий (или не очень) список причин, почему стоит пользоваться именно этой штуковиной, какие проблемы она решает.
Но это не тот случай.
До сих пор я еще не находил лучше вариантов чем тот же PowerPoint.
Могу только придумать две причины, почему стоит этим пользоваться:
-
У Вас на компьютере нет ничего, но надо более менее быстро запилить простенькую презентацию и лень ставить <здесь по вкусу>Office
-
Показать всем, какой Вы гуру opensource-а, терминала и тому подобного
Если Вы нашли себя в этом или просто праздно решили почитать, то welcome.
Marp
Позиционируют себя как Markdown Presentation Ecosystem. Построены на базе небольшого фреймворка для построения слайдов на базе CSS/HTML Marpit.
Пример из их доки:
---theme: gaia_class: leadpaginate: truebackgroundColor: #fffbackgroundImage: url('https://marp.app/assets/hero-background.svg')---

# **Marp**
Markdown Presentation Ecosystem
https://marp.app/
---
# How to write slides
Split pages by horizontal ruler (`---`). It's very simple! :satisfied:
` ``` `markdown# Slide 1
foobar
---
# Slide 2
foobar` ``` `
И так такой простой код рендерится в 2 слайда:

Рассмотрим подробнее некоторые особенности.
Рендеринг
Рендерить готовую презентацию можно несколькими способами. На офф сайте пишут про два основных - CLI и VS Code.
В случае с VS Code-ом ставится расширение. После этого работают Живые preview слайдов, экспорт в различные форматы и прочее. Если Вы любите работать в VS Code - то это вариант для Вас.
Второй вариант - поставить утилиту marp
и рендерить с помощью нее.
# Arch Linuxyay -S marp-cli-bin
# MacOSbrew install marp-cli
# И так далее
После этого все просто:
# Preview в браузереmarp ./prezentation.md --preview
# Экспорт в PowerPointmarp ./prezentation.md --pptx
# Экспорт в PDFmarp ./prezentation.md --pdf
На самом деле параметров куда больше, но начинать можно уже отсюда.
Синтаксис
Любая презентация в Marp начинается с заголовка:
---theme: gaia_class: leadpaginate: truebackgroundColor: #fffbackgroundImage: url('https://marp.app/assets/hero-background.svg')---
Здесь задаются тема, нумерация страниц, общие фоны…
Дальше идет самый обычный Mardkown. Тут все как обычно: заголовок слайда как H1 - # Титульный слайд
, работают курсивы, полужирные шрифты, блоки кода.
Изображения
Интересная работа с картинками - обычно в квадратных скобочках указывается alt
для той или иной картинки, здесь же настраиваются параметры картинки. К примеру:

Здесь для картинки задаются ширина и высота в пикселях.

Здесь картинка становится черно-белой.

Здесь картинка станет фоном для текущего слайда

Здесь слайд поделится на 2 половины, слева будет картинка, а справа - содержимое слайда.
Вариантов полно, подробнее искать туть
Но порой приходится прибегать к вставкам на HTML/CSS. Например, если нам надо, чтобы на слайде было несколько картинок в рядок, то вверху презентации прописывается кастомный код:
<style>.container{ display: flex;}.col { flex: 1;}</style>
А картинки на слайде прописываются как
<div class="container">


</div>
Кастомные стили
Стилей полно, все они применяются по-своему, но в целом это решается следующими способами: либо мы прописываем директиву <style></style>
, в которой описываем необходимые нам стили (как это было в примере выше).
Либо второй вариант - вынести все это дело в отдельный файл, в заголовке прописать имя кастомной темы и при рендеринге указать путь до этого файла:
marp ./prezentation.md --theme-set ./themes/custom.css --allow-local-files
Анимации
Если Вы экспортируете в PDF, то никаких анимаций не будет, но можно в целом начать со следующего:
<style>@keyframes marp-outgoing-transition-slide-up { from { transform: translateY(0%); } to { transform: translateY(-100%); }}@keyframes marp-incoming-transition-slide-up { from { transform: translateY(100%); } to { transform: translateY(0%); }}</style>
В данном случае слайды будут просто уезжать вверх.
Данный функционал появился относительно недавно и отправной точкой можно считать вот эту статейку
Заключение
Это достаточно новый для меня инструмент, и я буду докидывать по мере возможности еще какие-то штуки, которые мне понравятся или будут необходимы. Но инструмент потенциально интересный - можно генерировать презентации в CI, встраивать презентации прямо в сайты. Все ограничено только нашей фантазией!