Przejdź do treści

Szablony

Interpolacja text/template z Go w prezentacji: wartości, generowane slajdy, numery stron, dołączanie plików.

Prezentacja jest szablonem Go text/template, wyliczanym przed parsowaniem Markdownu. Wszystko, co ma język szablonów Go — akcje, potoki, if, range, with, zmienne — działa w prezentacji.

Dane

Kropka szablonu przechowuje klucze front matter, potem klucze jego mapy data:, potem dane podane w wierszu poleceń lub w slides.yaml — każde nadpisuje poprzednie.

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

# {{ .title }}

Presented by the {{ .team }} team.

Z wiersza poleceń:

FlagaDaje
--data file.yamlplik danych YAML lub JSON (można powtarzać)
--set key=valuejedną wartość (można powtarzać)

Generowanie slajdów

Całe ciało jest jednym szablonem, więc range, który zapisuje ---, zapisuje slajdy:

{{ range .releases }}
---

# {{ .version }}

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

Strona i suma

{{ page }} i {{ total }} to numer slajdu i liczba slajdów. Są znane dopiero po podziale prezentacji, więc są wtedy uzupełniane — wygenerowana prezentacja liczy wygenerowane przez siebie slajdy.

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

Include

{{ include "parts/agenda.md" }} wstawia inny plik, względem prezentacji.

Kod zostaje nietknięty

Bloki kodu i fragmenty kodu w tekście są odkładane na bok przed uruchomieniem szablonu i przywracane bez zmian, więc slajd o szablonach Go może pokazać {{ .Name }} bez ucieczki znaków.

Limity

Wykonanie szablonu ma budżet kroków, aby prezentacja, której szablony zagnieżdżają range nad dużymi listami danych, nie mogła zajmować renderera przez minuty. Po przekroczeniu 1 048 576 kroków (iteracje pętli i wywołania szablonów, wspólne dla include jednego rozwinięcia) lub 10 s prezentacja jest odrzucana z diagnostyką template.limit zamiast się zawieszać. Krok kosztuje około 260 ns, więc zwykłe prezentacje pozostają daleko poniżej tej granicy. Od v0.17.1.

Wyłączanie

--no-template czyta prezentację jako zwykły Marp: {{ jest tekstem.

Utworzono przez tannevaled

Zmodyfikowano przez tannevaled