Зробіть форк на GitHub

Презентації у Markdown,
відрендерені на чистому Go.

slides читає той Markdown, який читає Marp — директиви, --- між слайдами, фони ![bg], нотатки доповідача, вбудовані теми — і додає дві речі, яких у Marp немає: шаблони Go усередині презентації та kinds (види слайдів), щоб слайд казав, чим він є, а не повторював, як він виглядає.

v0.20.2 — випущеноHTML, expand, PNG/JPEG, векторний і доступний PDF, редаговані PPTX та ODP, векторні математика й емодзі, код із номерами рядків і виносками, HCL, watch, serve, вигляд доповідача та вигляд огляду уже сьогоднібез headless Chrome
talk.md
---
marp: true
paginate: true
footer: {{ .talk }}
data:
  talk: Pure Go slides
  topics: [Why, How, Next]
---

<!-- _kind: title -->
# {{ .talk }}

{{ range .topics }}
---

# {{ . }}
{{ end }}
Одна організація, 5 репозиторіїв
Сумісність

Презентація Marp — це презентація go-slides.

Синтаксис — це синтаксис Marpit і Marp Core, а не його діалект. Презентація, написана для Marp, читається тут так само, а slides expand повертає звичайний Markdown Marp, тож нічого, написаного з двома доповненнями нижче, не заблоковано.

➗

Слайди та директиви

--- розділяє слайди. Глобальні, локальні та spot-директиви (_class), у front matter або в HTML-коментарях, зі спадкуванням Marp від слайда до слайда.

🖼️

Зображення та фони

![bg], його розміри й фільтри, розділені фони та ключові слова зображень, які розуміє Marp.

🗒️

Навколо слайда

Верхній і нижній колонтитули та нумерація; нотатки доповідача з коментарів; поетапні списки; <style scoped> для CSS одного слайда.

🎨

Вбудовані теми

default, gaia та uncover, що вибираються через theme: як у Marp.

Перше доповнення

Шаблони Go всередині презентації.

Презентація — це 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. Ваша чернетка переживає перезавантаження, лише у вашому браузері.

Що це вміє

Спершу HTML. Решта — без браузера, яким треба керувати.

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 — вигляд доповідача — див. документацію.

HTML v0.1.0

Одна сторінка на презентацію, як її рендерить Marp: кожен слайд — <section> в SVG-рамці, що масштабується під вікно, з CSS теми та клавіатурним переглядачем.

slides expand v0.1.0

Презентація з обчисленими шаблонами та kinds, перетвореними на spot-директиви, переписана як звичайний Markdown Marp — будь-який інструмент Marp може взятися за неї далі.

notes, kinds, themes v0.1.0

slides notes виводить нотатки доповідача; slides kinds і slides themes перелічують те, що може назвати презентація.

slides.yaml v0.1.0

Файл конфігурації для теки презентацій: спільні kinds, теми, дані шаблонів, параметри HTML і мова.

PNG / JPEG v0.1.0

--images png|jpeg записує по одному зображенню на слайд (deck.001.png, …), --image — перший слайд. Рендерить go-webengine, рушій браузера на Go — не headless Chrome. --image-scale 2 рендерить із подвійною щільністю.

PDF v0.1.0

--pdf або -o deck.pdf: одна сторінка на слайд розміру слайда, зі змістом зі слайдів і заголовків, пише go-pdfkit. Шрифти вбудовані; мережа не задіяна. Починаючи з v0.4.0 сторінки векторні: текст, який можна виділяти, чіткі фігури, 758 КіБ на 100 слайдів проти 837 КіБ у marp-cli (--pdf-raster зберігає одне зображення на сторінку).

PPTX v0.2.0

--pptx або -o deck.pptx: з нотатками доповідача та метаданими презентації, пише go-ooxml. Починаючи з v0.5.0 слайди редаговані — текстові блоки власними шрифтами презентації (вбудованими), фігури, градієнти, зображення, що зберігаються один раз, — тоді як у marp-cli це картинки (--pptx-raster їх зберігає). 100 слайдів: 348 мс і 760 КіБ проти 7,8 с і 7,2 МіБ у marp-cli.

Математика й підсвічування v0.2.0

$…$ та $$…$$ верстає go-tex, блоки коду підсвічує go-rouge — в HTML-сторінці, зображеннях і PDF.

ODP v0.3.0

--odp або -o deck.odp: презентація OpenDocument з нотатками доповідача — редагована починаючи з v0.5.0, як і PPTX (--odp-raster для однієї картинки на слайд).

Заголовки за шириною v0.3.0

# <!-- fit --> Title заповнює ширину слайда в один рядок, на сторінці й у кожному експорті.

Емодзі v0.4.0

Шорткоди :smile: та емодзі Unicode (😄 👩‍💻 🇫🇷) стають зображеннями Twemoji точно так, як їх пише Marp Core, — але вбудованими з go-icons/twemoji замість завантаження з CDN, тож мережа не потрібна, і вони малюються на сторінці, у зображеннях, PDF, PPTX та ODP. Емодзі →

HCL v0.3.0

HCL2 скрізь, де презентація приймає YAML, — front matter ---hcl, slides.hcl, файли kinds і даних — заради виразів і функцій: footer = "${upper(data.company)} · ${page()}/${total()}". slides expand переписує front matter назад як YAML. HCL →

Watch, serve, попередній перегляд v0.6.0

--watch збирає знову те, що змінилося, і перезавантажує відкриті сторінки; --server dir обслуговує теку презентацій — deck.md як сторінку, deck.md?pdf, ?pptx, ?png, ?notes, що перетворюються на запит, — на 127.0.0.1, перевіряючи Host і Origin та ніколи не виходячи за межі теки; --preview відкриває браузер. Маршрути й живе перезавантаження marp-cli, без його відкритого порту. Командний рядок →

Багато презентацій v0.6.0

slides -I decks/ -o site/ перетворює кожну презентацію під текою й віддзеркалює дерево; кілька файлів, тека чи шаблон одразу, -P одночасно.

Переходи v0.6.0

<!-- transition: fade 1s --> з marp-cli, з його 33 вбудованими переходами, які відтворюються через View Transition API браузера; екранний контролер; --template bare. Експорти в PDF, PPTX і ODP також несуть їх, на наступному слайді, а списки з фрагментами стають у PPTX і ODP побудовами по клацанню (--pdf-fragments записує одну сторінку PDF на крок). Починаючи з v0.18.0; перевірено лише в LibreOffice, не в PowerPoint.

Нотатки в PDF, метадані, параметри marp-cli v0.6.0

--notes записує нотатки доповідача текстом, --pdf-notes кладе їх на сторінки PDF, --pdf-outlines — його закладки; --title, --author, --keywords, --url, --og-image, --theme; читаються .marprc та --config-file (JSON, YAML) з marp-cli.

Вигляд огляду v0.8.0

Натисніть o: усі слайди в сітці, стрілки вибирають один, Enter або клацання веде до нього — поверх сторінки чи вигляду доповідача, з URL і синхронізацією marp-cli, без мережі. Слайди підписані й фокусовані; закритий огляд інертний. Командний рядок →

Вигляд доповідача v0.7.0

Натисніть p на сторінці: поточний слайд, наступний крок, ваші нотатки доповідача (екрановані, ніколи не в тому, що читає екранний читач аудиторії), годинник і таймер, у другому вікні, що слідує за першим, а перше за ним, — URL і синхронізація marp-cli, через localStorage, без сервера й мережі. Близько 10 КБ на сторінку. Командний рядок →

Номери рядків і виноски в коді v0.8.0

```go {lineNumbers} нумерує рядки блока коду ({lineNumbers=10} починає з 10); маркер у коментарі наприкінці рядка (// <1>) з нумерованим списком після блока дає нумерований диск на рядку та на його примітці — на сторінці, у зображеннях, PDF, PPTX та ODP. Номери й диски не копіюються разом із кодом. Математика й код →

Пакети тем v0.18.0

Тема в одному файлі .gsta.xz: tar-архів, стиснений xz, з theme.hcl, який називає її та перелічує її CSS, шрифти, ресурси й kinds. slides theme pack|verify|install|list|remove керують пакетами, а --theme приймає один із них. Архіви — це недовірений ввід: посилання, небезпечні шляхи, бомби та неправильні контрольні суми відхиляються з кодованими помилками. Пакети тем →

Записи термінала v0.18.0

![cast](demo.cast) вбудовує запис asciinema: він відтворюється у вбудованому програвачі на HTML-сторінці, без скриптів третіх сторін і з паузою за зменшеної анімації; у PDF, PPTX та ODP екран у вибраний момент (#t=12.5) малюється векторним текстом. Записи термінала →

Анімації в експортах v0.18.0

Переходи Marp стають переходами слайдів у PPTX та ODP, а поетапні списки — появою по кліку; кожна сторінка PDF отримує перехід /Trans, а --pdf-fragments записує одну сторінку на крок фрагмента. Командний рядок →

Відео v0.19.0

![video](clip.mp4#t=12.5) вбудовує відео: браузер відтворює його на HTML-сторінці, ніколи не вмикаючи звук самостійно і ставлячи на паузу за зменшеного руху; PDF показує кадр-прев'ю у вибраний момент із посиланням на файл, а PPTX та ODP вбудовують відео. Відео →

Анімований SVG v0.20.0

Зображення SVG, що анімується саме, відтворюється на сторінці HTML. У PPTX і ODP кожен анімований елемент є фігурою з власною анімацією (рух, обертання, масштаб, прозорість, колір), що стартує разом зі слайдом, або анімованим GIF там, де вони не можуть цього виразити; PDF і зображення показують початковий стан. Локальне зображення, заблоковане без --allow-local-files, тепер повідомляється, а не відкидається мовчки. Анімований SVG →

Організація

Репозиторії

slides v0.20.2

Команда slides та її бібліотека: Markdown Marp, розібраний і відрендерений на Go, з шаблонами Go та kinds слайдів понад тим. Випущено як v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.

docs v0.20

Документація (Hugo + Hextra), що описує v0.20.2: початок роботи, сумісність з Marp, шаблони, kinds і командний рядок. Джерело →

vscode v0.5.0

Розширення 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 →

brand готово

Знак — слайд на підставці, в індиго родини документів — і всі його формати: SVG, PNG, JPG, ICO, ICNS, аватар і соціальне зображення.

gitd v0.1.1

slides-gitd — git-бекенд для плейграунда go-slides, що розгортається самостійно: облікові дані форджа залишаються на сервері, кожен користувач ізольований, а працює все за oauth2-proxy. Чистий Go.

Частина родини документів.

Разом із go-richdoc, go-ooxml, go-tex та go-docutils: документи, що читаються, верстаються й записуються на Go, без жодного C.

Організація на GitHub →