Zrób fork na GitHubie

Prezentacje w Markdown,
renderowane w czystym Go.

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.

v0.20.2 — wydanaHTML, expand, PNG/JPEG, wektorowy i dostępny PDF, edytowalne PPTX i ODP, wektorowa matematyka i emoji, kod z numerami linii i objaśnieniami, HCL, watch, serve, widok prelegenta i widok przeglądu już dziśbez 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 }}
Jedna organizacja, 5 repozytoriów
Zgodność

Prezentacja Marp to prezentacja go-slides.

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.

➗

Slajdy i dyrektywy

--- dzieli slajdy. Dyrektywy globalne, lokalne i punktowe (_class), we front matter lub w komentarzach HTML, z dziedziczeniem Marp od slajdu do slajdu.

🖼️

Obrazy i tła

![bg], jego rozmiary i filtry, tła dzielone oraz słowa kluczowe obrazów, które rozumie Marp.

🗒️

Wokół slajdu

Nagłówek, stopka i numeracja stron; notatki prelegenta z komentarzy; listy stopniowane; <style scoped> dla CSS jednego slajdu.

🎨

Wbudowane motywy

default, gaia i uncover, wybierane przez theme: jak w Marp.

Pierwszy dodatek

Szablony Go, wewnątrz prezentacji.

Prezentacja jest text/template, wyliczanym przed parsowaniem Markdownu — więc szablon może generować slajdy, a prezentacja może być danymi plus układem.

🔤

Wartości

{{ .title }} czyta front matter, a jego mapa data: przechowuje wszystko inne, czego potrzebuje prezentacja.

🔁

Slajdy z danych

{{ range }}, które emituje ---, jest generatorem slajdów: jeden slajd na element, na prelegenta, na wydanie.

#️⃣

Strona i suma

{{ page }} i {{ total }} są znane dopiero po podziale prezentacji i wtedy są uzupełniane.

🧾

Kod zostaje nietknięty

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.

Drugi dodatek

Slajd mówi, czym jest.

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.

🏷️

Wbudowane

title, section, content i blank, każdy z możliwością przedefiniowania.

📁

Zdefiniowane raz, wspólne

We kinds: we front matter albo w pliku YAML z kinds, który wskazują wszystkie prezentacje zespołu.

🧹

Nic nie przecieka

Przełączenie kind czyści to, co ustawił poprzedni, więc klasa czy stopka nie przechodzą za tobą do następnej sekcji.

Wypróbuj

Prezentacja w przeglądarce.

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.

⚡

Na żywo

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.

💡

Wbudowana pomoc

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.

🔗

Udostępnij, zapisz, zachowaj

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.

Co robi

Najpierw HTML. Reszta bez przeglądarki do sterowania.

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ę.

HTML v0.1.0

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.

slides expand v0.1.0

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.

notes, kinds, themes v0.1.0

slides notes wypisuje notatki prelegenta; slides kinds i slides themes wyliczają to, co prezentacja może nazwać.

slides.yaml v0.1.0

Plik konfiguracyjny dla katalogu prezentacji: wspólne kinds i motywy, dane szablonów, opcje HTML i język.

PNG / JPEG v0.1.0

--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 v0.1.0

--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 v0.2.0

--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.

Matematyka i podświetlanie v0.2.0

$…$ i $$…$$ składane przez go-tex, bloki kodu podświetlane przez go-rouge — na stronie HTML, w obrazach i w PDF.

ODP v0.3.0

--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).

Dopasowane nagłówki v0.3.0

# <!-- fit --> Title wypełnia szerokość slajdu w jednej linii, na stronie i w każdym eksporcie.

Emoji v0.4.0

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 →

HCL v0.3.0

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, serve, podgląd v0.6.0

--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ń →

Wiele prezentacji v0.6.0

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.

Przejścia v0.6.0

<!-- 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.

Notatki w PDF, metadane, opcje marp-cli v0.6.0

--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.

Widok przeglądu v0.8.0

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ń →

Widok prelegenta v0.7.0

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ń →

Numery linii i objaśnienia kodu v0.8.0

```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 →

Pakiety motywów v0.18.0

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 →

Nagrania terminala v0.18.0

![cast](demo.cast) 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 →

Animacje w eksportach v0.18.0

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ń →

Wideo v0.19.0

![video](clip.mp4#t=12.5) 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 →

Animowany SVG v0.20.0

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 →

Organizacja

Repozytoria

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.

docs v0.20

Dokumentacja (Hugo + Hextra), opisująca v0.20.2: pierwsze kroki, zgodność z Marp, szablony, kinds i wiersz poleceń. Źródło →

vscode v0.5.0

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 →

brand gotowe

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.

gitd v0.1.1

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.

Część rodziny dokumentów.

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 →