Zum Inhalt springen

Vorlagen

Interpolation mit Go-text/template in einem Foliensatz: Werte, erzeugte Folien, Seitenzahlen, Includes.

Der Foliensatz ist ein Go-text/template, das ausgewertet wird, bevor das Markdown geparst wird. Alles, was die Go-Template- Sprache bietet – Aktionen, Pipelines, if, range, with, Variablen –, funktioniert in einem Foliensatz.

Daten

Der Punkt der Vorlage enthält die Schlüssel des Front-Matters, dann die Schlüssel seiner data:-Map, dann die Daten, die auf der Kommandozeile oder in slides.yaml angegeben werden – jede Stufe überschreibt die vorherige.

---
marp: true
title: Quarterly review
data:
  team: Platform
---

# {{ .title }}

Presented by the {{ .team }} team.

Von der Kommandozeile:

FlagLiefert
--data file.yamleine YAML- oder JSON-Datei mit Daten (wiederholbar)
--set key=valueeinen Wert (wiederholbar)

Folien erzeugen

Der gesamte Rumpf ist eine einzige Vorlage, sodass ein range, das --- schreibt, Folien schreibt:

{{ range .releases }}
---

# {{ .version }}

{{ range .changes }}- {{ . }}
{{ end }}
{{ end }}

Seite und Gesamtzahl

{{ page }} und {{ total }} sind die Nummer der Folie und die Anzahl der Folien. Sie sind erst bekannt, nachdem der Foliensatz aufgeteilt wurde, und werden deshalb erst dann eingesetzt – ein erzeugter Foliensatz zählt die Folien, die er erzeugt hat.

<!-- footer: "{{ page }} / {{ total }}" -->

Include

{{ include "parts/agenda.md" }} fügt eine andere Datei ein, relativ zum Foliensatz.

Code bleibt unberührt

Codeblöcke und Inline-Code-Spans werden beiseitegelegt, bevor die Vorlage läuft, und unverändert wiederhergestellt, sodass eine Folie über Go-Vorlagen {{ .Name }} zeigen kann, ohne es zu maskieren.

Grenzen

Die Ausführung einer Vorlage hat ein Schrittbudget, damit ein Foliensatz, dessen Vorlagen range über große Datenlisten verschachteln, den Renderer nicht minutenlang beschäftigen kann. Jenseits von 1.048.576 Schritten (Schleifendurchläufe und Vorlagenaufrufe, gemeinsam mit den includes einer Expansion) oder 10 s wird der Foliensatz mit der Diagnose template.limit abgelehnt, statt zu hängen. Ein Schritt kostet etwa 260 ns, sodass gewöhnliche Foliensätze weit unter der Grenze bleiben. Seit v0.17.1.

Abschalten

--no-template liest den Foliensatz als reines Marp: {{ ist Text.

Erstellt am von tannevaled

Geändert am von tannevaled