L'extension [sphinx-multiversion](https://holzhaus.github.io/sphinx-multiversion/master/index.html) permet de générer un ensemble de pages HTML contenant plusieurs versions. Il est alors possible de choisir la version dans une liste déroulante.
### Principe de fonctionnement
Le principe est que cette extension liste les branches et tags dans le dépôt git local (elle ne consulte pas les informations sur le remote git). Il est possible de configurer quels tags et branches sont retenues comme versions via des expressions régulières. Par exemple la branche "main" et tous les tags commençant par "v" suivi de chiffres.
Il est important de noter que les fichiers source de chaque version sont utilisés, en revanche seule la configuration de la branche actuelle est utilisée pour compiler toutes les versions (y compris les fichiers CSS et templates par exemple). Il faut donc conserver une rétro-compatibilité du thème et de la configuration avec les ancienes sources. Cela permet en retour que les modifications du thème soit répercutées sur toutes les versions, afin d'avoir une documentation homogène.
### Compiler la documentation multiversion
``` shell
cd projet-de-documentation
source outils/bin/activate
make html_versions
```
### Configuration
Au delà de la [configuration du système de base](https://holzhaus.github.io/sphinx-multiversion/master/configuration.html), quelques modifications ont été ajoutées :
* l'extension `rtd_current_version` améliore la compatibilité de `sphinx-multiversion` avec le thème ReadTheDocs
* l'extension `version_data` permet de définir des variables python différentes dans chaque version, qui seront accessibles dans les templates. Ces variables peuvent être définies dans le fichier `current_version_data.py`