slides v0.20.2
Polecenie slides i jego biblioteka: Markdown Marp parsowany i renderowany w Go, z szablonami Go i kinds slajdów w dodatku. Wydana jako v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.
slides czyta ten Markdown, który czyta Marp — dyrektywy, --- między slajdami, tła ![bg], notatki prelegenta, wbudowane motywy — i dodaje dwie rzeczy, których Marp nie ma: szablony Go wewnątrz prezentacji oraz kinds (rodzaje slajdów), dzięki którym slajd mówi, czym jest, zamiast powtarzać, jak wygląda.
Składnia jest składnią Marpit i Marp Core, a nie jej dialektem. Prezentacja napisana dla Marp jest tu czytana tak samo, a slides expand oddaje zwykły Markdown Marp, więc nic, co napisano z użyciem dwóch poniższych dodatków, nie jest uwięzione.
--- dzieli slajdy. Dyrektywy globalne, lokalne i punktowe (_class), we front matter lub w komentarzach HTML, z dziedziczeniem Marp od slajdu do slajdu.
![bg], jego rozmiary i filtry, tła dzielone oraz słowa kluczowe obrazów, które rozumie Marp.
Nagłówek, stopka i numeracja stron; notatki prelegenta z komentarzy; listy stopniowane; <style scoped> dla CSS jednego slajdu.
default, gaia i uncover, wybierane przez theme: jak w Marp.
Prezentacja jest text/template, wyliczanym przed parsowaniem Markdownu — więc szablon może generować slajdy, a prezentacja może być danymi plus układem.
{{ .title }} czyta front matter, a jego mapa data: przechowuje wszystko inne, czego potrzebuje prezentacja.
{{ range }}, które emituje ---, jest generatorem slajdów: jeden slajd na element, na prelegenta, na wydanie.
{{ page }} i {{ total }} są znane dopiero po podziale prezentacji i wtedy są uzupełniane.
Bloki kodu i kod w tekście domyślnie nie są wyliczane, więc slajd o szablonach Go może jeden pokazać. include wciąga inny plik.
kind: section nazywa zestaw dyrektyw lokalnych — nagłówek, stopka, numeracja, klasa, tło. kind: dotyczy slajdu i następnych, _kind: jednego slajdu. Dyrektywy zapisane na slajdzie nadal mają pierwszeństwo.
title, section, content i blank, każdy z możliwością przedefiniowania.
We kinds: we front matter albo w pliku YAML z kinds, który wskazują wszystkie prezentacje zespołu.
Przełączenie kind czyści to, co ustawił poprzedni, więc klasa czy stopka nie przechodzą za tobą do następnej sekcji.
Playground to sam go-slides skompilowany do WebAssembly: piszesz po lewej, slajdy podążają po prawej. Nic się nie instaluje i nic nie jest wysyłane na serwer. Interfejs samego Playground podąża za językiem strony.
Slajdy renderują się w workerze w trakcie pisania, podgląd przewija się razem z edytorem, podążają za nim minimapa i kolumna miniatur slajdów, a pokaz slajdów prezentuje się z przejściami. Present otwiera w drugim oknie widok prelegenta z twoimi notatkami i stoperem.
Uzupełnianie i objaśnienia dyrektyw, kinds i funkcji szablonów; problemy zaznaczone w ich linii; przykładowe prezentacje, m.in. matematyka, obrazy i tła (upuść plik obrazu do edytora); odnośniki do dokumentacji. Panel plików przechowuje projekt: twoje motywy, kinds i pliki danych oraz upuszczone media, w układzie, który buduje polecenie slides. Karta Format pisze za ciebie Markdown, z cofaniem: pogrubienie, kursywa, podkreślenie, listy, tabela z siatki, wyrównanie tekstu slajdu i odnośniki. Każdy panel zmienia rozmiar.
Odnośnik niesie samą prezentację, skompresowaną w swoim #. Zapisz ją jako HTML, wektorowy PDF albo edytowalną prezentację PowerPoint lub OpenDocument, wszystko tworzone w przeglądarce, albo pobierz cały projekt jako .zip. Twój szkic przetrwa przeładowanie, tylko w twojej przeglądarce.
marp-cli renderuje obrazy i PDF, sterując headless Chrome. Tu robią to zamiast niego własne biblioteki Go z naszej floty. Obrazy i PDF pojawiły się w v0.1.0, PPTX, matematyka i podświetlanie w v0.2.0, ODP, dopasowane nagłówki i HCL w v0.3.0, wektorowy PDF (z zaznaczalnym tekstem) i emoji w v0.4.0; w v0.5.0 PPTX i ODP stały się edytowalne, podczas gdy PPTX z marp-cli to obrazy; v0.6.0 dodaje watch, serve, przejścia i opcje marp-cli, v0.7.0 widok prelegenta — zobacz dokumentację.
Jedna strona na prezentację, tak jak renderuje ją Marp: każdy slajd to <section> w ramce SVG, która dopasowuje się do okna, z CSS motywu i przeglądarką obsługiwaną z klawiatury.
Prezentacja z wyliczonymi szablonami i kinds zamienionymi na dyrektywy pojedynczych slajdów, zapisana jako zwykły Markdown Marp — przejąć ją może każde narzędzie Marp.
slides notes wypisuje notatki prelegenta; slides kinds i slides themes wyliczają to, co prezentacja może nazwać.
Plik konfiguracyjny dla katalogu prezentacji: wspólne kinds i motywy, dane szablonów, opcje HTML i język.
--images png|jpeg zapisuje jeden obraz na slajd (deck.001.png, …), --image tylko pierwszy. Renderuje go-webengine, silnik przeglądarki w Go — nie headless Chrome. --image-scale 2 renderuje w podwójnej gęstości.
--pdf lub -o deck.pdf: jedna strona na slajd w jego rozmiarze, ze spisem slajdów i tytułów, zapisana przez go-pdfkit. Czcionki są osadzone; nic nie idzie przez sieć. Od v0.4.0 strony są wektorowe: tekst daje się zaznaczać, kształty są ostre, 758 KiB na 100 slajdów wobec 837 KiB w marp-cli (--pdf-raster zachowuje jeden obraz na stronę).
--pptx lub -o deck.pptx: z notatkami prelegenta i metadanymi, zapisany przez go-ooxml. Od v0.5.0 slajdy są edytowalne — pola tekstowe w czcionkach prezentacji (osadzonych), kształty, gradienty, obrazy zapisane tylko raz — podczas gdy w marp-cli są to obrazy (--pptx-raster je zachowuje). 100 slajdów: 348 ms i 760 KiB wobec 7,8 s i 7,2 MiB w marp-cli.
$…$ i $$…$$ składane przez go-tex, bloki kodu podświetlane przez go-rouge — na stronie HTML, w obrazach i w PDF.
--odp lub -o deck.odp: prezentacja OpenDocument z notatkami prelegenta — edytowalna od v0.5.0, tak jak PPTX (--odp-raster daje jeden obraz na slajd).
# <!-- fit --> Title wypełnia szerokość slajdu w jednej linii, na stronie i w każdym eksporcie.
Kody :smile: i emoji Unicode (😄 👩💻 🇫🇷) stają się obrazami Twemoji dokładnie tak, jak zapisuje je Marp Core — ale osadzonymi z go-icons/twemoji zamiast ładowanymi z CDN: bez sieci, a widać je na stronie, w obrazach, w PDF, PPTX i ODP. Emoji →
HCL2 wszędzie tam, gdzie prezentacja przyjmuje YAML — nagłówek ---hcl, slides.hcl, pliki kinds i danych — dla wyrażeń i funkcji: footer = "${upper(data.company)} · ${page()}/${total()}". slides expand zapisuje nagłówek z powrotem jako YAML. HCL →
--watch przebudowuje to, co się zmieniło, i przeładowuje otwarte strony; --server dir serwuje katalog prezentacji — deck.md jako stronę, deck.md?pdf, ?pptx, ?png, ?notes konwertowane na żądanie — na 127.0.0.1, sprawdzając Host i Origin, nigdy nie wychodząc poza katalog; --preview otwiera przeglądarkę. Trasy i przeładowanie na gorąco z marp-cli, bez jego otwartego portu. Wiersz poleceń →
slides -I decks/ -o site/ konwertuje każdą prezentację z katalogu i odtwarza jego drzewo; wiele plików, katalog lub wzorzec naraz, -P równolegle.
<!-- transition: fade 1s --> z marp-cli, z 33 wbudowanymi przejściami odtwarzanymi przez interfejs View Transition przeglądarki; pilot na ekranie; --template bare. Eksporty do PDF, PPTX i ODP również je zawierają, na następnym slajdzie, a listy z fragmentami stają się w PPTX i ODP animacjami po kliknięciu (--pdf-fragments zapisuje jedną stronę PDF na krok). Od v0.18.0; sprawdzone tylko w LibreOffice, nie zweryfikowane w PowerPoincie.
--notes zapisuje notatki prelegenta jako tekst, --pdf-notes umieszcza je na stronach PDF, --pdf-outlines jego zakładki; --title, --author, --keywords, --url, --og-image, --theme; czytane są .marprc i --config-file (JSON, YAML) z marp-cli.
Naciśnij o: wszystkie slajdy w siatce, strzałki wybierają jeden, Enter lub kliknięcie przechodzi do niego — nad stroną lub widokiem prelegenta, z adresami URL i synchronizacją z marp-cli, bez sieci. Slajdy mają etykiety i można je fokusować; zamknięty widok jest nieaktywny. Wiersz poleceń →
Naciśnij p na stronie: bieżący slajd, następny krok, twoje notatki (zabezpieczone, nigdy nie czytane przez czytnik ekranu odbiorców), zegar i stoper, w drugim oknie synchronizowanym w obu kierunkach — adresy URL i synchronizacja z marp-cli, przez localStorage, bez serwera i sieci. Około 10 KB na stronę. Wiersz poleceń →
```go {lineNumbers} numeruje linie bloku kodu ({lineNumbers=10} zaczyna od 10); znacznik w komentarzu na końcu linii (// <1>) z następującą po nim listą numerowaną umieszcza numerowaną plakietkę na linii i przy jej objaśnieniu — na stronie, w obrazach, PDF, PPTX i ODP. Numery i plakietki nie są kopiowane razem z kodem. Matematyka i kod →
Motyw w jednym pliku .gsta.xz: archiwum tar skompresowane xz, z plikiem theme.hcl, który go nazywa i wylicza jego CSS, czcionki, zasoby i kinds. slides theme pack|verify|install|list|remove zarządzają pakietami, a --theme przyjmuje jeden z nich. Archiwa to dane niezaufane: dowiązania, niebezpieczne ścieżki, bomby i błędne sumy kontrolne są odrzucane z kodowanymi błędami. Pakiety motywów →
 osadza nagranie asciinema: odtwarza się we wbudowanym odtwarzaczu na stronie HTML, bez skryptu firm trzecich i wstrzymane przy ograniczonym ruchu; w PDF, PPTX i ODP ekran w wybranej chwili (#t=12.5) jest rysowany jako tekst wektorowy. Nagrania terminala →
Przejścia Marp stają się przejściami slajdów w PPTX i ODP, a listy stopniowane — płynnymi pojawieniami krok po kroku po kliknięciu; każda strona PDF dostaje przejście /Trans, a --pdf-fragments zapisuje jedną stronę na krok fragmentu. Wiersz poleceń →
 osadza wideo: przeglądarka odtwarza je na stronie HTML, nigdy samo z dźwiękiem i wstrzymane przy ograniczonym ruchu; PDF pokazuje klatkę podglądu w wybranej chwili z odnośnikiem do pliku, a PPTX i ODP osadzają wideo. Wideo →
Obraz SVG, który animuje się sam, jest odtwarzany na stronie HTML. W PPTX i ODP każdy animowany element jest kształtem z własną animacją (ruch, obrót, skala, przezroczystość, kolor), która startuje ze slajdem, albo animowanym GIF-em tam, gdzie one nie potrafią tego wyrazić; PDF i obrazy pokazują stan początkowy. Obraz lokalny zablokowany bez --allow-local-files jest teraz zgłaszany, a nie pomijany po cichu. Animowany SVG →
Polecenie slides i jego biblioteka: Markdown Marp parsowany i renderowany w Go, z szablonami Go i kinds slajdów w dodatku. Wydana jako v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.
Dokumentacja (Hugo + Hextra), opisująca v0.20.2: pierwsze kroki, zgodność z Marp, szablony, kinds i wiersz poleceń. Źródło →
Rozszerzenie VS Code, takie jak Marp for VS Code dla Marp: prezentacje podglądane w podglądzie Markdown VS Code przez go-slides skompilowane do WebAssembly (bez pliku binarnego, działa na vscode.dev), przewijanie zsynchronizowane z edytorem nawet przez szablony, błędy w panelu Problemy, uzupełnianie dyrektyw, kinds i funkcji szablonów, widok przeglądu i widok prelegenta obok edytora, eksport przez slides z dostępnym, otagowanym PDF. Zainstaluj plik .vsix dołączony do wydania na GitHubie; publikacja w Marketplace i Open VSX jest gotowa, ale jeszcze niewykonana. VS Code →
Logo — slajd stojący na swojej podstawce, w indygo rodziny dokumentów — i wszystkie jego odmiany: SVG, PNG, JPG, ICO, ICNS, awatar i obraz społecznościowy.
slides-gitd, samodzielnie hostowany backend git dla playgroundu go-slides: dane uwierzytelniające forge’a zostają na serwerze, każdy użytkownik jest odizolowany, a całość działa za oauth2-proxy. Czysty Go.
Razem z go-richdoc, go-ooxml, go-tex i go-docutils: dokumenty odczytywane, składane i zapisywane w Go, bez ani odrobiny C.
Organizacja na GitHubie →