Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| dev:python:sphinx:introduction [2023/10/29 11:42] – yoann | dev:python:sphinx:introduction [2025/02/27 15:25] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| - | ====== | + | ====== |
| - | Sphinx est un programme dédié à la génération de tous types de documentation associée à un projet: | + | Sphinx est un programme dédié à la génération de tout type de documentation associée à un projet: |
| - | * La documentation de référence (documentation des modules, classes et APIs); | + | * La documentation de référence |
| * les tutoriaux (documentation à objectifs pédagogiques); | * les tutoriaux (documentation à objectifs pédagogiques); | ||
| * Les How-To (documentation ayant pour objet la résolution de problèmes); | * Les How-To (documentation ayant pour objet la résolution de problèmes); | ||
| * Les documents explicatifs ayant pour objectif de faire connaître ou de justifier certains choix. | * Les documents explicatifs ayant pour objectif de faire connaître ou de justifier certains choix. | ||
| - | Souvent on pense à Sphinx comme à un outil de génération de documentation technique pour Python capable d' | + | Souvent on pense à Sphinx comme à un outil de génération de documentation technique pour Python capable d' |
| - | Plus généralement Sphinx peut prendre en entrée tout type de document texte et produire une sortie lisible. | + | Plus généralement Sphinx peut prendre en entrée tout type de documents textes |
| En général les fichiers texte en entrées utilisent le formatage **reStructredText** et la sortie produite par Sphinx est un ensemble de documents formatés en HTML. | En général les fichiers texte en entrées utilisent le formatage **reStructredText** et la sortie produite par Sphinx est un ensemble de documents formatés en HTML. | ||
| Ligne 20: | Ligne 20: | ||
| * Sphinx est modulaire, il comporte de nombreuses extensions facilement activables. | * Sphinx est modulaire, il comporte de nombreuses extensions facilement activables. | ||
| + | |||
| + | ===== Installer Sphinx ===== | ||
| + | |||
| + | <code bash> | ||
| + | # Création d'un environnement virtuel Python | ||
| + | python3 -m venv env | ||
| + | |||
| + | # Activer l' | ||
| + | source env/ | ||
| + | |||
| + | # Installation de Sphinx | ||
| + | pip install sphinx | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Initialiser le répertoire de travail ===== | ||
| + | |||
| + | Sphinx a besoin d'une arborescence spécifique pour fonctionner. La commande '' | ||
| + | |||
| + | Par défaut la commande crée un dossier nommée '' | ||
| + | |||
| + | <code bash> | ||
| + | mv source doc | ||
| + | </ | ||
| + | |||
| + | Une fois le dossier renommé, il faut modifier la valeur de la variable **SOURCEDIR** du '' | ||
| + | |||
| + | |||
| + | ==== Tester la Génération de la documentation ==== | ||
| + | |||
| + | Pour valider l' | ||
| + | |||
| + | <code bash> | ||
| + | # Générer la documentation | ||
| + | make html | ||
| + | |||
| + | # Consulter la documentation produite | ||
| + | firefox build/ | ||
| + | </ | ||
| ===== Installer Sphinx et le theme Read The Doc ===== | ===== Installer Sphinx et le theme Read The Doc ===== | ||
| + | |||
| + | Sphinx utilise par défaut le theme minimaliste Alabaster, un thème plus complet et populaire est disponible via pip : | ||
| + | <code bash> | ||
| + | pip install sphinx-rtd-theme | ||
| + | </ | ||
| + | |||
| + | Pour remplacer le thème par défaut, éditer '' | ||
| + | |||
| + | <code python> | ||
| + | html_theme = ' | ||
| + | </ | ||
| + | |||
| + | Les thèmes sont configurables. Confère la [[https:// | ||
| - | ===== Ajouter | + | ===== Ajouter |
| * Créer un fichier .rst dans le dossier de la documentation ; | * Créer un fichier .rst dans le dossier de la documentation ; | ||
| - | * Référencer | + | * Référencer |
| < | < | ||
| Ligne 34: | Ligne 86: | ||
| </ | </ | ||
| - | < | + | <file txt hello.rst> |
| + | |||
| + | Hello World | ||
| + | =========== | ||
| + | |||
| + | Hello Sphinx !!! | ||
| + | </ | ||
| + | |||
| + | Le fichier index.rst contient le sommaire généré de la facon suivante : | ||
| + | |||
| + | < | ||
| .. toctree:: | .. toctree:: | ||
| : | : | ||
| : | : | ||
| - | ./maNouvellePage.rst | + | ./hello.rst |
| </ | </ | ||
| - | ===== reStructuredText ===== | + | La directive '' |
| + | * Le paramètre '': | ||
| + | * Le paramètre '': | ||
| + | * Attention a bien laisser la ligne vide séparant les paramètres de la directive de son contenu. | ||
| - | La syntaxe reStructuredText, | + | |
| + | ===== Introduction à la syntaxe reStructuredText ===== | ||
| + | |||
| + | La [[https:// | ||
| Pour l' | Pour l' | ||
| + | |||
| < | < | ||
| Voici du texte en *italique*, en **gras**, et voici du ``code inline`` composant un premier paragraphe. | Voici du texte en *italique*, en **gras**, et voici du ``code inline`` composant un premier paragraphe. | ||
| Ligne 53: | Ligne 122: | ||
| </ | </ | ||
| + | ==== Les commentaires ==== | ||
| + | Commentaire simple | ||
| + | < | ||
| + | .. Un commentaire sur toute la ligne courante | ||
| + | |||
| + | Le texte présent est un autre bloc (un paragraphe). | ||
| + | Le commentaire ci-dessus n'est pas visible à la génération du document. | ||
| + | </ | ||
| + | |||
| + | Commentaire multi-lignes : | ||
| + | < | ||
| + | |||
| + | .. | ||
| + | Un commentaire sur plusieurs lignes | ||
| + | Le texte de même indentation reste un commentaire | ||
| + | |||
| + | Un autre paragraphe dans le même commentaire | ||
| + | |||
| + | Le texte ici n'est plus un commentaire | ||
| + | </ | ||
| + | |||
| + | ==== Les titres et sections ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | Titre principal | ||
| + | =============== | ||
| + | |||
| + | |||
| + | Titre de niveau 2 | ||
| + | ----------------- | ||
| + | |||
| + | |||
| + | Titre de niveau 3 | ||
| + | ~~~~~~~~~~~~~~~~~ | ||
| + | </ | ||
| + | |||
| + | On définit un niveau de titre en le surlignant avec les caractères spéciaux. Par défaut, les niveaux de titres ne sont pas associés à un caractère particulier, | ||
| + | |||
| + | Par convention dans [[https:// | ||
| + | |||
| + | * ''#'' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * ''"'' | ||
| + | |||
| + | ==== Liens externes ==== | ||
| + | |||
| + | Pour une URL (externe) : | ||
| + | < | ||
| + | Syntaxe d' | ||
| + | </ | ||
| + | |||
| + | <note warning> | ||
| + | * Attention aux guillemets arrières ; | ||
| + | * Attention à l' | ||
| + | * Attention à l' | ||
| + | </ | ||
| + | |||
| + | Pour la création d'un lien externe, on peut faire le choix de séparer la définition du lien et la cible : | ||
| + | |||
| + | < | ||
| + | Le paragraphe suivant contient seulement la `texte du lien`_ | ||
| + | La cible peut être définie plus loin dans le document | ||
| + | |||
| + | Ici un autre paragraphe | ||
| + | |||
| + | |||
| + | .. _texte du lien: https:// | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Les références croisées ==== | ||
| + | |||
| + | Une des forces de Sphinx réside dans sa gestion des **références croisées**. De nombreux éléments de la documentation peuvent être désignés/ | ||
| + | |||
| + | Tous les détails concerant les **cross-references** sont abordés dans la [[https:// | ||
| + | |||
| + | |||
| + | De manière générale on place un **label** en amont du bloc: | ||
| + | |||
| + | < | ||
| + | .. _`mon-par`: | ||
| + | Ici un simple paragraphe avant lequel on a placé | ||
| + | |||
| + | Plus loin dans ma documentation je peux faire faire référence au paragraphe précédent voir :ref:`mon par` | ||
| + | </ | ||
| + | |||
| + | ==== Lien vers un document ==== | ||
| + | |||
| + | Pour créer une référence vers un autre document : | ||
| + | < | ||
| + | .. lien vers un document | ||
| + | |||
| + | Retour à l' : | ||
| + | |||
| + | .. lien vers un document avec définition du texte du lien | ||
| + | |||
| + | Retour à la :doc:`page d' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Lien de téléchargement ==== | ||
| + | |||
| + | Pour créer un lien de téléchargement désignant un fichier ressource présent dans l' | ||
| + | |||
| + | < | ||
| + | Télécharger le GIF Hamtaro : | ||
| + | </ | ||
| + | |||
| + | ==== Les listes ==== | ||
| + | |||
| + | Les listes : | ||
| + | |||
| + | < | ||
| + | Liste à puce : | ||
| + | |||
| + | * Ceci est une liste | ||
| + | * un autre élément | ||
| + | |||
| + | * Une sous-liste | ||
| + | * Notez bien le saut de ligne avec la liste principale, | ||
| + | ça ne marchera pas si vous l' | ||
| + | Ce même élément s' | ||
| + | |||
| + | * un dernier élément | ||
| + | |||
| + | Liste ordonnée : | ||
| + | |||
| + | 1. Un | ||
| + | 2. Deux | ||
| + | 3. Trois | ||
| + | |||
| + | Une autre liste ordonnée : | ||
| + | |||
| + | #. Un | ||
| + | #. Deux | ||
| + | #. Trois | ||
| + | </ | ||
| + | |||
| + | Blocs de code | ||
| + | < | ||
| + | Voici comment faire un bloc que code simple :: | ||
| + | |||
| + | Ceci est un bloc de code. Il est créé grâce aux doubles deux-points. | ||
| + | |||
| + | On peut également placer les doubles deux-points seuls si on ne veut pas | ||
| + | terminer sa phrase par ce symbole. | ||
| + | |||
| + | :: | ||
| + | |||
| + | Voici un autre bloc de code... | ||
| + | |||
| + | Et c'est pas fini ! On peut aussi définir un bloc de code avec une syntaxe | ||
| + | plus explicite, grâce à laquelle on peut indiquer à Sphinx dans quel | ||
| + | langage il est rédigé, ce qui lui permettra d' | ||
| + | syntaxique : | ||
| + | |||
| + | .. code-block:: | ||
| + | |||
| + | # | ||
| + | |||
| + | | ||
| + | |||
| + | On change l' | ||
| + | </ | ||
| + | |||
| + | On peut également utiliser des blocs | ||
| + | < | ||
| + | .. NOTE:: | ||
| + | |||
| + | Ceci est une note. | ||
| + | |||
| + | .. WARNING:: | ||
| + | |||
| + | Ceci est un avertissement ! | ||
| + | |||
| + | .. IMPORTANT:: | ||
| + | |||
| + | Ceci est important ! | ||
| + | </ | ||
| * Le site officiel de Sphinx propose une [[https:// | * Le site officiel de Sphinx propose une [[https:// | ||
| * Confère également la [[https:// | * Confère également la [[https:// | ||
| + | |||
| + | |||
| + | Introduire les images (png, jpg, gif) | ||
| + | |||
| + | < | ||
| + | Voici une image : | ||
| + | |||
| + | .. figure:: ./ | ||
| + | |||
| + | Voici un autre image avec quelques paramètres en plus : | ||
| + | |||
| + | .. figure:: ./ | ||
| + | :alt: Texte alternatif | ||
| + | : | ||
| + | : | ||
| + | : | ||
| + | |||
| + | Texte affiché sous l' | ||
| + | |||
| + | </ | ||
| + | |||
| + | Pour les tableaux, on définit les cellules telles qu'on souhaite les voir s' | ||
| + | |||
| + | < | ||
| + | +-----------+-----------+-----------+ | ||
| + | | Heading 1 | Heading 2 | Heading 3 | | ||
| + | +===========+===========+===========+ | ||
| + | | Hello | World | ||
| + | +-----------+-----------+-----------+ | ||
| + | | foo | ||
| + | +-----------+ | ||
| + | | baz | ||
| + | +-----------+-----------------------+ | ||
| + | </ | ||
| + | |||
| + | En plus de la syntaxe propre à reStructuredTest, | ||
| + | |||
| + | ==== Métadonnées HTML ==== | ||
| + | |||
| + | On peut également introduire des métadonnées pour la génération des documents en HTML : | ||
| + | |||
| + | < | ||
| + | .. meta:: | ||
| + | : | ||
| + | : | ||
| + | : | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| Ligne 75: | Ligne 377: | ||
| : | : | ||
| </ | </ | ||
| + | |||
| Ligne 80: | Ligne 383: | ||
| '' | '' | ||
| + | |||
| + | |||
| + | |||
| ===== Références ===== | ===== Références ===== | ||
| Ligne 86: | Ligne 392: | ||
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| + | * https:// | ||