slides v0.13.0
Der Befehl slides und seine Bibliothek: Marps Markdown, geparst und gerendert in Go, mit Go-Templates und Folienarten obendrauf. Veröffentlicht als v0.13.0: go install github.com/go-slides/slides/cmd/slides@latest.
slides liest das Markdown, das Marp liest — Direktiven, --- zwischen den Folien, ![bg]-Hintergründe, Referentennotizen, die eingebauten Themes — und ergänzt zwei Dinge, die Marp nicht kennt: Go-Templates im Deck und Folienarten, sodass eine Folie sagt, was sie ist, statt zu wiederholen, wie sie aussieht.
Die Syntax ist die von Marpit und Marp Core, kein Dialekt davon. Ein für Marp geschriebenes Deck wird hier genauso gelesen, und slides expand liefert reines Marp-Markdown zurück — nichts, was Sie mit den beiden Erweiterungen unten schreiben, sperrt Sie ein.
--- trennt Folien. Globale, lokale und punktuelle (_class) Direktiven, im Front Matter oder in HTML-Kommentaren, mit Marps Vererbung von einer Folie zur nächsten.
![bg], seine Größen und Filter, geteilte Hintergründe und die Bildschlüsselwörter, die Marp versteht.
Kopf-, Fußzeile und Seitenzahlen; Referentennotizen aus Kommentaren; schrittweise Listen; <style scoped> für das CSS einer einzelnen Folie.
default, gaia und uncover, gewählt mit theme: wie in Marp.
Das Deck ist ein text/template, ausgewertet, bevor das Markdown geparst wird — ein Template kann also Folien erzeugen, und ein Deck kann aus Daten plus Layout bestehen.
{{ .title }} liest das Front Matter, und dessen data:-Mapping enthält alles Weitere, was das Deck braucht.
Ein {{ range }}, das --- ausgibt, ist ein Foliengenerator: eine Folie pro Eintrag, pro Vortrag, pro Release.
{{ page }} und {{ total }} sind erst bekannt, wenn das Deck in Folien geteilt ist, und werden dann eingesetzt.
Codeblöcke und Inline-Code werden standardmäßig nicht ausgewertet, sodass eine Folie über Go-Templates eines zeigen kann. include bindet eine weitere Datei ein.
kind: section benennt ein Preset lokaler Direktiven — Kopfzeile, Fußzeile, Seitenzahl, Klasse, Hintergrund. kind: gilt für die Folie und die folgenden, _kind: für eine einzelne Folie. Direktiven auf der Folie selbst haben weiterhin Vorrang.
title, section, content und blank, jede neu definierbar.
Im kinds: des Front Matters oder in einer YAML-Datei mit Folienarten, die jedes Deck eines Teams nennt.
Ein Wechsel der Folienart setzt zurück, was die vorige gesetzt hat — Klasse oder Fußzeile wandern also nicht in den nächsten Abschnitt.
Der Playground ist go-slides selbst, zu WebAssembly kompiliert: links schreiben, rechts folgen die Folien. Es wird nichts installiert und nichts an einen Server gesendet. Die Oberfläche des Playgrounds ist auf Englisch.
Die Folien werden beim Tippen in einem Worker gerendert, die Vorschau scrollt mit dem Editor, eine Minimap und eine Spalte mit Folienminiaturen folgen ihr, und die Präsentation läuft mit ihren Übergängen. „Present“ öffnet die Referentenansicht mit Ihren Notizen und einem Timer in einem zweiten Fenster.
Vervollständigung und Erklärungen für Direktiven, Folienarten und Template-Funktionen; Probleme in ihrer Zeile markiert; Beispiel-Decks, darunter Formeln, Bilder und Hintergründe (Bilddatei einfach in den Editor ziehen); Links zur Dokumentation. Ein Dateipanel hält das Projekt: Ihre Themes, Folienarten und Datendateien sowie die abgelegten Medien, im Layout, das der Befehl slides erwartet. Ein Tab „Format“ schreibt das Markdown für Sie, mit Undo: fett, kursiv, unterstrichen, Listen, eine Tabelle aus einem Raster, die Textausrichtung der Folie und Links. Jedes Panel ist in der Größe veränderbar.
Ein Link trägt das Deck selbst, komprimiert in seinem #. Speichern Sie es als HTML, Vektor-PDF oder bearbeitbares PowerPoint- oder OpenDocument-Deck, alles in Ihrem Browser erzeugt, oder laden Sie das ganze Projekt als .zip herunter. Ihr Entwurf übersteht ein Neuladen, nur in Ihrem Browser.
marp-cli rendert Bilder und PDF, indem es einen Headless-Chrome steuert. Hier übernehmen das die Go-Bibliotheken der Flotte. Bilder und PDF kamen in v0.1.0, PPTX, Formeln und Hervorhebung in v0.2.0, ODP, einpassende Überschriften und HCL in v0.3.0, das Vektor-PDF (mit markierbarem Text) und Emoji in v0.4.0; in v0.5.0 wurden PPTX und ODP bearbeitbar, während das PPTX von marp-cli aus Bildern besteht; v0.6.0 bringt watch, serve, Übergänge und die Optionen von marp-cli, v0.7.0 die Referentenansicht — siehe die Dokumentation.
Eine Seite pro Deck, so wie Marp sie rendert: jede Folie ein SVG-gerahmtes <section>, das mit dem Fenster skaliert, das CSS des Themes und ein Tastatur-Viewer.
Das Deck mit ausgewerteten Templates und in punktuelle Direktiven umgewandelten Folienarten, zurückgeschrieben als reines Marp-Markdown — damit jedes Marp-Werkzeug es weiterverarbeiten kann.
slides notes gibt die Referentennotizen aus; slides kinds und slides themes listen auf, was ein Deck benennen kann.
Eine Konfigurationsdatei für einen Ordner mit Decks: gemeinsame Folienarten, Themes, Template-Daten, HTML-Optionen und Sprache.
--images png|jpeg schreibt ein Bild pro Folie (deck.001.png, …), --image die erste Folie. Gerendert von go-webengine, einer Browser-Engine in Go — kein Headless-Chrome. --image-scale 2 rendert in doppelter Dichte.
--pdf oder -o deck.pdf: eine Seite pro Folie in der Foliengröße, mit einer Gliederung aus Folien und Überschriften, geschrieben von go-pdfkit. Schriften sind eingebettet; nichts greift aufs Netz zu. Seit v0.4.0 sind die Seiten Vektoren: markierbarer Text, scharfe Formen, 758 KiB für 100 Folien gegenüber 837 KiB bei marp-cli (--pdf-raster behält ein Bild pro Seite).
--pptx oder -o deck.pptx: mit Referentennotizen und den Metadaten des Decks, geschrieben von go-ooxml. Seit v0.5.0 sind die Folien bearbeitbar — Textfelder in den eigenen (eingebetteten) Schriften des Decks, Formen, Verläufe, einmalig gespeicherte Bilder — während die von marp-cli Bilder sind (--pptx-raster behält sie bei). 100 Folien: 348 ms und 760 KiB, gegenüber 7,8 s und 7,2 MiB bei marp-cli.
$…$ und $$…$$, gesetzt von go-tex, Codeblöcke hervorgehoben von go-rouge — in der HTML-Seite, in Bildern und im PDF.
--odp oder -o deck.odp: eine OpenDocument-Präsentation mit Referentennotizen — seit v0.5.0 bearbeitbar, wie das PPTX (--odp-raster für ein Bild pro Folie).
# <!-- fit --> Title füllt die Folienbreite in einer Zeile, auf der Seite und in jedem Export.
:smile:-Shortcodes und Unicode-Emoji (😄 👩💻 🇫🇷) werden zu Twemoji-Bildern, genau wie Marp Core sie schreibt — aber aus go-icons/twemoji eingebettet statt von einem CDN geladen, brauchen sie also kein Netz und erscheinen auf der Seite, in Bildern, PDF, PPTX und ODP. Emoji →
HCL2 überall dort, wo ein Deck YAML nimmt — ein ---hcl-Front-Matter, slides.hcl, Folienarten und Datendateien — für Ausdrücke und Funktionen: footer = "${upper(data.company)} · ${page()}/${total()}". slides expand schreibt das Front Matter als YAML zurück. HCL →
--watch baut Geändertes neu und lädt die offenen Seiten neu; --server dir stellt einen Ordner mit Decks bereit — deck.md als Seite, deck.md?pdf, ?pptx, ?png, ?notes auf Anfrage konvertiert — auf 127.0.0.1, mit Prüfung von Host und Origin, ohne je den Ordner zu verlassen; --preview öffnet den Browser. Die Routen und das Live-Reload von marp-cli, ohne dessen offenen Port. Kommandozeile →
slides -I decks/ -o site/ konvertiert jedes Deck unter einem Ordner und spiegelt den Baum; mehrere Dateien, ein Ordner oder ein Muster auf einmal, -P gleichzeitig.
Das <!-- transition: fade 1s --> von marp-cli mit seinen 33 eingebauten Übergängen, abgespielt mit der View Transition API des Browsers; ein Bedienelement auf dem Bildschirm; --template bare.
--notes schreibt die Referentennotizen als Text, --pdf-notes legt sie auf die PDF-Seiten, --pdf-outlines setzt dessen Lesezeichen; --title, --author, --keywords, --url, --og-image, --theme; das .marprc und --config-file (JSON, YAML) von marp-cli werden gelesen.
Drücken Sie o: alle Folien in einem Raster, die Pfeiltasten wählen eine aus, Enter oder ein Klick springt hin — über der Seite oder über der Referentenansicht, mit den URLs und der Synchronisation von marp-cli, ohne Netz. Folien sind beschriftet und fokussierbar; die geschlossene Übersicht ist inaktiv. Kommandozeile →
Drücken Sie p auf der Seite: die aktuelle Folie, der nächste Schritt, Ihre Referentennotizen (maskiert, nie im Vorlesetext für das Publikum), eine Uhr und ein Timer, in einem zweiten Fenster, das dem ersten folgt und dem das erste folgt — mit den URLs und der Synchronisation von marp-cli, über localStorage, ohne Server und ohne Netz. Rund 10 KB pro Seite. Kommandozeile →
```go {lineNumbers} nummeriert die Zeilen eines Codeblocks ({lineNumbers=10} beginnt bei 10); eine Markierung in einem Kommentar am Zeilenende (// <1>) gefolgt von einer nummerierten Liste ergibt eine nummerierte Scheibe an der Zeile und an ihrer Notiz — auf der Seite, in Bildern, PDF, PPTX und ODP. Nummern und Scheiben werden mit dem Code nicht kopiert. Formeln und Code →
Der Befehl slides und seine Bibliothek: Marps Markdown, geparst und gerendert in Go, mit Go-Templates und Folienarten obendrauf. Veröffentlicht als v0.13.0: go install github.com/go-slides/slides/cmd/slides@latest.
Die Dokumentation (Hugo + Hextra) zu v0.13.0: Einstieg, Marp-Kompatibilität, Templates, Folienarten und Kommandozeile. Quelltext →
Die VS-Code-Erweiterung, so wie Marp for VS Code die von Marp ist: Decks in der Markdown-Vorschau von VS Code, gerendert von zu WebAssembly kompiliertem go-slides (keine Binärdatei, läuft auf vscode.dev), synchron mit dem Editor scrollend, auch durch Templates hindurch, Fehler im Problems-Panel, Vervollständigung von Direktiven, Folienarten und Template-Funktionen, eine Übersichts- und eine Referentenansicht neben dem Editor, Export über slides. Installieren Sie die am GitHub-Release angehängte .vsix; die Veröffentlichung im Marketplace und auf Open VSX ist vorbereitet, aber noch nicht erfolgt. VS Code →
Das Zeichen — eine Folie auf ihrem Ständer, im Indigo der Dokumentenfamilie — und alle seine Formate: SVG, PNG, JPG, ICO, ICNS, Avatar und Social-Image.
Mit go-richdoc, go-ooxml, go-tex und go-docutils: Dokumente lesen, setzen und schreiben in Go, ganz ohne C.
Die Organisation auf GitHub →