// ============================================================ // code_slides.typ — Module de génération de slides de code // Thème clair, sobre, lisible // ============================================================ // Couleurs #let couleur-orange = rgb("#E85D04") #let fond-code = rgb("#F4F4F4") // gris très clair #let texte-code = rgb("#1A1A1A") // quasi-noir, très lisible #let bordure-code = rgb("#CCCCCC") // gris moyen pour le contour // ---------------------------------------------------------- // STYLE DU BLOC DE CODE — fond clair, texte foncé, sobre // ---------------------------------------------------------- #let style-bloc-code(contenu) = block( width: 100%, fill: fond-code, radius: 4pt, inset: (x: 1.2em, y: 1em), breakable: true, stroke: (paint: bordure-code, thickness: 1pt), )[ #set text(fill: texte-code, size: 14pt) // taille augmentée #contenu ] // ---------------------------------------------------------- // SLIDE DE TRANSITION — texte simple, pas d'effet // ---------------------------------------------------------- #let slide-titre-fichier(nom-fichier, myslide, graphe_tanner_fond) = myslide( // Header : juste le texte de section [Code Source], // Contenu : nom du fichier centré, sobre align(center + horizon)[ // Graphe de Tanner en fond décoratif (discret) #place(center + horizon, dy: 8.2cm)[ #graphe_tanner_fond(0.9cm, 1.75) ] #place(center + horizon, dy: 7.5cm)[#text(size: 50pt, weight: "bold")[#nom-fichier]] ], ) // ---------------------------------------------------------- // SLIDE DE CODE — header texte seul, sans icône // ---------------------------------------------------------- #let slide-code-fichier(nom-fichier, contenu-code, myslide) = myslide( // Header : juste le nom du fichier, texte brut [#nom-fichier], // Contenu style-bloc-code[ #raw(contenu-code, lang: "rust", block: true) ], ) // ---------------------------------------------------------- // FONCTION PRINCIPALE // ---------------------------------------------------------- #let generer_slides_code(fichiers, myslide, graphe_tanner_fond) = { for chemin in fichiers { let parties = chemin.split("/") let nom = parties.last() slide-titre-fichier(nom, myslide, graphe_tanner_fond) let source = read(chemin) slide-code-fichier(nom, source, myslide) } }