Quarto & PDF avec Typst

PDF sans frictions : Typst dans vos projets Quarto

Christophe Dervieux & Maëlle Salmon

Posit / rOpenSci

16 juin 2026

Le rythme du tutoriel

My turn

Quelques slides pour poser les concepts clés.

Our turn

Démo live — vous suivez dans votre éditeur.

Your turn

Exercice en autonomie avec chronomètre.

Un atelier pour tous les niveaux

  • Exercices volontairement riches — pas grave si vous ne finissez pas en séance : tout reste à reprendre après (ressources + paquet R compagnon)
  • Pas besoin d’écrire du R — le cœur des exos, c’est Quarto / YAML / Typst ; le R des tableaux et graphes est déjà prêt dans les fichiers
  • Déjà à l’aise avec Quarto ? — partez en hors-piste : explorez le bonus brand.yml côté R (déjà dans les starters / corrections), doc à l’appui

Le pad partagé de l’atelier

Un bloc-notes collaboratif ouvert à toutes et tous — on y écrit ensemble, en direct.

  • 🔗 Les liens de l’atelier (site, ressources, paquet R)
  • Vos questions — posez-les ici, on y répond
  • 📝 Vos notes et trouvailles à reprendre après

Gardez-le ouvert pendant les 2 h.

Bloqué·e ? Fini ? Un post-it suffit

Photo de deux familles de post-it posés sur une table en bois : à gauche, des post-it roses et orange ; à droite, des post-it verts et jaunes.

Pendant les exercices, posez un post-it sur le dos votre écran — on vous repère d’un coup d’œil, pas besoin de lever la main.

  • 🟧 Rose / orange — « je suis bloqué·e » → on passe vous voir
  • 🟩 Vert / jaune — « c’est bon, j’ai fini ! »

👉 En clôture, on les recycle en feedback : un point qui vous a plu sur un vert/jaune, un point à améliorer sur un rose/orange.

Code de conduite

Cet atelier s’inscrit dans le code de conduite des Rencontres R 2026 — on s’engage à le faire respecter ici comme ailleurs.

L’esprit, en deux mots :

  • Un environnement bienveillant et sûr, sans harcèlement, pour toutes et tous
  • Respect et bienveillance dans le langage comme dans les échanges
  • Un souci, une gêne ? Parlez-nous ou à un membre de l’orga (badge)

Code de conduite complet des Rencontres R 2026

C’est quoi Typst ?

Typst joue le même rôle que LaTeX : produire un PDF. Avec Quarto, vous restez côté Markdown — il traduit vers Typst tout seul.

Ce que vous écrivez (Markdown) :

# Mon rapport

Un mot **en gras**
et un [lien](https://example.org).

Ce que Quarto génère (Typst) :

= Mon rapport

Un mot #strong[en gras]
et un #link("https://example.org")[lien].

Du .qmd au PDF

Pipeline en trois étapes : rapport.qmd (source) → Pandoc → rapport.typ (intermédiaire Typst) → Typst → rapport.pdf (sortie).

format: typst — un PDF sans LaTeX

Vous avez un document Quarto et vous voulez un PDF ?

rapport.qmd
---
title: "Mon rapport"
format: typst
---
  • Rien à installer — Typst est intégré à Quarto depuis la version 1.5
  • Rapide — compilation en quelques secondes, pas plusieurs minutes
  • Erreurs lisibles — fini les messages LaTeX cryptiques
  • Léger — pas de distribution TeX de 1 Go à gérer

Les options de formats

rapport.qmd
---
format:
  typst:
    toc: true
    papersize: a4
    margin:
      x: 2.5cm
      y: 2.5cm
---

D’autres options existent (mainfont, number-sections, linestretch…) — on les verra en démo.

keep-typ: true — comprendre les coulisses

Souvenez-vous du pipeline : le .typ intermédiaire, entre votre .qmd et le PDF. keep-typ: true le conserve sur le disque pour que vous puissiez l’ouvrir.

rapport.qmd
---
format:
  typst:
    keep-typ: true
---

Le fichier .typ intermédiaire vous permet de :

  • Comprendre ce que Quarto génère pour Typst
  • Déboguer un rendu inattendu
  • Apprendre la syntaxe Typst progressivement

_brand.yml — un doc stylé en un fichier

Un seul fichier YAML pour définir l’identité visuelle de vos documents :

_brand.yml
color:
  primary: "#1a5276"
  secondary: "#f39c12"
typography:
  fonts:
    - family: "Noto Sans"
      source: google
  base: "Noto Sans"
  • Placez _brand.yml à côté de votre .qmd
  • Quarto l’applique automatiquement
  • Couleurs, polices, logo…
  • Fonctionne avec HTML, Typst, RevealJS…

_brand.yml — un doc stylé en un fichier

Schéma en étoile : au centre, le fichier _brand.yml ; des flèches partent vers cinq sorties qu'il stylise — PDF (Typst), Page web (HTML), Slides (RevealJS), Graphe ggplot2 et Tableau gt.

Voici la charte

Page A4 de la charte graphique Star Wars : logo étoile jaune en haut-gauche, titre 'CHARTE GRAPHIQUE' en rouge impérial gras, sous-titre Saga Star Wars, 4 échantillons de couleur (rouge impérial, noir SW, crème, jaune SW) avec codes hexadécimaux, titres de section (Palette, Typographie, Logo) en Star Jedi rouge impérial, sections Typographie (Star Jedi locale, Inter Google) et Logo, pied de page méta.

  • Une vraie charte à traduire
  • Palette nommée + rôles (primary, foreground, background)
  • Polices: Inter (Google) + Star Jedi (locale)
  • Ce PDF est lui-même rendu par Quarto + Typst + _brand.yml — vous allez faire pareil

Faisons ensemble !

Faisons ensemble !

On passe le doc en PDF Typst, puis on lui applique une couleur via _brand.yml.

  1. Ouvrez rapport-starwars.qmd (dossier 01-document-typst/starter/), passez format: htmlformat: typst, rendez → PDF brut
  2. Créez _brand.yml dans le même dossier (à côté du .qmd) avec une seule couleur + rôle primary, re-rendez → le lien de l’intro passe en rouge (primary colore les liens)
_brand.yml
color:
  palette:
    imperial-red: "#BC1E22"
  primary: imperial-red

→ À vous ensuite pour la charte complète (palette + rôles + polices).

Exercice 1

À vous !

🎯 Transformer un .qmd HTML en PDF Typst stylé via _brand.yml.

📄 Charte fournie : charte-starwars.pdf dans le starter (palette + polices + logo + rôles).

12 minutes — chrono + étapes projetés à l’écran.

🧭 Boussole — objectif, étapes & chrono, à garder sous les yeux

📖 Page de l’exercice — consigne détaillée, doc utile par étape, correction

Saviez-vous que…

Saviez-vous que…

  • Une charte, deux niveaux_brand.yml habille automatiquement la mise en page (titres, liens, fond, polices). Vos tableaux gt et graphes ggplot sont du R : ils ne suivent que si vous les branchez avec le paquet brand.yml — un petit geste en plus, détaillé au Bonus B4 du Bloc 2
  • Blocs raw Typst — Besoin de Typst natif ? Utilisez ```{=typst} pour injecter du code Typst directement dans votre .qmd
  • Vos tableaux passent en Typst — la structure des tableaux gt (R) et Great Tables (Python) est traduite automatiquement en Typst par Quarto (les couleurs de la charte, elles, viennent du point ci-dessus)
  • PDF accessible en une ligne — Ajoutez pdf-standard: ua-1 dans le YAML pour un PDF conforme au standard d’accessibilité PDF/UA-1

Plus de détails sur la page Ressources

☕ Pause

On se retrouve dans 10 minutes pour le Bloc 2 — passer du document au livre.

Gardez votre dossier de l’Exercice 1 sous la main : on réutilise votre _brand.yml juste après la pause.