diff --git a/rules.build_defs b/rules.build_defs
index 08426f0a2bbc3700251ccfebb3b0f71494d59da1..9e64f21d57d5066a5290065ee1de07df3b105090 100644
--- a/rules.build_defs
+++ b/rules.build_defs
@@ -1,44 +1,54 @@
 REVEALJS_DEFAULT_CONFIG = {
     "width": "1024",
     "height": "768",
-    "transitionSpeed": "fast",
-    "lang": "fr-FR",
     "history": "true",
     "navigationMode": "linear",
     "fragmentInURL": "true",
-    "revealjs-url": "../reveal.js",
     "theme": "inrae",
     "slideNumber": "true",
 }
 
-def pandoc(name: str, src: str = None, out: str = None, toc_depth: int = 1, slide_level: int = 2, config: dict = {}, pandoc_args: list = []):
+def pandoc(name: str = None, src: str = None, out: str = None, toc: bool = True, toc_depth: int = 1, slide_level: int = 2, variables: dict = {}, pandoc_args: list = []):
+    if name is None:
+        name = "pandoc_%s" % src.replace('/', '_')
     if src is None:
         src = '%s/index.md' % name
     if out is None:
         out = src[:-2] + 'html'
 
-    variables = REVEALJS_DEFAULT_CONFIG.copy()
-    for k,v in config.items():
-        variables[k] = str(v)
+    args = [
+        "$TOOL",
+        "$SRC",
+        "--output=$OUT",
+        "--from=markdown+backtick_code_blocks+pandoc_title_block+yaml_metadata_block",
+        "--to=revealjs",
+        "--standalone",
+        "--slide-level=%d" % slide_level,
+    ]
+
+    if toc:
+        args.append("--toc")
+        args.append("--toc-depth=%d" % toc_depth)
+
+    vars = REVEALJS_DEFAULT_CONFIG.copy()
+    for k,v in variables.items():
+        vars[k] = str(v)
+
+    args = args + ["--variable=%s:%s" % v for v in vars.items()] + pandoc_args
 
     return genrule(
         name = "pandoc-%s" % name,
-        cmd = " ".join(
-                [
-                    "$TOOL",
-                    "$SRC",
-                    "--output=$OUT",
-                    "--from=markdown+smart",
-                    "--to=revealjs",
-                    "--standalone",
-                    "--toc",
-                    "--toc-depth=%d" % toc_depth,
-                    "--slide-level=%d" % slide_level,
-                ]
-                + ["--variable=%s:%s" % variable for variable in variables.items()]
-                + pandoc_args
-            ),
+        cmd = " ".join(args),
         srcs = [src],
         outs = [out],
         tools = ["///tools/pandoc//:bin"]
     )
+
+def presentation(name: str, src: str = None, out: str = None, toc: bool = True, toc_depth: int = 1, slide_level: int = 2, variables: dict = {}, pandoc_args: list = []):
+    return filegroup(
+        name = "presentation_%s" % name.replace('/', '_'),
+        srcs = [pandoc(name, src, out, toc, toc_depth, slide_level, variables, pandoc_args)] + glob(
+            ["%s/**" % name],
+            exclude = ["*.md"],
+        ),
+    )