diff --git a/Makefile b/Makefile
index c07dc3a3ef7ad1602877876114adcb2677ff7f72..3207e0dc1aee939409d03373e385207baca2fc4c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,18 @@
-OPTIONS = --filter=pandoc-numbering
-OPTIONS += --filter=pandoc-crossref
+DATADIR      = ./
+FILTERDIR    = $(DATADIR)/filters
+RESOURCEDIR  = $(DATADIR)/resources
 
-PDFOPTIONS = --highlight-style my_highlight.theme
+PDFOPTIONS = -t beamer
+PDFOPTIONS += --highlight-style my_highlight.theme
 PDFOPTIONS += --pdf-engine pdflatex
-PDFOPTIONS += --number-sections
 PDFOPTIONS += --template=./default.latex
+PDFOPTIONS += -V theme:metropolis
+PDFOPTIONS += -V themeoptions:numbering=none -V themeoptions:progressbar=foot
+PDFOPTIONS += -V fontsize=smaller
+# PDFOPTIONS += --lua-filter=${FILTERDIR}/tex.lua
+# PDFOPTIONS += --include-in-header=${RESOURCEDIR}/definitions.tex
+# PDFOPTIONS += --include-in-header=${RESOURCEDIR}/beamer.tex
+PDFOPTIONS += $(OPTIONS)
 
 HTMLOPTIONS += -t html5
 HTMLOPTIONS += -c css/tufte-css/tufte.css
@@ -12,14 +20,14 @@ HTMLOPTIONS += --self-contained
 
 all: base_2.pdf base_1.pdf intro.pdf index.html
 
-intro.pdf: intro.md *.theme
-	pandoc -t beamer -o $@ $<
+intro.pdf: intro.md metadata.yaml *.theme
+	pandoc $(PDFOPTIONS) -o $@ $^
 
-base_1.pdf: base_1.md *.theme
-	pandoc -t beamer -o $@ $<
+base_1.pdf: base_1.md metadata.yaml *.theme
+	pandoc $(PDFOPTIONS) -o $@ $^
 
-base_2.pdf: base_2.md *.theme figs/memory.svg
-	pandoc -t beamer -o $@ $<
+base_2.pdf: base_2.md metadata.yaml *.theme figs/memory.svg
+	pandoc $(PDFOPTIONS) -o $@ $^
 
 index.html: index.md
 	pandoc -s $(OPTIONS) $(HTMLOPTIONS) -o $@ $<
diff --git a/base_1.md b/base_1.md
index b6ad320904c1052f5a598bf784562430e5c08541..f2d4fb4651a3a59fa04f79cd2fc10d1af0533e86 100644
--- a/base_1.md
+++ b/base_1.md
@@ -1,5 +1,5 @@
-% Programmation séquentielle en C
-% Base I - Inspirés des slides de F. Glück
+% Base I
+% Inspirés des slides de F. Glück
 % 18 septembre 2019
 
 # Historique (1/2)
@@ -66,7 +66,6 @@ int main() {
     1. `-std=c11` utilisation de C11.
     2. `-Wall et -Wextra` activation des warnings.
     3. `-fsanitize=…`  contrôles d’erreurs extensifs à l’exécution (au prix d’un coût en performance).
-    Sur Ubuntu 14.04 `-fsanitize=leak` et `-fsanitize=undefined` ne sont pas supportés (`cat /etc/lsb-release` indique la version).
     4. `-g` symboles de débogages sont gardés.
     5. `-o` défini le fichier exécutable à produire en sortie.
     <!-- 6. `-O1`, `-O2`, `-O3`: activation de divers degrés d'optimisation -->
diff --git a/base_2.md b/base_2.md
index 203e396c117c06c45db3b1b6de2c63ba27bffbdd..813d1dec987b3e334a03e37af1ec7e09c7575bca 100644
--- a/base_2.md
+++ b/base_2.md
@@ -6,23 +6,22 @@
 
 ## La mémoire
 
-- La mémoire est un ensemble de bits.
-- Elle est accessible via des adresses.
+* La mémoire est:
+    - ... un ensemble de bits,
+    - ... accessible via des adresses,
 
-+------+----------+----------+------+----------+------+------+
-| bits | 00110101 | 10010000 | .... | 00110011 | .... | .... |
-+======+==========+==========+======+==========+======+======+
-| addr | 2000     | 2001     | .... | 4000     | .... | .... |
-+------+----------+----------+------+----------+------+------+
+  +------+----------+----------+------+----------+------+------+
+  | bits | 00110101 | 10010000 | .... | 00110011 | .... | .... |
+  +======+==========+==========+======+==========+======+======+
+  | addr | 2000     | 2001     | .... | 4000     | .... | .... |
+  +------+----------+----------+------+----------+------+------+
 
-- Elle est gérée par le système d'exploitation...
-- et fournie à chaque programme pendant son exécution.
-- Elle est séparée en deux parties: **la pile** et **le tas**.
+    - ... gérée par le système d'exploitation.
+    - ... séparée en deux parties: **la pile** et **le tas**.
 
 ## Une variable
 
-- Une variable est un identifiant pour une valeur.
-- Une variable, `type a = valeur`{.C}, possède:
+* Une variable, `type a = valeur`{.C}, possède:
     - un type (`char`{.C}, `int`{.C}, ...),
     - un contenu (une séquence de bits qui encode `valeur`{.C}),
     - une adresse mémoire (accessible via `&a`{.C}),
@@ -111,20 +110,20 @@
 
 # Les fonctions (2/N)
 
-- Exemple:
+## Exemple
 
-    ```C
-    int max(int a, int b) {
-        if (a > b) {
-            return a;
-        } else {
-            return b;
-        }
+```C
+int max(int a, int b) {
+    if (a > b) {
+        return a;
+    } else {
+        return b;
     }
+}
 
-    int main() {
-        int c = max(4, 5);
-    }
+int main() {
+    int c = max(4, 5);
+}
     ```
 
 # Les fonctions (3/N)
@@ -193,22 +192,26 @@
 - Pour modifier un variable, il faut passer son **adresse mémoire**.
 - L'adresse d'une variable, `x`{.C}, est accédé par `&x`{.C}.
 - Un **pointeur** vers une variable entière a le type, `int *x`{.C}.
-- La sytaxe `*x`{.C} sert à **déréférencer** le pointeur.
+- La sytaxe `*x`{.C} sert à **déréférencer** le pointeur (à accéder à la mémoire pointée).
 
-    ```C
-    void set_to_two(int *a) { 
-        // a contient une copie de l'adresse de la
-        // variable passée en argument
+# Les fonctions (7/N)
 
-        *a = 2; // on accède à la valeur pointée par a,
-                // et on lui assigne 2
-    } // le pointeur est détruit, pas la valeur pointée
-    int main() {
-        int x = -1;
-        set_to_two(&x); // l'adresse de x est passée
-        // x vaudra 2 ici
-    }
-    ```
+## Exemple
+
+```C
+void set_to_two(int *a) { 
+    // a contient une copie de l'adresse de la
+    // variable passée en argument
+
+    *a = 2; // on accède à la valeur pointée par a,
+            // et on lui assigne 2
+} // le pointeur est détruit, pas la valeur pointée
+int main() {
+    int x = -1;
+    set_to_two(&x); // l'adresse de x est passée
+    // x vaudra 2 ici
+}
+```
 
 <!-- TODO quiz;
 ```C
@@ -375,9 +378,9 @@ do {
 
 ## Les tableaux comme argument
 
-- Un tableau n'est rien d'autre que le pointeur vers sa première case.
+- Un tableau est le pointeur vers sa première case.
 - Pas moyen de connaître sa taille: `sizeof()`{.C} inutile.
-- Quand on passe un tableau en argument à une fonction: toujours spécifier sa taille.
+- Toujours spécifier la taille d'un tableau passé en argument.
 
     ```C
     void foo(int tab[]) { // sans taille...
diff --git a/metadata.yaml b/metadata.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5838cf8fd56c879c76c8a0dc791b097a9daad3d0
--- /dev/null
+++ b/metadata.yaml
@@ -0,0 +1,7 @@
+---
+# used for lecture slides and homework sheets
+subtitle: "Programmation séquentielle en C, 2019-2020"
+author: "Orestis Malaspinas, ITI, HEPIA"
+lang: fr-CH
+...
+