Notes de cours pour le cours de robotique (1SX, Cégep de Shawinigan), publiées avec MkDocs et le thème Material for MkDocs.
Site en ligne : https://nbourre.github.io/1sx_cours_notes/
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtmkdocs serveOuvre http://127.0.0.1:8000/ — le site se recharge automatiquement à chaque modification.
Il existe deux configurations de build, selon le mode de distribution :
mkdocs buildGénère le dossier /site (ignoré par git). C'est cette commande qu'exécute le workflow .github/workflows/docs.yml à chaque push sur main, pour publier automatiquement sur GitHub Pages. Ce build utilise des URLs de type dossier (ex. 1SX_cours_04_dels_moteurs/), ce qui suppose un vrai serveur web.
Ne pas ouvrir /site/index.html directement avec un navigateur (file://) : la navigation et la recherche sont cassées dans ce mode, car les liens dépendent de la résolution de dossier faite par un serveur, et la recherche utilise fetch(), bloqué par le navigateur pour les fichiers locaux.
mkdocs build -f mkdocs-offline.ymlGénère le dossier /site-offline (ignoré par git), pensé pour être copié tel quel sur un poste sans connexion et ouvert directement (double-clic sur index.html). Cette configuration hérite de mkdocs.yml et ajoute le plugin officiel material/offline, qui :
- génère des liens directs vers les fichiers
.html(pas de dépendance à un serveur pour résoudre les dossiers) - intègre l'index de recherche dans un script JS plutôt que de le charger par
fetch()
C'est ce dossier qu'il faut copier sur les postes des étudiants, pas /site.
Limite connue (attendue) : les liens de référence externes dans le contenu (Wikipedia, docs Arduino, datasheets, GitHub, vignettes YouTube) ne fonctionneront pas hors ligne. Sans impact pour un contexte d'examen sans internet.
Pour que la copie hors ligne fonctionne réellement sans internet, les dépendances suivantes ont été rapatriées dans le repo plutôt que chargées depuis un CDN :
- MathJax (rendu des formules, utilisé dans les cours PID et capteur de ligne) : vendorisé dans
docs/javascripts/mathjax-vendor/(script + polices.woff), référencé dansmkdocs.yml. - Google Fonts : désactivées (
theme.font: falsedansmkdocs.yml), le thème utilise la police système par défaut. - iframe-worker (polyfill requis par
content.code.annotate) : vendorisé dansdocs/javascripts/vendor/iframe-worker-shim.js, référencé uniquement dansmkdocs-offline.ymlviaextra.polyfills.
Si une future modification de mkdocs.yml ajoute une ressource externe (script, police, CDN), il faut soit l'ajouter aussi en local dans les deux configs, soit s'assurer qu'elle est optionnelle pour l'usage hors ligne.
mkdocs build --strictFait échouer le build sur tout avertissement (lien brisé, fichier référencé manquant, etc.) — à faire avant de pousser des changements de structure (renommage de dossier, déplacement de page).
- PDF (
.github/workflows/export-to-pdf.yml) : sur la branchepdf, convertit chaque cours en PDF via Pandoc/LaTeX et publie une release GitHub avec un zip de toutes les notes.