{# Composants Tera appelés depuis le markdown (Zola 0.23 a supprimé les
shortcodes : le contenu des pages est templaté directement).
Les captures suivent la langue : chaque appel passe celle de la page,
`lang={lang}`, parce qu'un composant ne voit pas le contexte de l'appelant.
Chaque image existe en JPEG XL (proposé d'abord) et en PNG (repli).
Une langue sans dossier dans static/img/ retombe sur « en » : le portugais
emprunte donc les captures anglaises tant que shots.mjs n'a pas fait sa
passe. Le repli est écrit en dur parce qu'un composant ne voit pas `config`
non plus, seulement ses propres paramètres. #}
{# Capture pleine page, format téléphone.
{{}} #}
{% component shot(name: string, alt: string, lang: string, legende: string = "") %}
{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %}
{% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}
{% if legende %}{{ legende }}{% endif %}
{% endcomponent shot %}
{# Extrait recadré, posé dans le fil du texte.
{{}} #}
{% component extrait(name: string, alt: string, lang: string, legende: string = "") %}
{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %}
{% set meta = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ name ~ ".png", allow_missing=true) %}
{% if legende %}{{ legende }}{% endif %}
{% endcomponent extrait %}
{# Deux captures côte à côte (deux étapes, avant et après).
{{}} #}
{% component duo(a: string, b: string, alt_a: string, alt_b: string, lang: string, legende: string = "") %}
{% if not get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %}{% set lang = "en" %}{% endif %}
{% set ma = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ a ~ ".png", allow_missing=true) %}
{% set mb = get_image_metadata(path="static/img/" ~ lang ~ "/" ~ b ~ ".png", allow_missing=true) %}