2. Outils pédagogiques - brainstorming

Ce document (déjà trop long) est un brouillon, qui essaie de fixer par écrit mes réflexions.

TODO: terminer cette page (last changed 2021-02-16 19:41:32) TODO: bien organiser mes idées

  • En premier, j’essaie de lister les besoins de documents et ressources pédagogiques ;

  • Puis quels outils je connais, pour chaque besoin, avec les avantages et inconvénients ;

  • L’objectif est de trouver UN outil ultime (exemple : tout en LaTeX, tout en Markdown, tout en Jupyter notebooks), qui permette de tout faire.

2.1. Pourquoi cette page ?

Pourquoi je cherche un seul outil ? Je n’ai pas la prétention de pouvoir devenir expert dans douze solutions logiciels différents (toutes avec un langage différent, des configurations différentes etc)… Je suis dubitatif de pouvoir être très productif si dans la même semaine je dois écrire du LaTeX (article) pour un sujet de DS, du LaTeX beamer pour un cours magistral, un Jupyter Notebook avec OCaml pour des solutions d’un TD, des figures en TikZ, un autre Notebook avec du code C et Python pour un TP, des explications d’installation de opam sur une page web etc.

Objectifs : je cherche des outils :

  • me permettant d’être efficace ;

  • que je connais déjà ou que je peux apprendre rapidement ;

  • qui soient libres et gratuits, et pas trop ésotériques, facile d’utilisation et d’installation ;

  • qui n’utilisent que des formats textuels (LaTeX etc), ou quasiment textuels (Jupyter notebook en JSON), pour utiliser un bon gestionnaire de version (git), donc pas de LibreOffice ni Word ;

  • me permettant de couvrir tous mes besoins ;

  • et qui soient les meilleures solutions à chaque problème !

Je sais que je ne pourrais pas avoir un seul outil qui soit parfait, mais disons que j’espère avoir une couverture minimale de mes besoins, qui me permette d’être efficace, de publier de façon ouverte tous mes documents, et pas trop compliqué à maintenir et utiliser.

  • Date : février 2021 (en chantier) ;

  • Page complémentaire : mes-outils-preferes.fr.html sur mon site perso, qui est plus « geek » et moins orientée pédagogie.


2.2. Besoin en enseignements

Lorsque l’on enseigne, en particulier l’informatique dans le supérieur, on a besoin de ces choses là :

2.2.1. Ce qui est non-optionnel

  • Cours

    • au tableau (réel ou virtuel), besoin d’un document à suivre pour ne pas être perdu ;

    • avec slides (intéractif ou non) ;

    • avec documents polycopié :

      • 👍 avec des trous à remplir comme Yacine ?

      • 👎 avoir un polycopié complètement terminé prendra plusieurs années…

  • Page web du cours : avec emploi du temps, liens vers les documents etc ;

  • Travaux dirigés (TD) (sans code) : des feuilles de TD bien jolies, imprimées et distribuées ;

  • Travaux pratiques (TP) (avec code) :

    • il faut à la fois une feuille de TP avec l’énoncé, qui montre du texte, des maths, du code, des figures ;

    • et souvent il faut aussi des morceaux de codes

  • Devoirs surveillés (DS) :

    • petits devoirs : QCM, ou non ;

    • correction des petits devoirs : si QCM, il faut utiliser Auto Multiple Choice (connais pas mais c’est très bien) ;

    • longs devoirs : TODO: ;

    • correction des longs devoirs : à l’ancienne avec des copies papiers, mais un fichier « Excel » (LibreOffice Calc) avec le barème détaillé -> calculs faciles des moyennes par questions/exercices. On perd du temps, mais ça aide.

    • solutions distribuées aux élèves : TODO: ;

  • Cheat-sheet : documents en LaTeX, optimisés aux petits oignons. A faire bien et donner après quelques cours sur le langage, utilisés tout le temps par les élèves.

    • TODO: En faire une avec le cours de maths et physique : symboles maths, alphabet grec, et commandes LaTeX ?

    • Pas besoin de réinventer la roue, juste copier celles ci : C, shell, python TODO: trouver en français et mieux, OCaml, SQL : MySQL (trop technique) SQLite, GNU Make ;

2.2.2. Pour l’organisation

Pour toutes ces idées, deux remarques :

  1. normalement géré par l’établissement d’accueil !

  2. à voir avec les habitudes des autres collègues

2.2.3. Bonus qui seraient utiles

  • Conseils de lectures et d’achats : un document à distribuer début juillet, après les résultats du bac. Avec des conseils de lectures (site web, livres), d’achats (livres, matériel, ordinateur, calculatrice).

  • Fiche de renseignement à faire remplir aux élèves le premier jour ;

  • Activité d’informatique débranchée pour les premières séances :

    • Par exemple l’algorithme débranché pour trouver la personne dont la date d’anniversaire est la plus proche (cf. Didapro8, Martin Quinson) ;

    • Et des idées d’activités à faire dehors hors de la classe, pour les 1/2/3 premières séances, pour apprendre à bien se connaître, et observer l’informatique dans la vie réelle (ex en vrac : vivant => ADN = codage sur \(\{A,T,G,C\}\), protéines = codage acides aminés sur alphabet 20 lettres, téléphone/ordinateur = tout, feu rouge = micro-contrôleur embarqué, télécommunications filaires, automate temporisé / machine à état, machine à café = automatique, etc).

  • TIPE : en MP2I notamment il y aura de plus en plus de TIPE avec de l’informatique, voir quels besoins.

  • Entraînements aux écrits de concours : le principal problème est qu’il n’y a pas encore de sujets disponible pour les MP2I, mais pour toutes les autres épreuves oui.

  • Entraînements aux oraux de concours : le principal problème est qu’il n’y a pas encore de sujets disponible pour les MP2I, mais pour toutes les autres épreuves oui.

  • Rapport de notes pour chaque DS/TP noté : faire un rapport de « performance » de la classe, avec des beaux graphiques, et moyenne/médiane + écart-type pour chaque question/exercice ?

    • prendre les idées de notes.sh que j’avais utilisé en 2013/14 !

    • faire pareil pour chaque trimestre !

    • les notes ne doivent jamais devenir publiques, mais les outils peuvent l’être !

  • Bibliographie :

    • garder une bibliographie au format BibTeX avec tous les livres (niveau lycée, prépa, fac, agrég) utilisés comme sources et références pour rédiger le reste (et articles de recherche ?) ;

    • les utiliser dans le site web, et les documents du cours ;

    • faire une page web avec bib2html qui soit facile d’utilisation ;

    • utiliser Zotero !

  • Trombinoscope interactif (:warning: accès privé) ? Cf ce que j’avais écrit en 2015 pour Mahindra École Centrale : c’est simple et ça marche. Dès que j’ai la liste des élèves et leurs photos je peux faire pareil, ce sera facile.

  • Mini projets de développement : au moins un par semestre, à faire en groupe de 2/3 (trinôme de colles ?).

    • J’aimerai bien donner le même projet à tout le monde, pour gagner du temps…

    • J’aimerai bien donner des projets qui demandent de programmer mais aussi de prouver des choses (style preuve de complexité d’algorithme), et entrelacer les deux (à coup de assert invariant_boucle par exemple) ;

    • Je souhaite donner des projets qui soient indépendants du langage choisis, et exiger un travail en C et en OCaml pour chaque groupe (exemple jeux vidéo client/serveur l’un en C l’autre en OCaml) ;

    • Faire faire du Python même si c’est hors programme MP2I ?

  • Synchronisation des fichiers de travail (pour moi) :

    • ownCloud dans le bon dossier ;

    • git ;

2.2.4. Bonus plus ambitieux mais qui seraient aussi très utiles

  • Exécution sécurisée et Évaluation automatique de code :

    • Pour rapidement évaluer le travail de ~50 élèves à un TP en C/OCaml/Python, il faudrait un outil qui permette d’exécuter de façon sécurisée et automatique tous les fichiers soumis ;

    • Comment faire ça de façon sécurisée ? a) Dans une VM ? Moche et lent, mais efficace ; b) Dans un Docker(file) ? Ce serait classe et moderne, et utilisable par d’autres sans rien installé (mais j’ai pas de bon souvenirs de Docker) ; c) Dans un conteneur spécialisé (Camisole)

    • Le Test Driven Development c’est bien, mais un peu chiant à écrire, et je veux écrire le test une fois indépendamment de leurs conventions de nommages ;

    • Le Behavior Driven Development (avec Cucumber et Gherkin) c’est encore mieux, cf ce que j’avais fait pour ParcourSup.py en 2018 ;

    • Via les cours et exercices de France-IOI c’est aussi possible ? Supporte C/Python/OCaml parfait (mais pas SQL) ;

    • Prologin utilise et développe Camisole (sur GitHub) qui propose des choses chouettes ! Supporte C/Python/OCaml parfaitement (mais pas SQL) ;

    • Autres pistes sympa : nbgrader avec Jupyter notebooks (cf cette doc), ou d’autres trucs intégrés à Moodle comme CodeRunner (qui utilise JobeSandbox, supporter pas OCaml, c’est mort) ;

    • Autres pistes moins sympa : faire utiliser des sites en lignes style Codewars ? j’aime moins mais pourquoi pas ;

  • Logiciel anti plagiat ?

    • Compilatio semble être très puissant, mais non libre, non gratuit, c’est mort. Il était disponible à l’Université Rennes 1 et pour mon cours INF1 à l’automne 2020 nous n’avons pas pu nous en servir car les soumissions de projet étaient des fichiers Java .java et pas des PDF ou docs Word : en prépas j’aurai le même problème ;

    • MOSS semble un bon outil ! « spa un logiciel libre, spa utilisable localement, mais ce n’est pas non plus opéré par une entreprise commerciale. Sinon, ca colle vraiment bien à ta définition de besoin » Non ça me va pas, il faut un compte, il faut envoyer les fichiers en ligne, c’est vraiment à l’opposé de ce que je veux, tant pis si les autres alternatives sont moins bien !

    • Ces petits articles justifient l’intérêt de vérifier le plagiat à UCI.edu et edutwitt.com ;

    • J’ai trouvé study-in-scarlet, qui étend sherlock (que j’ai déjà forké), intéressant ! Ces solutions sont indépendantes du langage ;

    • Pour des codes Python, il y a pycode_similar. Je pourrai étendre study-in-scarlet pour utiliser pygments (au lieu de rouge) pour supporter plus de langages ?

    • J’ai pas mal regardé d’autres outils libres déjà existants, ou sur GitHub… rien trouvé C’est encore des recherches très actives ;

  • Débogueur interactif pour les langages enseignés :

  • Statistiques sur les performances aux concours : en s’organisant bien, on peut garder des traces des notes/rangs/résultats/admissions finales des élèves…

2.2.5. Bonus pour les élèves

2.2.5.1. Autres bonus pour les élèves

  • Pour des élèves ayant un ordinateur mais pas d’Internet

    • Accès à la documentation (OCaml, Python, C, SQL, etc) : Zeal-docs est parfait pour ça !

    • WebCatalog peut permettre d’installer des sites web statiques qui peuvent ensuite être utilisés comme des applications natives !

    • OCaml : utilisez WebCatalog avec le site BetterOCaml ou TryOCaml (cf ce tutoriel) ;

    • Idée : écrire une appli Electron (packager) contenant BetterOCaml ? Ou avec webcatalog.app : ça marche très bien pour BetterOCaml ?

    • C/SQL/Python : trouver des alternatives ?

  • Pour des élèves n’ayant pas d’ordinateur

    • Là, je peux pas faire de miracle…

    • Mais les lycées et Universités proposent des salles informatique en accès libre !

  • Faire le lien entre informatique bureau et calculatrices programmables : TODO: réfléchir à ça


2.3. Listes de technologies et outils

Je liste ici des technologies, en séparant ce que je maîtrise, ce que je connais un peu, et des suggestions de collègues ou d’autres pistes.

TODO: cette liste est encore en chantier.

2.3.1. Ce que je maîtrise bien

2.3.1.1. Production de documents

  • Markdown : je connais très bien le langage de base, et les extensions GitHub Flavored Markdown.

    • Convertir un seul petit fichier (HTML, PDF) : pandoc est parfait ;

    • Convertir plein de fichiers : autant directement aller dans un Jupyter Book (ou autre) ;

    • Imprimable : cheat-sheet, cheat-sheet2.

  • Documents LaTeX : je maîtrise bien, mais ça prend du temps de retrouver des bons automatismes.

    • 👍 avantages :

      • documents super propres ;

      • et langage programmable, on peut rajouter des macros, et faire plein de choses puissantes qui sont impossibles avec les autres solutions ;

    • 👎 inconvénients :

      • chaque document génère un PDF indépendant, c’est plus difficile de tout lier ;

      • difficile de générer des pages web équivalentes aux documents PDF ;

    • Conclusion ? A préférer pour des documents destinés à être imprimés.

2.3.1.2. Production de slides

  • Slides Markdown : Marp avec Markdown + maths \(\KaTeX\) (un sous ensemble de \(\LaTeX\)) :

    • 👍 avantages :

      • un peu primitif, mais ça force à avoir des slides épurés et simples ;

      • ça fonctionne depuis VSCode !

      • on peut ajouter des émojis comme sur GitHub avec :+1: etc ;

      • export facile en PDF ;

      • on peut faire des slides vraiment très propres avec ça : cf ce tutorial sur Julia donné en conférence en 2018 ;

    • 👎 inconvénients :

      • quelques changements depuis l’époque de l”appli Marp (2017), comme expliqué ici, TODO: donc je dois mettre à jour mon vieuw thème ;

      • très peu de contrôle sur l’apparence finale, on ne peut pas faire aussi bien qu’avec LaTeX Beamer ;

      • pas d’intégration entre les figures (TikZ ou algorithm2e) et les commandes spéciales de Beamer (\pause, \alert etc) ;

  • Slides LaTeX Beamer :

    • 👍 avantages : documents super propres, et possibilités de montrer du code et des figures (TikZ ou algorithm2e) apparaître interactivement à chaque slides, et autres ;

    • 👎 inconvénients : syntaxe trop lourde ! J’ai déjà écrit plein de slides Beamer, mais je trouve ça trop lourd ;

    • idée : un premier prototype, sans jolie figure, peut être rapidement écrit en Markdown + Marp, puis on utilise pandoc pour transformer en LaTeX, avec un template/style que l’on aime bien (c’est ce que j’ai fait pendant quatre ans, sur @Naereen/slides) ;

  • Slides depuis Jupyter notebook avec RISE :

    • 👍 avantages : tous les avantages d’un notebook ; c’est très innovant, et modifiable en live ; ça permet de montrer du code exécutable et de l’exécuter devant les élèves ! Ca permet aussi d’avoir un document qui sera directement exportable en HTML/PDF comme un notebook classique, ou en slide statique aussi ! Et on peut dessiner directement dans les slides !

    • 👎 inconvénients : il faut que les cellules ne soient jamais trop longues, et une fois le notebook fini il faut une petite passe manuelle pour ajouter les tags « nouveau slide » ou « sous slide » (qui prend 2 secondes par slides), mais ça marche bien !

    • améliorations possibles :

      • le template d’export en slide PDF ou en HTML slide n’est pas génial, il y a trop de marges à gauche et en haut, mais je peux sûrement bidouiller ça ;

      • je peux facilement écrire un script qui rajoute le tag « nouveau slide » à chaque cellule, et ensuite il faudra juste refaire une passe pour fusionner certaines cellules ou enlever/modifier des tags ;

      • comment convertir en LaTeX Beamer ? Pas possible je pense, ou alors avec IPYNB -> Markdown (Marp) -> LaTeX Beamer ?

    • Démo : @Naereen/Tutoriel-notebooks-Jupyter-a-Didapro-8-Lille-fevrier-2020 tutoriel d’une heure sur les notebooks Jupyter, présenté à ~25 profs de lycée en février 2020 à Didapro 8 à Lille.

2.3.1.3. Autres

  • StrapDown.js : pour une petite page indépendante, ça peut permettre d’aller vite !

    • scripts strapdown2pdf (avec lunamark + my autotex + pdflatex) pour convertir en PDF : primitif mais peut dépanner ? Cf CS101.

    • et strapdown2html : pour rendre autonome et « compiler » la page web une fois terminée ;

    • j’avais aussi bidouillé un truc pour ajouter un bouton TD/TP suivant/précédent, c’est simple mais chouette ;

    • si je m’en sers : passer de lunamark à pandoc pour la conversion Markdown -> HTML ? Et mettre à jour vers Bootstrap 4+ ?

  • Automatisation de compilation : GNU Make et Makefiles

    • 👍 semble être la meilleure solution pour apprendre aux élèves à écrire des petites automatisations de leurs compilation (OCaml + C), avec des bons conseils et des bons exemples ça n’est pas trop compliqué à prendre en main ;

    • 🤔 TODO: A voir si SCons ne serait pas plus approprié en prépa, pour leur faire faire du Python ? C’est très puissant, mais moins standard (et pas présent aux oraux !)… Pour les motivés ou les frustrés de Make seulement ?

2.3.2. Ce que je connais déjà pas mal

  • pandoc :

    • slides Markdown (Marp) -> LaTeX -> PDF possible (cf @Naereen/slides) ;

    • fichier Markdown -> LaTeX -> possible ;

    • avec un peu de travail, on peut probablement convertir un seul Markdown vers tous les formats de sorties ;

    • en fait, jupyter-nbconvert --to latex/pdf utilise pandoc, donc on peut changer le template aussi !

  • BibTeX : LE standard pour garder une bibliographie et gérer des citations dans un document :

    • utilisable depuis LaTeX, et Sphinx et Jupyter book ;

    • et petits outils bib2html, bibtex_beautifier.py ;

    • avec Zotero !

  • Streamer un cours en direct en ligne, sans besoin de logiciel ou connexion particulière :

    • BigBlueButton (expert) : gratuit et libre, mais quelle instance aurai-je le droit d’utiliser ? Le plus simple « au cas où » occasionnellement ;

    • Jitsi (expert) : gratuit et libre, mais pas approprié pour des enseignements ou des appels avec beaucoup de gens, non ?

    • Twitch : peut dépanner aussi, en streamant avec OBS Studio ;

    • Autres : Live YouTube (jamais essayé), Live Facebook (lol) ;

  • Streamer un cours avec un logiciel :

    • Discord (expert), gratuit mais besoin de logiciels et de comptes pour tout le monde ;

    • Microsoft Teams (jamais réussi), payant mais besoin de logiciels et de comptes pour tout le monde ;

    • Zoom (jamais essayé), payant mais besoin de logiciels et de comptes pour tout le monde.

2.3.2.1. Autres

2.3.3. Mauvaises idées ?

  1. Tout en LaTeX naïvement : pour un même cours, ça va, mais pour plein de choses ça manque d’interactivité, notamment pour montrer du code en direct ;

  2. Tout à la main en numérisant les feuilles : c’est très primitif, mais ça peut dépanner…

  3. Tout à la main, depuis Tableaunoir. C’est très long, et pas modifiable a postériori…

2.3.4. Suggestions de collègues ?

  1. Tout en LaTeX intelligemment : avec des templates de nouveaux documents, un jeu de macro super costaux, et le paquet beamerarticle (i) pour transformer des slides en article (inclus dans beamer), comme faisait Serge Haddad notamment pour son cours ALGO2 en 2012) ;

  2. Avec org-mode : je sais que c’est balèze, mais pas tellement mieux que d’autres trucs, si ? Certains arguments en faveur de ord-mode sont solides, et par exemple des amis ou collègues comme Luc Pélissier et Martin Quinson rédigent avec org-mode. Mais je n’ai jamais utilisé, et ça fait trop de travail pour y passer ;

  3. Autres idées ? Contactez moi !

2.3.5. Autres pistes, considérées mais oubliées

  • 🤔 Madoko : un pré-processeur Markdown qui semble très puissant, indépendant de pandoc (mais écrit dans un langage rare), gère juste la sortie en HTML et PDF mais avec une apparence identique (notes / slides reveal.js ou Beamer / articles).

    • Propose madoko.net un puissant éditeur en ligne, mais aussi installable/utilisable en ligne de commande.

    • Je trouve ça beau et chouette, TODO: à creuser un peu plus.

    • 👍 Avantages : original, éditeur très chouette (mais bon, pas VSCode…) ;

    • 👎 Inconvénients : très peu populaire, plus activement maintenu, risque de passer du temps sur un système pas stable sur le long terme ;

  • 👎 AsciiDoc et AsciiDoctor : format texte un peu comme rST et Markdown, produit des HTML et PDF à la Sphinx ou pandoc : je vois pas l’intérêt comparé à ces autres outils. Le code est en Ruby, donc je serai pas/moins capable de bidouiller.

  • 👎 fastdoc utilise AsciiDoc et des notebooks Jupyter uniquement, et semble focalisé sur du code Python. Approprié si je développe une autre « grosse » bibliothèque Python, mais pas pour des cours.

  • Pour dessiner des courbes et graphiques et dessins vectoriels :

    • 👎 Asymptote (en ligne) est un logiciel de dessin très puissant, qui peut sortir du code LaTeX et autre. Aucun intérêt d’apprendre yet another syntax ;

    • GeoGebra (Wiki:Geogebra) est aussi très puissant, mais à part pour faire de la géométrie 2D « du collège » ou des ellipses, je vois pas le besoin. 👍 avantage : on peut exporter la figure comme du TikZ !

    • GNU Plot (Wiki:GNUPlot) est chouette mais basique. Peut être utilisé depuis la ligne de commande, depuis VSCode, depuis Jupyter, et peut exporter en TikZ… aucun intérêt d’apprendre yet another syntax, sauf si on veut vite fait tracer des courbes de maths ?

    • Matplotlib est génial (avec xkcd mode), depuis Python, et peut créer des belles figures, mais plus côté numérique. On peut expoter en LaTeX ou TikZ !

    • 👎 PSTricks semble moins puissant que PGF/TikZ donc j’oublie !


2.4. Choix finaux ?

2.4.1. Dessiner des graphes simples

Graphviz + Dot graph ?

  • dans Jupyter notebook : avec graphviz mais que depuis Python… TODO: une extension avec une magic cell %%graphviz ?

  • dans Sphinx (rST) ou Jupyter book (rST / MyST / nb) : sphinx.ext.graphviz déjà utilisé dans graph.fr.html sur mon site perso ;

  • dans LaTeX : je crois pas que ce soit simple, on peut faire dot -Tsvg ou dot -Tpdf pour exporter en SVG ou PDF et inclure ça dans le LaTeX, TODO: mais comment exporter en TikZ ou autre ? J’ai déjà bidouillé dot2tex en 2018, et ça supporte Python 3 maintenant, et l’utilisation depuis LaTeX (CTAN:dot2texi) !

Non mieux vaut toujours faire avec TikZ !

2.4.2. Dessiner des figures scientifiques quelconques

TikZ (PGF) avec LaTeX

  • côté bureau : utiliser QTikz (ou kTikz ou tikzzz) pour rapidement itérer sur une figure, ou VSCode ;

  • depuis LaTeX : c’est conçu pour ! Toujours inclure la figure avec \input{tikz-figures/graphe-compilation12.tex}, pour les avoir réutilisables ailleurs (un dépôt git avec juste les figures ? peut-être pas nécessaire) ;

  • dans Jupyter notebook : avec itikz, indépendant de Python FIXME: mais ne fonctionne pas dans d’autres kernels…

  • dans Sphinx (rST) ou Jupyter book (rST / MyST / nb) : sphinxcontrib.tikz ? mais peut-être plus simple d’utiliser juste %%itikz depuis Jupyter notebooks ?

  • Documentation : « TikZ pour l’impatient - Free » (~150 pages) (PDF) est LA référence en français, et le manuel PGF/TikZ (~1300 pages) en anglais peut aussi aider ;

Voir aussi

En 2013, j’aurai voulu utiliser gastex, maintenu par mon ancien professeur Paul Gastin (gastex @CTAN), mais plus maintenant, car gastex semble incompatible avec TexLive 2014.

Note

Apparemment, les versions récentes de PGF/TikZ viennent avec des dizaines de librairies pour dessiner plein de choses, des automates et machines de Turing, des graphes (de fonctions et avec noeuds/arêtes) et plein d’autres ! Et on peut faire des animations comme le montrent ces documents ?

2.4.3. Écrire des algorithmes

\usepackage[algochapter,linesnumbered,commentsnumbered,inoutnumbered, french]{algorithm2e}
  • FIXME: Pour d’autres formats, il n’y a pas de possibilité bien propre… c’est un souci ! On peut toujours écrire un ptit document LaTeX avec classe standalone, convertir PDF to SVG ou to PNG, et inclure ça dans le document… mais c’est sale.

2.4.4. Écrire du code

  • En Markdown, MyST, rST, et Jupyter notebook, c’est trivial :

let rec fact (n: int) : int = if n <= 1 then 1 else n * (fact (n-1));;
  • Pour LaTeX : je préfère choisir minted (utilisé dans ma thèse) C’est le package utilisé quand on convertit avec pandoc, et aussi l’export LaTeX et PDF depuis Jupyter notebook, mais pas Sphinx ni Jupyter-book. Cf documentation

\usepackage[chapter,draft=false,final=true]{minted}

2.4.5. Écrire du code et montrer sa sortie

  • En Markdown, et rST, c’est trivial mais il faut un peu copier-coller :

# let rec fact (n: int) : int = if n <= 1 then 1 else n * (fact (n-1));;
val fact : int -> int = <fun>
# fact 12;;
- : int = 479001600
  • En MyST ou Jupyter notebooks qui exécutent le code tapé, normalement ça se fait tout seul :

let rec fact (n: int) : int = if n <= 1 then 1 else n * (fact (n-1));;
fact 12;;
val fact : int -> int = <fun>
- : int = 479001600
  • Sinon on peut toujours écrire ça à la main :

# let rec fact (n: int) : int = if n <= 1 then 1 else n * (fact (n-1));;
val fact : int -> int = <fun>
# fact 12;;
- : int = 479001600
In [1]: let rec fact (n: int) : int = if n <= 1 then 1 else n * (fact (n-1));;
Out[1]:
val fact : int -> int = <fun>
  • Pour LaTeX : je connais pas de package bien propre qui permette de recalculer les sorties et de tout bien inclure…

    • TODO: ça existe peut-être ? CTAN:runcode (Bash mais générique ?), CTAN:jupynotex ;

    • En fait il vaudrait mieux garder des notebooks (quitte les inclure, à l’intérieur d’une autre page) pour toute partie qui montre du code ? Pénible de devoir tout faire dans un même document (algorithm2e/TikZ et code entrée/sortie)…

    • Je suspecte que tous les polys de cours qui sont tapés en LaTeX et inclus entrées et sorties contiennent les sorties en dure dans les .tex, et je trouve pas ça élégant ;

    • Ou alors ils utilisent pandoc

2.4.6. Autres choix

  • TODO:

  • Page web unique de la classe ? Cahier de Prépa semble une super idée… et c’est libre, gratuit, hébergé en France, et fiable. Balèze !

  • Publier des cours en PDF qui sont très bien terminés : sur CEL (HAL) ?

  • Publier des slides PDF : sur SpeakerDeck s’ils sont bien propres et terminés ;

2.4.7. Je dois automatiser…?

Par exemple, écrire un script qui fait marp2pdf (DONE) ;

2.4.8. Je dois m’entraîner…?

  • TikZ pour dessiner des jolies figures scientifiques ;

    • Mermaid.js ? c’est mignon mais bon autant maîtriser TikZ !

  • Écrire des algorithmes dans LaTeX ;

  • Utiliser BibTeX dans Jupyter notebook, ou Sphinx ;

  • Utiliser Zotero pour gérer la bibliographie ;