Шаблоны
Презентация — это text/template Go,
вычисляемый до разбора Markdown. Всё, что есть в языке шаблонов Go, —
действия, конвейеры, if, range, with, переменные — работает в
презентации.
Данные
Точка шаблона содержит ключи front matter, затем ключи его отображения
data:, затем данные, переданные в командной строке или в slides.yaml, —
каждый следующий слой переопределяет предыдущий.
---
marp: true
title: Quarterly review
data:
team: Platform
---
# {{ .title }}
Presented by the {{ .team }} team.Из командной строки:
| Флаг | Задаёт |
|---|---|
--data file.yaml | файл данных YAML или JSON (можно повторять) |
--set key=value | одно значение (можно повторять) |
Генерация слайдов
Всё тело — один шаблон, поэтому range, пишущий ---, пишет слайды:
{{ range .releases }}
---
# {{ .version }}
{{ range .changes }}- {{ . }}
{{ end }}
{{ end }}Страница и общее число
{{ page }} и {{ total }} — номер слайда и число слайдов. Они становятся
известны только после разделения презентации на слайды, поэтому подставляются
тогда: сгенерированная презентация считает слайды, которые сгенерировала.
<!-- footer: "{{ page }} / {{ total }}" -->Include
{{ include "parts/agenda.md" }} вставляет другой файл, путь к которому
отсчитывается от презентации.
Код остаётся нетронутым
Блоки кода и фрагменты встроенного кода откладываются в сторону до запуска
шаблона и возвращаются дословно, поэтому слайд о шаблонах Go может показать
{{ .Name }} без экранирования.
Ограничения
У выполнения шаблонов есть бюджет шагов, чтобы презентация, шаблоны которой
вкладывают range поверх больших списков данных, не могла занимать
отрисовщик минутами. При превышении 1 048 576 шагов (итерации циклов и вызовы
шаблонов, общие для всех include одного раскрытия) или 10 с презентация
отклоняется с диагностикой template.limit вместо зависания. Шаг стоит около
260 нс, так что обычные презентации остаются далеко от предела. Начиная с
v0.17.1.
Отключение
--no-template читает презентацию как обычный Marp: {{ — это текст.
Created on by tannevaled
Modified on by tannevaled