Aller au contenu

Gabarits

Interpolation de gabarits Go text/template dans une présentation : valeurs, diapositives générées, numéros de page, inclusions.

La présentation est un gabarit Go text/template, évalué avant l’analyse du Markdown. Tout ce qu’offre le langage de gabarits de Go — actions, pipelines, if, range, with, variables — fonctionne dans une présentation.

Données

Le point du gabarit contient les clés du front matter, puis les clés de son mapping data:, puis les données fournies en ligne de commande ou dans slides.yaml — chacune remplaçant la précédente.

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

# {{ .title }}

Presented by the {{ .team }} team.

En ligne de commande :

OptionFournit
--data file.yamlun fichier de données YAML ou JSON (répétable)
--set key=valueune valeur (répétable)

Générer des diapositives

Le corps entier est un seul gabarit : un range qui écrit --- écrit donc des diapositives :

{{ range .releases }}
---

# {{ .version }}

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

Numéro de page et total

{{ page }} et {{ total }} sont le numéro de la diapositive et le nombre de diapositives. Ils ne sont connus qu’une fois la présentation découpée : ils sont donc renseignés à ce moment-là — une présentation générée compte les diapositives qu’elle a générées.

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

Inclusion

{{ include "parts/agenda.md" }} insère un autre fichier, relatif à la présentation.

Le code n’est pas touché

Les blocs de code délimités et les extraits de code en ligne sont mis de côté avant l’exécution du gabarit puis restitués tels quels : une diapositive consacrée aux gabarits Go peut ainsi montrer {{ .Name }} sans l’échapper.

Limites

L’exécution des gabarits a un budget d’étapes, pour qu’une présentation dont les gabarits imbriquent des range sur de grandes listes de données ne puisse pas occuper le moteur de rendu pendant des minutes. Au-delà de 1 048 576 étapes (itérations de boucle et appels de gabarit, partagés avec les include d’une même expansion) ou de 10 s, la présentation est refusée avec le diagnostic template.limit au lieu de se bloquer. Une étape coûte environ 260 ns : les présentations ordinaires restent donc très en dessous de la borne. Depuis la v0.17.1.

Désactivation

--no-template lit la présentation comme du Marp ordinaire : {{ est du texte.

Créée le par tannevaled

Modifiée le par tannevaled