slides v0.20.2
Команда slides та її бібліотека: Markdown Marp, розібраний і відрендерений на Go, з шаблонами Go та kinds слайдів понад тим. Випущено як v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.
slides читає той Markdown, який читає Marp — директиви, --- між слайдами, фони ![bg], нотатки доповідача, вбудовані теми — і додає дві речі, яких у Marp немає: шаблони Go усередині презентації та kinds (види слайдів), щоб слайд казав, чим він є, а не повторював, як він виглядає.
Синтаксис — це синтаксис Marpit і Marp Core, а не його діалект. Презентація, написана для Marp, читається тут так само, а slides expand повертає звичайний Markdown Marp, тож нічого, написаного з двома доповненнями нижче, не заблоковано.
--- розділяє слайди. Глобальні, локальні та spot-директиви (_class), у front matter або в HTML-коментарях, зі спадкуванням Marp від слайда до слайда.
![bg], його розміри й фільтри, розділені фони та ключові слова зображень, які розуміє Marp.
Верхній і нижній колонтитули та нумерація; нотатки доповідача з коментарів; поетапні списки; <style scoped> для CSS одного слайда.
default, gaia та uncover, що вибираються через theme: як у Marp.
Презентація — це text/template, що обчислюється до розбору Markdown, — тож шаблон може генерувати слайди, а презентація може бути даними плюс макетом.
{{ .title }} читає front matter, а його відображення data: містить усе, що ще потрібно презентації.
{{ range }}, що видає ---, — це генератор слайдів: один слайд на елемент, на доповідача, на випуск.
{{ page }} і {{ total }} відомі лише після розбиття презентації й заповнюються саме тоді.
Блоки коду й рядковий код типово не обчислюються, тож слайд про шаблони Go може його показати. include підтягує інший файл.
kind: section називає набір локальних директив — верхній колонтитул, нижній колонтитул, нумерацію, клас, фон. kind: застосовується до слайда й наступних, _kind: — до одного слайда. Директиви, написані на слайді, як і раніше мають перевагу.
title, section, content і blank, кожен можна перевизначити.
У kinds: front matter або у файлі kinds YAML, який називає кожна презентація команди.
Перемикання kinds скидає те, що встановив попередній, тож клас чи нижній колонтитул не перейде за вами до наступного розділу.
Playground — це сам go-slides, скомпільований у WebAssembly: пишіть ліворуч, слайди йдуть слідом праворуч. Нічого не встановлюється й нічого не надсилається на сервер. Інтерфейс самого Playground відповідає мові сторінки.
Слайди рендеряться у воркері під час набору, попередній перегляд прокручується разом із редактором, за ним йдуть мінікарта й колонка мініатюр слайдів, а показ презентує з переходами. Present відкриває вигляд доповідача з вашими нотатками й таймером у другому вікні.
Автодоповнення та пояснення для директив, kinds і функцій шаблонів; проблеми, позначені на своєму рядку; приклади презентацій, серед них математика, зображення й фони (киньте файл зображення в редактор); посилання на документацію. Панель файлів містить проєкт: ваші теми, kinds і файли даних та медіа, які ви скидаєте, у тому макеті, який збирає команда slides. Вкладка Format пише Markdown за вас, з Undo: жирний, курсив, підкреслення, списки, таблиця із сітки, вирівнювання тексту слайда й посилання. Кожна панель змінює розмір.
Посилання несе саму презентацію, стиснуту в його #. Збережіть її як HTML, векторний PDF або редаговану презентацію PowerPoint чи OpenDocument, усе створюється у вашому браузері, або завантажте весь проєкт як .zip. Ваша чернетка переживає перезавантаження, лише у вашому браузері.
marp-cli рендерить зображення й PDF, керуючи headless Chrome. Тут це натомість роблять власні бібліотеки Go флоту. Зображення й PDF з'явилися у v0.1.0, PPTX, математика й підсвічування — у v0.2.0, ODP, заголовки за шириною й HCL — у v0.3.0, векторний PDF (з текстом, який можна виділяти) та емодзі — у v0.4.0; у v0.5.0 PPTX і ODP стали редагованими, тоді як PPTX у marp-cli — це картинки; v0.6.0 додає watch, serve, переходи та параметри marp-cli, v0.7.0 — вигляд доповідача — див. документацію.
Одна сторінка на презентацію, як її рендерить Marp: кожен слайд — <section> в SVG-рамці, що масштабується під вікно, з CSS теми та клавіатурним переглядачем.
Презентація з обчисленими шаблонами та kinds, перетвореними на spot-директиви, переписана як звичайний Markdown Marp — будь-який інструмент Marp може взятися за неї далі.
slides notes виводить нотатки доповідача; slides kinds і slides themes перелічують те, що може назвати презентація.
Файл конфігурації для теки презентацій: спільні kinds, теми, дані шаблонів, параметри HTML і мова.
--images png|jpeg записує по одному зображенню на слайд (deck.001.png, …), --image — перший слайд. Рендерить go-webengine, рушій браузера на Go — не headless Chrome. --image-scale 2 рендерить із подвійною щільністю.
--pdf або -o deck.pdf: одна сторінка на слайд розміру слайда, зі змістом зі слайдів і заголовків, пише go-pdfkit. Шрифти вбудовані; мережа не задіяна. Починаючи з v0.4.0 сторінки векторні: текст, який можна виділяти, чіткі фігури, 758 КіБ на 100 слайдів проти 837 КіБ у marp-cli (--pdf-raster зберігає одне зображення на сторінку).
--pptx або -o deck.pptx: з нотатками доповідача та метаданими презентації, пише go-ooxml. Починаючи з v0.5.0 слайди редаговані — текстові блоки власними шрифтами презентації (вбудованими), фігури, градієнти, зображення, що зберігаються один раз, — тоді як у marp-cli це картинки (--pptx-raster їх зберігає). 100 слайдів: 348 мс і 760 КіБ проти 7,8 с і 7,2 МіБ у marp-cli.
$…$ та $$…$$ верстає go-tex, блоки коду підсвічує go-rouge — в HTML-сторінці, зображеннях і PDF.
--odp або -o deck.odp: презентація OpenDocument з нотатками доповідача — редагована починаючи з v0.5.0, як і PPTX (--odp-raster для однієї картинки на слайд).
# <!-- fit --> Title заповнює ширину слайда в один рядок, на сторінці й у кожному експорті.
Шорткоди :smile: та емодзі Unicode (😄 👩💻 🇫🇷) стають зображеннями Twemoji точно так, як їх пише Marp Core, — але вбудованими з go-icons/twemoji замість завантаження з CDN, тож мережа не потрібна, і вони малюються на сторінці, у зображеннях, PDF, PPTX та ODP. Емодзі →
HCL2 скрізь, де презентація приймає YAML, — front matter ---hcl, slides.hcl, файли kinds і даних — заради виразів і функцій: footer = "${upper(data.company)} · ${page()}/${total()}". slides expand переписує front matter назад як YAML. HCL →
--watch збирає знову те, що змінилося, і перезавантажує відкриті сторінки; --server dir обслуговує теку презентацій — deck.md як сторінку, deck.md?pdf, ?pptx, ?png, ?notes, що перетворюються на запит, — на 127.0.0.1, перевіряючи Host і Origin та ніколи не виходячи за межі теки; --preview відкриває браузер. Маршрути й живе перезавантаження marp-cli, без його відкритого порту. Командний рядок →
slides -I decks/ -o site/ перетворює кожну презентацію під текою й віддзеркалює дерево; кілька файлів, тека чи шаблон одразу, -P одночасно.
<!-- transition: fade 1s --> з marp-cli, з його 33 вбудованими переходами, які відтворюються через View Transition API браузера; екранний контролер; --template bare. Експорти в PDF, PPTX і ODP також несуть їх, на наступному слайді, а списки з фрагментами стають у PPTX і ODP побудовами по клацанню (--pdf-fragments записує одну сторінку PDF на крок). Починаючи з v0.18.0; перевірено лише в LibreOffice, не в PowerPoint.
--notes записує нотатки доповідача текстом, --pdf-notes кладе їх на сторінки PDF, --pdf-outlines — його закладки; --title, --author, --keywords, --url, --og-image, --theme; читаються .marprc та --config-file (JSON, YAML) з marp-cli.
Натисніть o: усі слайди в сітці, стрілки вибирають один, Enter або клацання веде до нього — поверх сторінки чи вигляду доповідача, з URL і синхронізацією marp-cli, без мережі. Слайди підписані й фокусовані; закритий огляд інертний. Командний рядок →
Натисніть p на сторінці: поточний слайд, наступний крок, ваші нотатки доповідача (екрановані, ніколи не в тому, що читає екранний читач аудиторії), годинник і таймер, у другому вікні, що слідує за першим, а перше за ним, — URL і синхронізація marp-cli, через localStorage, без сервера й мережі. Близько 10 КБ на сторінку. Командний рядок →
```go {lineNumbers} нумерує рядки блока коду ({lineNumbers=10} починає з 10); маркер у коментарі наприкінці рядка (// <1>) з нумерованим списком після блока дає нумерований диск на рядку та на його примітці — на сторінці, у зображеннях, PDF, PPTX та ODP. Номери й диски не копіюються разом із кодом. Математика й код →
Тема в одному файлі .gsta.xz: tar-архів, стиснений xz, з theme.hcl, який називає її та перелічує її CSS, шрифти, ресурси й kinds. slides theme pack|verify|install|list|remove керують пакетами, а --theme приймає один із них. Архіви — це недовірений ввід: посилання, небезпечні шляхи, бомби та неправильні контрольні суми відхиляються з кодованими помилками. Пакети тем →
 вбудовує запис asciinema: він відтворюється у вбудованому програвачі на HTML-сторінці, без скриптів третіх сторін і з паузою за зменшеної анімації; у PDF, PPTX та ODP екран у вибраний момент (#t=12.5) малюється векторним текстом. Записи термінала →
Переходи Marp стають переходами слайдів у PPTX та ODP, а поетапні списки — появою по кліку; кожна сторінка PDF отримує перехід /Trans, а --pdf-fragments записує одну сторінку на крок фрагмента. Командний рядок →
 вбудовує відео: браузер відтворює його на HTML-сторінці, ніколи не вмикаючи звук самостійно і ставлячи на паузу за зменшеного руху; PDF показує кадр-прев'ю у вибраний момент із посиланням на файл, а PPTX та ODP вбудовують відео. Відео →
Зображення SVG, що анімується саме, відтворюється на сторінці HTML. У PPTX і ODP кожен анімований елемент є фігурою з власною анімацією (рух, обертання, масштаб, прозорість, колір), що стартує разом зі слайдом, або анімованим GIF там, де вони не можуть цього виразити; PDF і зображення показують початковий стан. Локальне зображення, заблоковане без --allow-local-files, тепер повідомляється, а не відкидається мовчки. Анімований SVG →
Команда slides та її бібліотека: Markdown Marp, розібраний і відрендерений на Go, з шаблонами Go та kinds слайдів понад тим. Випущено як v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.
Документація (Hugo + Hextra), що описує v0.20.2: початок роботи, сумісність з Marp, шаблони, kinds і командний рядок. Джерело →
Розширення VS Code, як Marp for VS Code — для Marp: презентації переглядаються в попередньому перегляді Markdown VS Code за допомогою go-slides, скомпільованого в WebAssembly (без бінарного файла, працює на vscode.dev), прокрутка синхронна з редактором навіть крізь шаблони, помилки на панелі Problems, автодоповнення директив, kinds і функцій шаблонів, вигляд огляду й вигляд доповідача поруч із редактором, експорт через slides, з доступним, тегованим PDF. Встановіть .vsix, доданий до випуску на GitHub; публікацію на Marketplace та Open VSX підготовлено, але її там ще немає. VS Code →
Знак — слайд на підставці, в індиго родини документів — і всі його формати: SVG, PNG, JPG, ICO, ICNS, аватар і соціальне зображення.
slides-gitd — git-бекенд для плейграунда go-slides, що розгортається самостійно: облікові дані форджа залишаються на сервері, кожен користувач ізольований, а працює все за oauth2-proxy. Чистий Go.
Разом із go-richdoc, go-ooxml, go-tex та go-docutils: документи, що читаються, верстаються й записуються на Go, без жодного C.
Організація на GitHub →