slides v0.20.2
Il comando slides e la sua libreria: il Markdown di Marp analizzato e reso in Go, con in più template Go e slide kinds. Rilasciata come v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.
slides legge il Markdown che legge Marp — direttive, --- tra le slide, sfondi ![bg], note del relatore, temi integrati — e aggiunge due cose che Marp non ha: i template Go dentro la presentazione e i slide kinds (il tipo di una slide), così una slide dichiara cos'è invece di ripetere che aspetto ha.
La sintassi è quella di Marpit e Marp Core, non un suo dialetto. Una presentazione scritta per Marp viene letta qui allo stesso modo, e slides expand restituisce semplice Markdown Marp, quindi nulla di ciò che è scritto con le due aggiunte qui sotto resta bloccato.
--- divide le slide. Direttive globali, locali e spot (_class), nel front matter o in commenti HTML, con l'ereditarietà di Marp da una slide alla successiva.
![bg], le sue dimensioni e i filtri, sfondi divisi e le parole chiave per immagini che Marp comprende.
Intestazione, piè di pagina e numerazione; note del relatore dai commenti; elenchi a frammenti; <style scoped> per il CSS di una sola slide.
default, gaia e uncover, scelti con theme: come in Marp.
La presentazione è un text/template, valutato prima che il Markdown venga analizzato — così un template può generare slide, e una presentazione può essere dati più un layout.
{{ .title }} legge il front matter, e la sua mappa data: contiene tutto il resto di cui la presentazione ha bisogno.
Un {{ range }} che emette --- è un generatore di slide: una slide per voce, per relatore, per release.
{{ page }} e {{ total }} sono noti solo dopo che la presentazione è stata divisa, e vengono compilati in quel momento.
I blocchi delimitati e il codice in linea non vengono valutati per impostazione predefinita, così una slide sui template Go può mostrarne uno. include inserisce un altro file.
kind: section nomina un insieme predefinito di direttive locali — intestazione, piè di pagina, numerazione, classe, sfondo. kind: si applica alla slide e a quelle successive, _kind: a una sola slide. Le direttive scritte sulla slide prevalgono comunque.
title, section, content e blank, tutti ridefinibili.
Nei kinds: del front matter, o in un file YAML di kinds che ogni presentazione di un team nomina.
Cambiare kind azzera ciò che il precedente aveva impostato, così una classe o un piè di pagina non ti segue nella sezione successiva.
Il Playground (l'editor di go-slides nel browser) è go-slides stesso, compilato in WebAssembly: scrivi a sinistra, le slide seguono a destra. Non si installa nulla e nulla viene inviato a un server. L'interfaccia del Playground segue la lingua della pagina.
Le slide vengono rese in un worker mentre digiti, l'anteprima scorre con l'editor, una minimappa e una colonna di miniature delle slide la seguono, e lo slideshow presenta con le sue transizioni. Present apre la vista del relatore, con le tue note e un timer, in una seconda finestra.
Completamento e spiegazioni per direttive, kinds e funzioni di template; problemi segnalati sulla loro riga; presentazioni di esempio, tra cui matematica, immagini e sfondi (trascina un file immagine nell'editor); link alla documentazione. Un pannello dei file contiene il progetto: i tuoi temi, kinds e file di dati, e i media che trascini, nel layout che il comando slides compila. Una scheda Format scrive il Markdown al posto tuo, con Annulla: grassetto, corsivo, sottolineato, elenchi, una tabella da una griglia, l'allineamento del testo della slide e i link. Ogni riquadro si ridimensiona.
Un link porta la presentazione stessa, compressa nel suo #. Salvala come HTML, PDF vettoriale, o presentazione PowerPoint o OpenDocument modificabile, tutto prodotto nel tuo browser, oppure scarica l'intero progetto come .zip. La tua bozza sopravvive a un ricaricamento, solo nel tuo browser.
marp-cli produce immagini e PDF pilotando un Chrome headless. Qui lo fanno invece le librerie Go della flotta. Immagini e PDF sono arrivati nella v0.1.0, PPTX, matematica ed evidenziazione nella v0.2.0, ODP, titoli adattati e HCL nella v0.3.0, il PDF vettoriale (con testo selezionabile) e le emoji nella v0.4.0; nella v0.5.0 PPTX e ODP sono diventati modificabili, mentre il PPTX di marp-cli è fatto di immagini; la v0.6.0 aggiunge watch, serve, transizioni e le opzioni di marp-cli, la v0.7.0 la vista del relatore — vedi la documentazione.
Una pagina per presentazione, come la rende Marp: ogni slide è una <section> inquadrata in un SVG che si adatta alla finestra, con il CSS del tema e un visualizzatore da tastiera.
La presentazione, con i template valutati e i kinds trasformati in direttive spot, riscritta come semplice Markdown Marp — così qualsiasi strumento Marp può proseguire da lì.
slides notes stampa le note del relatore; slides kinds e slides themes elencano ciò che una presentazione può nominare.
Un file di configurazione per una cartella di presentazioni: kinds e temi condivisi, dati dei template, opzioni HTML e lingua.
--images png|jpeg scrive un'immagine per slide (deck.001.png, …), --image la prima slide. Reso da go-webengine, un motore di browser in Go — non un Chrome headless. --image-scale 2 rende a densità doppia.
--pdf, oppure -o deck.pdf: una pagina per slide alla dimensione della slide, con un indice di slide e titoli, scritto da go-pdfkit. I font sono incorporati; nulla passa dalla rete. Dalla v0.4.0 le pagine sono vettoriali: testo selezionabile, forme nitide, 758 KiB per 100 slide contro gli 837 KiB di marp-cli (--pdf-raster mantiene un'immagine per pagina).
--pptx, oppure -o deck.pptx: con le note del relatore e i metadati della presentazione, scritto da go-ooxml. Dalla v0.5.0 le slide sono modificabili — caselle di testo nei font della presentazione (incorporati), forme, gradienti, immagini memorizzate una sola volta — mentre quelle di marp-cli sono immagini (--pptx-raster le mantiene). 100 slide: 348 ms e 760 KiB, contro i 7,8 s e 7,2 MiB di marp-cli.
$…$ e $$…$$ composti da go-tex, codice delimitato evidenziato da go-rouge — nella pagina HTML, nelle immagini e nel PDF.
--odp, oppure -o deck.odp: una presentazione OpenDocument con le note del relatore — modificabile dalla v0.5.0, come il PPTX (--odp-raster per un'immagine per slide).
# <!-- fit --> Title riempie la larghezza della slide su una riga, nella pagina e in ogni esportazione.
Gli shortcode :smile: e le emoji Unicode (😄 👩💻 🇫🇷) diventano immagini Twemoji esattamente come le scrive Marp Core — ma incorporate da go-icons/twemoji invece che caricate da una CDN, quindi non richiedono rete e vengono disegnate nella pagina, nelle immagini, nel PDF, nel PPTX e nell'ODP. Emoji →
HCL2 ovunque una presentazione accetti YAML — un front matter ---hcl, slides.hcl, file di kinds e di dati — per espressioni e funzioni: footer = "${upper(data.company)} · ${page()}/${total()}". slides expand riscrive il front matter come YAML. HCL →
--watch ricompila ciò che cambia e ricarica le pagine aperte; --server dir serve una cartella di presentazioni — deck.md come pagina, deck.md?pdf, ?pptx, ?png, ?notes convertiti su richiesta — su 127.0.0.1, controllando Host e Origin, senza mai uscire dalla cartella; --preview apre il browser. Le rotte e il ricaricamento in tempo reale di marp-cli, senza la sua porta aperta. Riga di comando →
slides -I decks/ -o site/ converte ogni presentazione di una cartella e ne riproduce l'albero; più file, una cartella o un pattern in una volta, -P per quante alla volta.
Il <!-- transition: fade 1s --> di marp-cli, con le sue 33 transizioni integrate, eseguite con la View Transition API del browser; un controller a schermo; --template bare. Anche le esportazioni in PDF, PPTX e ODP le portano con sé, sulla slide successiva, e gli elenchi a frammenti diventano animazioni a clic nel PPTX e nell'ODP (--pdf-fragments scrive una pagina PDF per passo). Dalla v0.18.0; verificato solo in LibreOffice, non in PowerPoint.
--notes scrive le note del relatore come testo, --pdf-notes le mette sulle pagine del PDF, --pdf-outlines i suoi segnalibri; --title, --author, --keywords, --url, --og-image, --theme; vengono letti il .marprc e il --config-file (JSON, YAML) di marp-cli.
Premi o: tutte le slide in una griglia, le frecce ne scelgono una, Invio o un clic vi porta — sopra la pagina o sopra la vista del relatore, con gli URL di marp-cli e la sua sincronizzazione, senza rete. Le slide sono etichettate e attivabili con il focus; la panoramica chiusa è inerte. Riga di comando →
Premi p nella pagina: la slide corrente, il passo successivo, le tue note del relatore (con escape, mai lette dallo screen reader del pubblico), un orologio e un timer, in una seconda finestra che segue la prima e viceversa — gli URL di marp-cli e la sua sincronizzazione, tramite localStorage, senza server né rete. Circa 10 KB per pagina. Riga di comando →
```go {lineNumbers} numera le righe di un blocco di codice ({lineNumbers=10} parte da 10); un marcatore in un commento a fine riga (// <1>) seguito da un elenco numerato mette un cerchio numerato sulla riga e sulla sua nota — nella pagina, nelle immagini, nel PDF, nel PPTX e nell'ODP. Numeri e cerchi non vengono copiati con il codice. Matematica e codice →
Un tema in un solo file .gsta.xz: un archivio tar compresso con xz, con un theme.hcl che lo nomina e ne elenca CSS, font, risorse e kinds. slides theme pack|verify|install|list|remove gestiscono i pacchetti, e --theme ne accetta uno. Gli archivi sono input non attendibile: link, percorsi non sicuri, bombe e checksum errati vengono rifiutati con errori codificati. Pacchetti di tema →
 incorpora una registrazione asciinema: viene riprodotta in un lettore integrato nella pagina HTML, senza script di terze parti e in pausa se si chiede di ridurre il movimento; nel PDF, nel PPTX e nell'ODP lo schermo a un istante scelto (#t=12.5) è disegnato come testo vettoriale. Registrazioni del terminale →
Le transizioni di Marp diventano transizioni di slide nel PPTX e nell'ODP, e gli elenchi a frammenti diventano dissolvenze a ogni clic; ogni pagina del PDF riceve una transizione /Trans, e --pdf-fragments scrive una pagina per ogni passo di frammento. Riga di comando →
 incorpora un video: il browser lo riproduce nella pagina HTML, mai con l'audio da solo e in pausa se si chiede di ridurre il movimento; il PDF mostra il fotogramma di anteprima a un istante scelto con un link al file, e il PPTX e l'ODP incorporano il video. Video →
Un'immagine SVG che si anima da sola viene riprodotta nella pagina HTML. Nel PPTX e nell'ODP ogni elemento animato è una forma con la propria animazione (movimento, rotazione, scala, opacità, colore) che parte con la diapositiva, o una GIF animata dove queste non possono esprimerla; il PDF e le immagini mostrano lo stato iniziale. Un'immagine locale bloccata senza --allow-local-files ora viene segnalata, non scartata. SVG animato →
Il comando slides e la sua libreria: il Markdown di Marp analizzato e reso in Go, con in più template Go e slide kinds. Rilasciata come v0.20.2: go install github.com/go-slides/slides/cmd/slides@latest.
La documentazione (Hugo + Hextra), che descrive la v0.20.2: per iniziare, compatibilità con Marp, template, kinds e riga di comando. Sorgente →
L’estensione per VS Code, come Marp for VS Code lo è per Marp: presentazioni mostrate nell’anteprima Markdown di VS Code da go-slides compilato in WebAssembly (nessun binario, funziona su vscode.dev), scorrimento sincronizzato con l’editor anche attraverso i template, errori nel pannello Problemi, completamento di direttive, kinds e funzioni di template, una panoramica e una vista del relatore accanto all’editor, esportazione tramite slides, con un PDF accessibile e con tag. Installa il .vsix allegato alla release su GitHub; la pubblicazione sul Marketplace e su Open VSX è preparata, ma non è ancora disponibile. VS Code →
Il marchio — una slide sul suo supporto, nell’indaco della famiglia dei documenti — e ogni suo formato: SVG, PNG, JPG, ICO, ICNS, avatar e immagine social.
slides-gitd, il backend git self-hosted del playground di go-slides: le credenziali della forge restano sul server, ogni utente è isolato e gira dietro oauth2-proxy. Go puro.
Insieme a go-richdoc, go-ooxml, go-tex e go-docutils: documenti letti, composti e scritti in Go, senza C da nessuna parte.
L'organizzazione su GitHub →