テンプレート
スライドデッキは Go の text/template であり、
Markdown の解析 前 に評価されます。Go のテンプレート言語が備えるもの
(アクション、パイプライン、if、range、with、変数)は、すべて
スライドデッキの中で使えます。
データ
テンプレートのドットには、フロントマターのキー、次にその
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 | 1 つの値(複数回指定可) |
スライドを生成する
本文全体が 1 つのテンプレートなので、--- を書き出す range はスライドを書き出すことになります。
{{ range .releases }}
---
# {{ .version }}
{{ range .changes }}- {{ . }}
{{ end }}
{{ end }}ページ番号と総数
{{ page }} と {{ total }} は、そのスライドの番号とスライドの総数です。
これらはスライドデッキが分割されて初めて決まるため、その時点で埋め込まれます。
生成されたスライドデッキでは、生成されたスライドも数えられます。
<!-- footer: "{{ page }} / {{ total }}" -->インクルード
{{ include "parts/agenda.md" }} は、スライドデッキからの相対パスで指定した別のファイルを
挿入します。
コードはそのまま
フェンスで囲んだコードブロックとインラインコードは、テンプレートの実行前に取り分けられ、
そのまま元に戻されます。そのため、Go テンプレートについてのスライドでも
{{ .Name }} をエスケープせずに表示できます。
制限
テンプレートの実行にはステップ数の上限があります。大きなデータのリストに対して range を
入れ子にしたテンプレートを持つスライドデッキが、レンダラーを何分も占有し続けることを防ぐためです。
1,048,576 ステップ(ループの反復とテンプレート呼び出しの合計で、1 回の展開内の include と
共有されます)または 10 秒を超えると、スライドデッキはハングする代わりに、診断
template.limit を出して拒否されます。1 ステップのコストは約 260 ns なので、通常の
スライドデッキが上限に近づくことはありません。v0.17.1 以降。
無効にする
--no-template を指定すると、スライドデッキをプレーンな Marp として読み込みます。{{ はただのテキストになります。
Created on by tannevaled
Modified on by tannevaled