diff --git a/.forgejo/workflows/serve.yaml b/.forgejo/workflows/serve.yaml
index 5c43a11..d374f5b 100644
--- a/.forgejo/workflows/serve.yaml
+++ b/.forgejo/workflows/serve.yaml
@@ -12,6 +12,10 @@ jobs:
         run: /usr/bin/python -m venv .venv
       - name: Install dependencies
         run: ./.venv/bin/pip install -r requirements.txt
+      - name: Build PDF exports
+        run: |
+          . .venv/bin/activate
+          myst build --execute --pdf
       - name: Build static HTML
         run: |
           . .venv/bin/activate
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..95ac1a6
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "courstex"]
+	path = courstex
+	url = https://git.edgarpierre.fr/edpibu/courstex.git
diff --git a/cours/SIN/01-capteurs.md b/cours/SIN/01-capteurs.md
index fbffa9b..30ee8e0 100644
--- a/cours/SIN/01-capteurs.md
+++ b/cours/SIN/01-capteurs.md
@@ -1,6 +1,9 @@
 ---
 title: Les capteurs
 subject: Cours
+export:
+  - format: pdf
+    template: courstex
 ---
 
 # Définition
diff --git a/cours/SIN/02-signaux.md b/cours/SIN/02-signaux.md
index 49288b0..05095b8 100644
--- a/cours/SIN/02-signaux.md
+++ b/cours/SIN/02-signaux.md
@@ -1,6 +1,9 @@
 ---
 title: Les signaux
 subject: Cours
+export:
+  - format: pdf
+    template: courstex
 kernelspec:
   name: python3
   display_name: Python 3
diff --git a/cours/SIN/03-can.md b/cours/SIN/03-can.md
index ff412e3..e5226a2 100644
--- a/cours/SIN/03-can.md
+++ b/cours/SIN/03-can.md
@@ -1,6 +1,9 @@
 ---
 title: Le CAN
 subject: Cours
+export:
+  - format: pdf
+    template: courstex
 kernelspec:
   name: python3
   display_name: Python 3
diff --git a/courstex b/courstex
new file mode 160000
index 0000000..d040c12
--- /dev/null
+++ b/courstex
@@ -0,0 +1 @@
+Subproject commit d040c12b630182d5b127a9123a0cfa617d9a0016
diff --git a/myst.yml b/myst.yml
index 0a2d0db..c1554bb 100644
--- a/myst.yml
+++ b/myst.yml
@@ -16,7 +16,9 @@ project:
       country: France
       url: https://lyceedupaysdesoule.fr
   license: CC-BY-NC-SA-4.0
-  exclude: README.md
+  exclude:
+    - README.md
+    - courstex
   numbering:
     headings: true
   settings:
diff --git a/procédures/01-vr.md b/procédures/01-vr.md
index 1902ac3..9f135f3 100644
--- a/procédures/01-vr.md
+++ b/procédures/01-vr.md
@@ -6,6 +6,9 @@ abstract: |
   L'objectif de cette procédure est de visualiser un modèle 3D réalisé avec
   Solidworks en réalité augmentée avec l'application [Caddy](https://www.heycaddy.net/)
   sur Meta Quest 3.
+export:
+  - format: pdf
+    template: courstex
 ---
 
 # Export au format IGES
diff --git a/procédures/02-laser.md b/procédures/02-laser.md
index 59a87c1..274acc5 100644
--- a/procédures/02-laser.md
+++ b/procédures/02-laser.md
@@ -5,6 +5,9 @@ subtitle: Découper ou graver une pièce
 abstract: |
   L'objectif de cette procédure est de découper et graver une pièce dans une
   plaque à l'aide de la découpe laser JAMP78 JA50.
+export:
+  - format: pdf
+    template: courstex
 ---
 
 # Import dans RdCAM