Fai il fork su GitHub

Presentazioni in Markdown,
rese in puro Go.

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.

v0.20.2 — rilasciataHTML, expand, PNG/JPEG, PDF vettoriale e accessibile, PPTX e ODP modificabili, matematica ed emoji vettoriali, codice con numeri di riga e chiamate, HCL, watch, serve, una vista del relatore e una panoramica già oggisenza Chrome headless
talk.md
---
marp: true
paginate: true
footer: {{ .talk }}
data:
  talk: Pure Go slides
  topics: [Why, How, Next]
---

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

{{ range .topics }}
---

# {{ . }}
{{ end }}
Un'organizzazione, 5 repository
Compatibilità

Una presentazione Marp è una presentazione go-slides.

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.

➗

Slide e direttive

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

🖼️

Immagini e sfondi

![bg], le sue dimensioni e i filtri, sfondi divisi e le parole chiave per immagini che Marp comprende.

🗒️

Attorno alla slide

Intestazione, piè di pagina e numerazione; note del relatore dai commenti; elenchi a frammenti; <style scoped> per il CSS di una sola slide.

🎨

I temi integrati

default, gaia e uncover, scelti con theme: come in Marp.

La prima aggiunta

Template Go, dentro la presentazione.

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.

🔤

Valori

{{ .title }} legge il front matter, e la sua mappa data: contiene tutto il resto di cui la presentazione ha bisogno.

🔁

Slide dai dati

Un {{ range }} che emette --- è un generatore di slide: una slide per voce, per relatore, per release.

#️⃣

Pagina e totale

{{ page }} e {{ total }} sono noti solo dopo che la presentazione è stata divisa, e vengono compilati in quel momento.

🧾

Il codice non viene toccato

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.

La seconda aggiunta

Una slide dichiara cosa è.

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.

🏷️

Integrati

title, section, content e blank, tutti ridefinibili.

📁

Definiti una volta, condivisi

Nei kinds: del front matter, o in un file YAML di kinds che ogni presentazione di un team nomina.

🧹

Nulla trapela

Cambiare kind azzera ciò che il precedente aveva impostato, così una classe o un piè di pagina non ti segue nella sezione successiva.

Provalo

Una presentazione nel tuo browser.

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.

⚡

In tempo reale

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.

💡

Guida integrata

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.

🔗

Condividi, salva, conserva

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.

Cosa fa

Prima l'HTML. Il resto senza un browser da pilotare.

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.

HTML v0.1.0

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.

slides expand v0.1.0

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

note, kinds, temi v0.1.0

slides notes stampa le note del relatore; slides kinds e slides themes elencano ciò che una presentazione può nominare.

slides.yaml v0.1.0

Un file di configurazione per una cartella di presentazioni: kinds e temi condivisi, dati dei template, opzioni HTML e lingua.

PNG / JPEG v0.1.0

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

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

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

Matematica ed evidenziazione v0.2.0

$…$ e $$…$$ composti da go-tex, codice delimitato evidenziato da go-rouge — nella pagina HTML, nelle immagini e nel PDF.

ODP v0.3.0

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

Titoli adattati v0.3.0

# <!-- fit --> Title riempie la larghezza della slide su una riga, nella pagina e in ogni esportazione.

Emoji v0.4.0

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 →

HCL v0.3.0

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, serve, anteprima v0.6.0

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

Più presentazioni v0.6.0

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.

Transizioni v0.6.0

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.

Note nel PDF, metadati, opzioni di marp-cli v0.6.0

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

Vista panoramica v0.8.0

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 →

Vista del relatore v0.7.0

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 →

Numeri di riga e chiamate nel codice v0.8.0

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

Pacchetti di tema v0.18.0

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 →

Registrazioni del terminale v0.18.0

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

Animazioni nelle esportazioni v0.18.0

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 →

Video v0.19.0

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

SVG animato v0.20.0

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 →

L'organizzazione

Repository

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.

docs v0.20

La documentazione (Hugo + Hextra), che descrive la v0.20.2: per iniziare, compatibilità con Marp, template, kinds e riga di comando. Sorgente →

vscode v0.5.0

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 →

brand pronto

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.

gitd v0.1.1

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.

Parte della famiglia dei documenti.

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 →