Les bases de reStructuredText¶
- Auteurs : Richard Jones & David Goodger, traduits par Philippe Dessus
- Date de création : Juillet 2016.
- Date de modification : 16 septembre 2016.
- Statut du document : en travaux.
- Licence : Document placé dans le domaine public.
- Résumé : Ce document donne les principaux éléments de la syntaxe reST (reStructuredText), utilisée par Sphinx et certains wikis. C’est la traduction quasi-complète de R. Jones, A ReStructuredText Primer, avec des ajouts provenant de D. Goodger, reStructuredText Markup Specification et D. Goodger reStructuredText Directives et commentés par le traducteur.
Introduction¶
Ce document est une introduction informelle à reStructuredText (reST), qui est un langage de balisage de texte. Le texte reST est interprété (p. ex., par Sphinx) pour produire des documents HTML pouvant être lus par un navigateur.
Ne pas hésiter à afficher le code source de la page pour comprendre quelle est la syntaxe utilisée.
L’entité la plus basique est le paragraphe. C’est un bloc de texte séparé par des lignes vides (une suffit). Il faut noter qu’il n’est pas possible d’aller à la ligne à l’intérieur d’un bloc de texte (voir plus loin le non-effet du passage à la ligne). Les paragraphes doivent avoir la même indentation -i.e., être alignés à gauche. Des paragraphes qui sont décalés par rapport aux précédents sont traités comme des citations. Par exemple :
Ceci est un paragraphe, il est plutôt court
Ce paragraphe indenté va être rendu comme un bloc en retrait, idéal pour les citations.
Là on revient à la ligne.
Styles de texte¶
Dans les paragraphes et autres entités textuelles, il est possible de marquer du texte en italiques avec *italiques*
ou en gras avec **gras**
, ou encore partiellement ainsi : **partielle**\ment
. Ce sont des balises dans le texte (inline markup) ; pour le faire .
Pour faire apparaître du texte en police à empattement fixe, utiliser de doubles guillemets : texte à empattement fixe
(justement utilisés pour signaler les commandes reST dans ce document). Noter qu’aucun bidouillage supplémentaire ne peut être fait à l’intérieur de tels guillemets (p. ex., pas d’italiques).
Pour utiliser l’un de ces caractères “spéciaux” dans le texte, il suffit de le faire précéder d’un antislash comme ceci : 5\*6=30
, qui sera rendu ainsi : 5*6=30.
Astuce¶
Il faut considérer que le balisage en ligne est une forme de parenthésage et qu’il doit être utilisé en tant que tel : immédiatement avant et après le texte que l’on veut marquer (sans insérer d’espaces, ni au milieu d’un mot).
Listes¶
Les listes d’items sont de trois sortes : énumération, à puces, définitions. Pour toutes ces listes on peut avoir autant de paragraphes et de sous-listes que l’on veut, du moment que le côté gauche de leur paragraphe est aligné avec la première ligne de texte.
Les listes doivent toujours démarrer comme un nouveau paragraphe (après une ligne vide).
Les listes d’énumérations¶
Concerne les énumérations (nombres, lettres, chiffres romains). Commencer une ligne avec le nombre ou la lettre suivi(e) d’un point, une parenthèse fermante ou entre parenthèses. Les formes suivantes sont reconnues (attention, tous les navigateurs peuvent ne pas rendre ces énumérations de la même manière : mieux vaut les tester) :
- Nombres
- Lettres capitales
et ça peut aller sur plusieurs lignes
avec 2 paragraphes !
lettres minuscules
- avec une sous-liste démarrant avec un nombre différent.
- assurez-vous que les nombres sont corrects !
- Chiffres romains majuscules
- Chiffres romains minuscules
- Encore des nombres
- Et encore !
Les listes à puce commencent indifféremment par un “-”, “+”, ou “*”.
- une liste à puce avec “*”
- une sous-liste avec “-“
- encore une autre sous-liste
- un autre item
- une sous-liste avec “-“
Note : si un paragraphe commence par un signe pouvant être interprété comme un énumérateur, le premier caractère sera précédé d’un anti-slash
\A. Einstein est un gars vraiment très intelligent
est rendu ainsi :
A. Einstein est un gars vraiment très intelligent
Les listes de définition¶
Au contraire des précédentes, les listes de définition consistent en un terme et la définition de ce terme. Peuvent être utilisées pour un glossaire, un dictionnaire. Le format d’une telle liste est :
- Machin
- La définition de machin, indentée. Noter que le terme est automatiquement mis en gras. Le terme doit tenir en une ligne. la définition tient en un ou plusieurs paragraphes, indentés de la même manière par rapport au terme. Ne pas sauter de ligne entre le terme et sa définition.
Préformatage (code informatique)¶
Pour inclure un paragraphe de texte préformaté, terminer le bloc par ”::”. Le bloc préformaté qui suivra sera terminé quand le texte reviendra au même niveau d’indentation que le texte juste avant le bloc préformaté. Et les deux deux-points sont convertis en un simple deux-points s’ils ne sont pas précédés d’une espace. L’exemple, ci-dessous débute par Un exemple::
. Si une espace est mis avant les :: ils n’apparaissent pas.
Un exemple:
Espaces, retour-chariot, toute sorte de balisage (comme *celui-ci* ou \celui-ci) sont préservés dans de tels blocs.
Voyez comme j'ai changé de niveau d'indentation
(mais pas suffisamment pour sortir du bloc)
Là, j’en suis sorti !
Noter que si un paragraphe consiste seulement en ”::”, il sera supprimé de l’output (donc pas rendu):
Voici du texte préformaté, mais le premier "::" paragraphe est supprimé
Sections¶
Plus d’informations ici
Pour organiser du texte long en sections, vous pouvez utiliser des titres de section. Ce sont de simples lignes de texte (un ou plusieurs mots) avec une décoration spécifique : avant ou après le titre, avec des tirets, des signes égal, des tildes, ou tout caractère non-alphanumérique : = - `‘ ” _ + # < > qui plaît. Une décoration seulement sous le titre est distincte de la même décoration utilisée sur et sous le titre. La décoration doit avoir la même longueur que le texte. Utiliser les décorations de manière cohérente, car tous les titres de sections avec la même décoration sont censés être au même niveau de titre.
Titre Chapitre 2¶
Il faut noter que chaque titre peut aussi être utilisé comme cible d’un lien interne au document, en utilisant simplement son nom. Pour créer un lien hypertexte avec un titre du document, écrire simplement `Titre Chapitre 2`_ pour avoir le lien Titre Chapitre 2.
Titre du document/sous-titre¶
Le titre du document entier est distinct des titres des sections et doit être formaté d’une manière différente. Utiliser une décoration unique au début du document pour son titre. Utiliser une autre décoration unique immédiatement après le titre du document. Par exemple :
Section 1¶
Noter que les titres du document et de section utilisent tous deux des signes “=” mais ce sont des styles non reliés. Le texte des titres décoré au-dessus et au-dessous peuvent être indentés par souci d’esthétique.
Séparation¶
Une séparation (rendue en HTML avec la balise <hr>) se crée avec la répétition d’au moins 4 caractères de ponctuation, séparée de lignes vides
paragraphe
----
paragraphe
se rend ainsi :
paragraphe
paragraphe
Commentaires¶
Pour insérer un commentaire qui ne sera pas traité par reST ou Sphinx, faire débuter le paragraphe par ”..”.
Tableaux¶
Plus d’informations ici
Il y a plusieurs manières de construire des tableaux avec reST et aucune n’est aisée, notamment lorsque les tableaux sont complexes.
Tableaux simples¶
Commencent et finissent par une simple ligne de signe “=”. Le signe “-” est utilisé optionnellement pour signaler une fusion de deux colonnes contiguës. Un ou plusieurs espaces signalent les limites de colonnes:
==== ==== ========
A B A et B
---------- --------
\ a et b
==== ==== ========
Faux Faux Faux
Vrai Faux Faux
==== ==== ========
sera rendu ainsi :
A B | A et B | |
---|---|---|
a et b | ||
Faux | Faux | Faux |
Vrai | Faux | Faux |
Note : Débuter une ligne par un espace vide rend la ligne entière vide. Il convient donc de signaler par un antislash (voir tableau) la première case vide, si elle l’est.
Tableaux CSV¶
Une autre possibilité est de composer un tableau en spécifiant son format et son contenu ligne à ligne:
.. csv-table:: Délices glacés!
:header: "Produit", "Quantité", "Description"
:widths: 15, 10, 30
"Albatross", 2.99, "On a stick!"
"Crunchy Frog", 1.49, "If we took the bones out, it wouldn't be
crunchy, now would it?"
"Gannet Ripple", 1.99, "On a stick!"
sera rendu ainsi :
Produit | Quantité | Description |
---|---|---|
Albatross | 2.99 | On a stick! |
Crunchy Frog | 1.49 | If we took the bones out, it wouldn’t be crunchy, now would it? |
Gannet Ripple | 1.99 | On a stick! |
Tableaux en liste¶
Il est aussi possible de générer un tableau à partir de la directive list-table, de manière plutôt aisée:
.. list-table:: Délices glacés!
:widths: 15 10 30
:header-rows: 1
* - Produit
- Quantité
- Description
* - Albatross
- 2.99
- On a stick!
* - Crunchy Frog
- 1.49
- If we took the bones out, it wouldn't be
crunchy, now would it?
* - Gannet Ripple
- 1.99
- On a stick!
qui sera rendu ainsi :
Tableaux en grille¶
Une manière plus complexe de réaliser tous types de tableaux est de considérer que :
- un signe “-” délimite l’extérieur du tableau et les lignes horizontales du tableau ;
- un signe “=” déilite le bas de l’en-tête du tableau ;
- un signe “+” signale les intersections entre lignes verticales et horizontales du tableau ;
- un signe “|” signale les lignes verticales.
Ainsi, le tableau ci-dessous
+------------------------+------------+----------+
| Header row, column 1 | Header 2 | Header 3 |
+========================+============+==========+
| body row 1, column 1 | column 2 | column 3 |
+------------------------+------------+----------+
| body row 2 | Cells may span |
+------------------------+-----------------------+
Sera rendu ainsi :
Header row, column 1 | Header 2 | Header 3 |
---|---|---|
body row 1, column 1 | column 2 | column 3 |
body row 2 | Cells may span |
Comme cela est assez difficile à réaliser sans erreurs, nous conseillons l’utilisation de l’éditeur SublimeText avec l’extension rst-completion, qui permet quasi-automatiquement de réaliser des tableaux complexes.
Notes de bas de page¶
L’appel d’une note de bas de page peut être :
- un nombre d’un ou plusieurs chiffres ;
- un “#” pour des notes numérotées automatiquement ;
L’appel est inséré ainsi dans le texte [1]_
, rendu par un lien hypertexte cliquable : [1]. Chaque corps de note démarre par un double point ”..”, une espace l’un des appels ci-dessus entre crochets, une espace, suivi par le corps de la note. Ce dernier est indenté d’au moins 3 espaces et aligné à gauche. Le corps peut être placé n’importe où dans le document (pas seulement à sa fin):
.. [1] Je suis un corps de note de bas de page.
est rendu ainsi :
[1] | Je suis un corps de note de bas de page. |
Liens hypertextes¶
Nous avons déjà vu plus haut (Titre Chapitre 2) le moyen d’insérer des liens hypertextes référant à des sections du même document (ancres).
Liens externes¶
Référer à un lien hypertexte externe peut se faire, soit ainsi:
`A ReStructuredText Primer <http://docutils.sourceforge.net/docs/user/rst/quickstart.html>`_
qui sera rendu ainsi : A ReStructuredText Primer
Soit ainsi:
`A ReStructuredText Primer`_ (hyperlien)
.. _ReStructuredText Primer: http://docutils.sourceforge.net/docs/user/rst/quickstart.html (cible, indiquée plus loin dans le document, ou à sa toute fin)
Ce qui sera rendu ainsi (noter, en visualisant le code source de la page, la spécification de la cible à la toute fin du document). Cela peut d’ailleurs être pratique d’avoir ainsi un certain nombre de liens qui reviennent souvent dans une série de documents (adresses, etc.) : A ReStructuredText Primer. D’autres moyens de réaliser des liens entre documents Sphinx sont décrits ici Les bases de la syntaxe de Sphinx.
Substitutions¶
Il est possible de spécifier un ou plusieurs mots (bloc), censés revenir souvent dans un document, qui remplaceront à la compilation le terme qui les représente. Cela est utile pour représenter des mots, une image (mais pas des liens hypertextes). Voici comment représenter le bloc et le mot qui les représente:
Voici un |mot| à remplacer.
et comment on indique le bloc qui va remplacer le mot (à placer n’importe où dans le doc, p. ex. en toute fin):
.. |mot| `mot qui va remplacer celui`
Cela sera rendu ainsi :
Voici un mot qui va remplacer celui à remplacer.
Il existe également les termes réservés suivants : |today|
, qui insère la date courante ; ``
1.0 et |release] qui indiquent resp. les numéros de la version et de la sous-version du projet.
Directives¶
Passons maintenant à la description de directives, qui étendent les capacités de reST. Il est à noter qu’on ne peut utiliser de directives avec du texte mis en forme (gras, italiques).
Insertion de HTML¶
La directive :raw:
permet d’insérer du code HTML (ou LaTeX) dans un document reST:
.. raw:: html
<hr width=50 size=10>
sera rendu ainsi
Cela peut être très utile, notamment pour insérer des vidéos, du QCM, ou autres éléments HTML.
Table des matières¶
Plus d’informations ici
On peut afficher la table des matières d’un document, p. ex à son début. La directive est .. contents::
. Les options sont les suivantes. “depth” indique la profondeur des sections listées dans la table, “local” commande la production d’une table correspondant à la section dans laquelle la directive est située ; “backlinks” produit les liens “en retour” de chaque (sous-titre) jusqu’à la table:
.. contents:: Table des matières
:depth: 2
:local:
:backlinks: top
est rendu ainsi:
Table des matières
- Les bases de reStructuredText
- Introduction
- Styles de texte
- Astuce
- Listes
- Préformatage (code informatique)
- Sections
- Titre chapitre 1
- Titre Chapitre 2
- Titre du document/sous-titre
- Section 1
- Séparation
- Commentaires
- Tableaux
- Notes de bas de page
- Liens hypertextes
- Substitutions
- Directives
- Formules mathématiques
- Directives HTML
- Et après ?
Images¶
Pour inclure une image dans votre document, utiliser la directive image
. Par exemple :: .. image:: images/computer.png
sera rendu ainsi :

Il est possible d’ajouter des informations de taille, d’échelle, d’alignement et de texte alternatif
.. image:: images/computer.png
:height: 100
:width: 200
:scale: 50
:align: center
:alt: ordinateur
Sera rendu ainsi :

Figures¶
XXX
Encadré flottant¶
Il est possible d’insérer un encadré flottant (p. ex., pour réaliser des encadrés indépendants du texte, un résumé, etc.), flottant à droite du texte courant, avec la syntaxe suivante:
.. sidebar:: Titre du texte flottant
:subtitle: Texte optionnel
Le texte flottant est ici.
Qui sera rendu comme le texte à droite.
Paragraphes spécifiques (admonitions)¶
Se référer à Admonitions pour les admonitions ajoutées par Sphinx.
Il existe de nombreux moyens de mettre en valeur un paragraphe. Les voici, appliquées au même paragraphe, respectivement .. admonition::
, .. note::
, .. attention::
, .. caution::
, .. danger::
, .. error::
, .. hint::``
.., .. important::
, .. tip
, .. warning::
. Il faut aussi noter que le rendu de chaque admonition peut varier selon le thème choisi, et qu’il convient de les utiliser de manière cohérente et mesurée tout au long des documents. L’admonition varie en fonction de la langue définie dans le fichier conf.py :
admonition générique
Un texte d’admonition, avec l’intitulé que l’on veut.
Note
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Prudence
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Danger
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Erreur
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Indice
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Important
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Astuce
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Avertissement
Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence. Voici un paragraphe que je veux mettre en évidence.
Formules mathématiques¶
Il est possible d’insérer, dans le texte ou en tant que bloc spécifique, des formules mathématiques (utiliser la syntaxe LaTeX). Voici le bloc:
.. math::
α_t(i) = P(O_1, O_2, … O_t, q_t = S_i λ)
qui sera rendu :
et les formules dans le texte : :math:`A_\text{c} = (\pi/4) d^2
, sera rendu ainsi : \(A_\text{c} = (\pi/4) d^2\).
Directives HTML¶
Il existe une série de directives spécifiques HTML permettant d’ajouter des méta-données ou des balises HTML dans un document reST. La directive .. meta::
permet d’ajouter des méta-données dans le document (balise meta).
Et après ?¶
Ce document est une simple introduction à reST. Plus d’informations ici :