PyLadiesCon 2025 - 6 décembre 2025
MkDocs est un générateur de sites statiques orientés documentation de projet.
MkDocs créé par Tom Christie pour la documentation de Django REST Framework
Installer MkDocs dans un environnement virtuel, isolé des packages systèmes.
pip install mkdocsmkdocs new my-sitecd my-sitemkdocs serveFonctions intégrées

Le contenu du projet généré est simple.
Fichier de configuration : mkdocs.yml
Dossier docs pour les fichiers sources
Page d’accueil : index.md
# Welcome to MkDocs
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
## Commands
* `mkdocs new [dir-name]` - Create a new project.
* `mkdocs serve` - Start the live-reloading docs server.
* `mkdocs build` - Build the documentation site.
* `mkdocs -h` - Print help message and exit.
## Project layout
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.Ajouter de nouvelles pages et créer un menu de navigation qui sera affiché dans l’en-tête du site.
Configurer ce menu avec le paramètre nav dans le fichier mkdocs.yml :

Note
One of the most confusing aspects of using Markdown is that practically every Markdown application implements a slightly different version of Markdown. 1
MkDocs utilise la librairie Python-Markdown qui dispose de plusieurs extensions de syntaxe 2
Jupyter Book et Sphinxthème par défaut : thème mkdocs
basé sur Bootstrap
clone du thème par défaut du service
Read the Docs
La commande mkdocs build génère les fichiers statiques à publier dans le dossier site :
$ mkdocs build
INFO - Cleaning site directory
INFO - Building documentation to directory: /home/.../my-site/site
INFO - Documentation built in 0.13 secondsCopier les fichiers générés vers votre serveur dédié 1 :
site
├── 404.html
├── conferences
│ ├── logo-pyconfr-2025.svg
│ ├── logo-pyladiescon.svg
│ ├── pyconfr
│ │ └── index.html
│ └── pyladiescon
│ └── index.html
├── css
│ ├── fonts
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.svg
│ │ ├── …
│ │ └── Roboto-Slab-Regular.woff2
│ ├── theme.css
│ └── theme_extra.css
├── img
│ └── favicon.ico
├── index.html
├── js
│ ├── html5shiv.min.js
│ ├── jquery-3.6.0.min.js
│ ├── theme_extra.js
│ └── theme.js
├── search
│ ├── lunr.js
│ ├── main.js
│ ├── search_index.json
│ └── worker.js
├── search.html
├── sitemap.xml
└── sitemap.xml.gz
8 directories, 37 filesRead the Docs est la plateforme d’hébergement de référence des documentations Python.
MkDocs, Sphinx, Jupyter Book, …Quelques informations
Créée en 2010, le code de la plateforme est open source avec ~460 contributeurices.
Read the Docs héberge 80 000 projets open source, sert 55 millions de pages et 40 TB de documentation par mois. Il a 100 000 utilisateurs avec une équipe salariée de seulement 4 personnes.
Voir les comparaisons de Read the Docs avec d’autres plateformes : GitHub Pages, GitBook, Cloudflare Pages et Netlify
Read the Docs recommande de s’authentifier à partir d’une plateforme d’hébergement de code (GitHub, GitLab, Bitbucket) pour faciliter l’import et la configuration des projets.
Vous devez placer un fichier de configuration, nommé .readthedocs.yaml, à la racine de votre dépôt git pour configurer la génération de la documentation sur la plateforme.
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version, and other tools you might need
build:
os: ubuntu-24.04
tools:
python: "3.13"
# Build documentation with Mkdocs
mkdocs:
configuration: mkdocs.yml
# Optionally, but recommended,
# declare the Python requirements required to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txtUne fois importée vous avez le tableau de bord suivant pour votre projet :
Déploiement sur GitHub Pages en tant que site “Project Pages”.
La commande mkdocs gh-deploy
gh-pages, uniquement avec les fichiers générés$ mkdocs gh-deploy
INFO - Cleaning site directory
INFO - Building documentation to directory: /home/fconil/Progs/python/mkdocs-uv/my-mkdocs-site-on-ghpages/site
INFO - Documentation built in 0.11 seconds
INFO - Copying '/home/fconil/Progs/python/mkdocs-uv/my-mkdocs-site-on-ghpages/site' to 'gh-pages' branch and pushing to GitHub.
Énumération des objets: 52, fait.
Décompte des objets: 100% (52/52), fait.
Compression par delta en utilisant jusqu'à 4 fils d'exécution
Compression des objets: 100% (35/35), fait.
Écriture des objets: 100% (38/38), 802.00 Kio | 4.92 Mio/s, fait.
Total 38 (delta 7), réutilisés 0 (delta 0), réutilisés du pack 0
remote: Resolving deltas: 100% (7/7), completed with 3 local objects.
To github.com:fconil/my-mkdocs-site-on-ghpages.git
c88cc7b..9104959 gh-pages -> gh-pages
INFO - Your documentation should shortly be available at: https://fconil.github.io/my-mkdocs-site-on-ghpages/
Material for MkDocs est construit sur MkDocs.
le thème apporte un aspect moderne, adaptatif 1, inspiré de Material Design 2
excellent tutoriel de James Willett
documentation claire
pip install mkdocs par : pip install mkdocs-materialInstallation
pip install mkdocs-material installe les dépendances nécessaires : MkDocs, Markdown, Pygments et Python Markdown Extensions : (une collection d’extensions de Python Markdown)
site_url dans mkdocs.yml :site_name: Mon site MkDocs sur GitHub Pages
site_url: https://fconil.github.io/my-mkdocs-site-on-ghpages/
nav:
- Accueil: index.md
- Conférences:
- …
theme:
name: materialsite_url
Material for MkDocs recommande de définir site_url car MkDocs fait l’hypothèse que le site est hébergé à la racine du domaine. Certains plugins nécessitent que la propriété soit définie, donc il faut toujours la spécifier.
Quelques options de configuration de la navigation :
navigation.tabs : afficher les titres de premier niveau dans le bandeau 1toc.integrate : intégrer la table des matières à la barre de navigation de gauchenavigation.instant : chargement instantané → les clics sur les liens internes sont interceptés et gérés via XHR 2 pour éviter de recharger toute la pagenavigation.tracking : ajouter l’ancre courante du document à l’URL de la barre d’adressenavigation.top : affichage d’un bouton “back-to-top”
Possibilité de choisir parmi les 1000 fontes Google ou d’utiliser une fonte hébergée localement, voir Changing the fonts

theme:
palette:
# Palette toggle for light mode (default)
- scheme: default
primary: light blue
accent: pink
toggle:
icon: material/weather-night
name: Dark mode
# Palette toggle for dark mode (slate)
- scheme: slate
primary: teal
accent: deep orange
toggle:
icon: material/weather-sunny
name: Light modeVoir Changing the colors
Exemple :
primary et accentsite_name: Mon site MkDocs sur GitHub Pages
site_url: https://fconil.github.io/my-mkdocs-site-on-ghpages/
repo_url: https://github.com/fconil/my-mkdocs-site-on-ghpagesAjout d’un lien vers le dépôt git avec des informations (versions, stars, forks) dans le header :
Intégrer des liens dans le footer sous forme d’icônes identifiée vers différentes plateformes :
Material for MkDocs permet d’utiliser plus de 10 000 icônes et emojis.
Dans mkdocs.yml, déclarer :
attr_list (extension Python Mardown)pymdownx.emoji (extension Python Mardown Extensions)Dans mkdocs.yml, déclarer 2 extensions Python Mardown :
Dans la page Markdown :
<div class="grid cards" markdown>
- :material-clock-fast:{ .lg .middle } __Set up in 5 minutes__
---
Install [`mkdocs-material`](#) with [`pip`](#) and get up
and running in minutes
- :fontawesome-brands-markdown:{ .lg .middle } __It's just Markdown__
---
Focus on your content and generate a responsive and searchable static site
</div> Dans mkdocs.yml, déclarer l’extension Python Mardown Extensions suivante :
markdown_extensions:
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_formatDans la page Markdown, déclarer le diagramme Mermaid :
``` mermaid
---
title: Déploiement MkDocs sur GitHub Pages
---
gitGraph
commit
commit
commit
branch gh-pages
commit
switch main
commit
commit
switch gh-pages
commit
```

mkdocs new my-sitemkdocs servemkdocs build et mkdocs gh-deployImportant
La version de MkDocs qui sera installée par pip sera beaucoup plus récente que la version disponible dans vos paquets système.
