Aller au contenu

Markdown⚓︎

Auteur : Franck CHAMBON

Vocabulaire et objectifs⚓︎

Markdown

Markdown est un langage de balisage léger qui est traduit en HTML, langage que le navigateur est capable de lire pour produire une page web.

On peut aussi, à partir d'un fichier Markdown .md, produire un fichier .pdf, ou .odt, ou .docx en utilisant l'utilitaire Pandoc. Nous ne nous en servirons pas ici.

Il ne faut que 5 minutes pour avoir les bases suffisantes.

Utilisation répandue

On peut utiliser la syntaxe Markdown dans de nombreuses situations de travail collaboratif.

  • Dans des forums, comme Discourse, GitLab, Reddit, Qt, Stack Overflow et Stack Exchange parmi d'autres.
  • Dans des logiciels, comme CodiMD, Jupyter, ou MkDocs parmi d'autres.

Défaut

Soyons honnêtes, il y a un défaut, Markdown n'est pas unifié.

  • Il existe plusieurs variantes légèrement différentes de Markdown.
  • Pour chaque variante, il peut exister des moteurs de rendus légèrement différents.

Nous utiliserons ici la partie commune à toutes les versions, avec le style le plus commun possible, ce sera en particulier utile pour travailler avec Jupyter.

Dans la partie suivante nous travaillerons avec certaines facilités offertes par MkDocs.

D'autres tutoriels

Les bases de Markdown⚓︎

Quelques exemples

Objectif Markdown Rendu
Créer un lien [texte cliquable](https://mon_lien.fr) texte cliquable
Emphase faible Un _mot_ discret Un mot discret
Emphase forte Un **mot** visible Un mot visible
Du code en ligne Une boucle `for` Une boucle for

Architecture⚓︎

La première étape

Un document doit être structuré en parties et sous parties.

Le titre d'une partie (ou en-têtes) est précédé d'un ou plusieurs croisillons : #

Sur un clavier azerty, Le croisillon s'obtient avec AltGr3.

On ajoute une espace après le dernier croisillon.

On saute une ligne avant et après l'en-tête.

Entrée

# Mon super titre

Mon premier paragraphe.

Rendu

Mon super titre

Mon premier paragraphe.

Entrée

#Mon super titre
Mon premier paragraphe.

Rendu

#Mon super titre Mon premier paragraphe.

⚠ Ce rendu dépend du moteur...

Example concret

Pour cette page, le brouillon de structure a commencé ainsi

# Les bases du Markdown

## Vocabulaire et objectifs

## Construire une note

### Architecture

Avec croisillons.

### Paragraphes

Avec saut de ligne.

### Listes

Avec `-`, ou `1.`

Imbriquées...

### Liens

url et image

### Emphase

`_` et `*`

### Citations

`>`

### Bloc de code

Par décalage.

### Code en ligne

Avec `` ` ``

### Ligne horizontale

Avec `---`

Paragraphes⚓︎

Le saut de ligne

Pour séparer les paragraphes, il suffit de sauter une ligne.

Il ne faut pas indenter son paragraphe dans le fichier source.

Entrée

Lorem ipsum dolor sit amet, consectetur
 adipiscing elit. Proin at cursus nibh,
 et lobortis mauris. Sed tempus turpis
 quis turpis pulvinar, ac vehicula dui
 convallis. Phasellus tempus massa quam,
 ac mollis libero cursus eget.
Donec convallis a nisl vitae scelerisque.
Ut vel nisl id augue ullamcorper lobortis
 at id dolor.

Rendu

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at cursus nibh, et lobortis mauris. Sed tempus turpis quis turpis pulvinar, ac vehicula dui convallis. Phasellus tempus massa quam, ac mollis libero cursus eget. Donec convallis a nisl vitae scelerisque. Ut vel nisl id augue ullamcorper lobortis at id dolor.

Entrée

    Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Proin at cursus nibh,
et lobortis mauris. Sed tempus turpis
quis turpis pulvinar, ac vehicula dui
convallis. Phasellus tempus massa quam,
ac mollis libero cursus eget.
    Donec convallis a nisl vitae scelerisque.
    Ut vel nisl id augue ullamcorper lobortis
at id dolor.

Rendu

Lorem ipsum dolor sit amet, consectetur

adipiscing elit. Proin at cursus nibh, et lobortis mauris. Sed tempus turpis quis turpis pulvinar, ac vehicula dui convallis. Phasellus tempus massa quam, ac mollis libero cursus eget. Donec convallis a nisl vitae scelerisque. Ut vel nisl id augue ullamcorper lobortis at id dolor.

⚠ Une partie du texte devient du code en bloc, avec une police à chasse fixe.

Aller à la ligne⚓︎

Sans changer de paragraphe

Dans de rares cas, si on souhaite sauter de ligne, sans changer de paragraphe, on ajoute deux espaces à la fin d'une ligne.

Entrée

ligne1␣␣  
ligne2

Rendu

ligne1
ligne2

🤞 : On a symbolisé les deux espaces avec ␣␣, mais il faut utiliser l'espace classique.

Ici, ␣␣ ne sert que d'illustration.

Entrée

ligne1
ligne2

Rendu

ligne1 ligne2

⚠ Échec uniquement si on voulait forcer un saut de ligne.

Deux espaces ou plus

En sélectionnant le texte, vous verrez deux véritables espaces à la fin de ligne 1 dans l'entrée correcte.

Sans les deux espaces, le saut de ligne est considéré comme une unique espace entre les deux lignes, donc une seule ligne pour le navigateur.

On peut mettre plus de deux espaces.

Bonne pratique

Il est pratique d'avoir son code sans longue ligne, on peut donc les couper dans le source où on veut. Elles sont donc recollées ensuite, dans un seul paragraphe. Ce paragraphe sera adapté à chaque écran, c'est au navigateur de choisir les sauts de ligne. C'est une bonne pratique.

On n'utilise que rarement des sauts de ligne forcés (avec les deux espaces en fin de ligne), sans changer de paragraphes, vous ne devriez pas en faire, sauf raison motivée. On laisse au navigateur le soin de couper les lignes en fonction de l'affichage disponible : écran large, moyen ou restreint sur téléphone.

Éditeur

  • Certains éditeurs de texte suppriment les espaces de fin de ligne ; votre document serait modifié !
  • Conseil : il est possible, avec son éditeur, d'afficher discrètement les espaces ; c'est une bonne pratique.

Ligne horizontale⚓︎

Séparer deux paragraphes

Si on souhaite une ligne horizontale, on utilise --- entre les deux paragraphes, avec des lignes vides de part et d'autre.

Entrée

Paragraphe 1...

---

Paragraphe 2...

Rendu

Paragraphe 1...


Paragraphe 2...

Entrée

Paragraphe 1...
---
Paragraphe 2...

Rendu

Paragraphe 1...

Paragraphe 2...

⚠ Il s'agit en fait d'une méthode non recommandée pour créer des en-têtes !

Listes⚓︎

Une ligne vide puis...

Une liste, comme un nouveau paragraphe, doit être précédée d'une ligne vide. Certains moteurs Markdown acceptent qu'il n'y ait pas de saut de ligne, comme avec Jupyter, mais pas tous.

Les règles

  • Sauter une ligne avant la première puce.
  • Ensuite, on place chaque item sur une ligne en commençant par -
  • On peut faire des listes numérotées en commençant par 1.
  • On place aussi une espace juste avant son item.

Liste à puce

Entrée

Markdown est **très** utilisé dans de _nombreuses_ situations

- Jupyter
- MkDocs
- Discourse
- GitLab
- Reddit
- Qt
- Stack Overflow
- Stack Exchange
- ...

Rendu

Markdown est très utilisé dans de nombreuses situations

  • Jupyter
  • MkDocs
  • Reddit
  • Qt
  • Stack Overflow
  • Stack Exchange
  • ...

Pour information, la traduction pour le navigateur.

Code HTML
<p>Markdown est <strong>très</strong> utilisé dans de <em>nombreuses</em> situations</p>
<ul>
<li>Jupyter</li>
<li>MkDocs</li>
<li>Discourse</li>
<li>GitLab</li>
<li>Reddit</li>
<li>Qt</li>
<li>Stack Overflow</li>
<li>Stack Exchange</li>
<li>...</li>
</ul>

On remarquera un peu de mise de style (l'emphase) ; nous y reviendrons.

On remarque aussi une meilleure lisibilité du Markdown sur le HTML.

Liste numérotée

Entrée

Pour une liste numérotée, la numérotation est automatique !

1. Mon premier exemple
3. Le troisième, mais le deuxième a été effacé
3. Un oubli entre le troisième et quatrième
3. Encore un oubli...
4. C'était le quatrième au départ.
1. Juste un de plus qui sera numéroté correctement.

Rendu

Pour une liste numérotée, la numérotation est automatique !

  1. Mon premier exemple
  2. Le troisième, mais le deuxième a été effacé
  3. Un oubli entre le troisième et quatrième
  4. Encore un oubli...
  5. C'était le quatrième au départ.
  6. Juste un de plus qui sera numéroté correctement.

Pour information, la traduction pour le navigateur.

Code HTML
<p>Pour une liste numérotée, la numérotation est automatique !</p>
<ol>
<li>Mon premier exemple</li>
<li>Le troisième, mais le deuxième a été effacé</li>
<li>Un oubli entre le troisième et quatrième</li>
<li>Encore un oubli...</li>
<li>C&#39;était le quatrième au départ.</li>
<li>Juste un de plus qui sera numéroté correctement.</li>
</ol>

On remarque que l'on n'a pas à se soucier de la cohérence de la numérotation dans le source, on peut donc ajouter, ou enlever des items sans revoir la numérotation.

Technique avancée

On peut imbriquer les listes numérotées ou non.

On indente la liste imbriquée qu'il est inutile de séparer avec des lignes vides. Contrairement à la première liste.

Entrée

On va faire une liste

1. un
1. deux
    - machin
    - chose
        31. Pour commencer à 31
        1984. Ce ne sera pas 1984 !
1. trois

Rendu

On va faire une liste

  1. un
  2. deux
    • machin
    • chose
      1. Pour commencer à 31
      2. Ce ne sera pas 1984 !
  3. trois

⚠ Le rendu de la numérotation des listes imbriquées dépend du moteur. Ne pas lui faire confiance.

De même, on peut imbriquer des paragraphes, des blocs de code, en les indentant en plus également de la même manière.

Autres puces, indentation

Avec certains moteurs Markdown, il est possible d'utiliser les puces *, -, +.

Nous ne recommandons d'utiliser que les puces -.

Pour les listes imbriquées, nous recommandons une indentation de 4 espaces.

Liens⚓︎

Créer un lien avec une URL

Une URL permet d'identifier une ressource et le protocole associé.

La syntaxe est [<objet>](<url>)

  • <objet> pourra être du texte ou une image, ou autre.
  • <url> pourra être une adresse web, ou mail, ou autre protocole.
  • Une adresse web peut pointer vers un document HTML, une image, un son...

Entrée

Voici [un lien](https://startpage.com/) vers un moteur de recherche.

Rendu

Voici un lien vers un moteur de recherche.

Entrée

Pour [écrire](mailto:john.doe@mail.com) à quelqu'un.

Rendu

Pour écrire à quelqu'un.

Entrée

Pour [contacter rapidement](tel:+33 1 234 567 890) ce numéro.

Rendu

Pour contacter rapidement ce numéro.

Le lien ne fonctionnera que si la page est lue avec un navigateur qui a accès au protocole. Concrètement, sur un smartphone !

Technique avancée

On peut ajouter une info bulle au lien.

La syntaxe est [<objet>](<url> "<message>")

Entrée

Un autre moteur de recherche est [DuckDuckGo](https://duckduckgo.com/ "Votre confidentialité, simplifiée").

Rendu

Un autre moteur de recherche est DuckDuckGo.

Technique simplifiée

Si on souhaite simplement activer l'url, sans changer le nom, ni mettre d'info-bulle.

La syntaxe est < url >

Le protocole est automatiquement déduit.

Entrée

- Mon site web <https://mon_joli_site.fr>
- Mon mail <prénom.nom@chez.moi>

Rendu

Emphase⚓︎

Pas trop gras svp !

Commençons par indiquer que certains documents abusent des effets de style et la lisibilité en est réduite.

L'emphase sert à faire ressortir une partie plus importante que le reste. Ce ne peut être qu'une petite partie.

Définitions

  • L'emphase faible sert à faire ressortir discrètement du texte. Elle est souvent en italique, mais on peut changer cela dans une feuille de style en cascade (CSS).
  • De même, l'emphase forte est souvent en gras, mais on pourrait décider dans la feuille CSS de modifier ce style en couleur rouge et souligné en noir. Et puis changer un autre jour ; l'ensemble du document soumis à la feuille CSS est modifié.
Balises HTML
  • <em> pour l'emphase faible
  • <strong> pour l'emphase forte
  • il en existe d'autres.
  • En Markdown, on peut aussi inclure quelques balises HTML au milieu du Markdown. Ce sera dans la partie avancée... Dans un premier temps, on recommande de ne pas en inclure.

Astérisque et tiret-bas

Le tiret-bas est recommandé.

Entrée

Du _texte en italique_ entouré de la balise tiret bas *ou* une étoile.

Rendu

Du texte en italique entouré de la balise tiret bas ou une étoile.

HTML
<p>Du <em>texte en italique</em> entouré de la balise tiret bas <em>ou</em> une étoile.</p>

L'astérisque est recommandé.

Entrée

Du **texte en gras** entouré de la balise double étoile, __ou__ double tiret bas.

Rendu

Du texte en gras entouré de la balise double étoile, ou double tiret bas.

HTML
<p>Du <strong>texte en gras</strong> entouré de la balise double étoile, <strong>ou</strong> double tiret bas.</p>

Entrée

**_Un_** exemple _avec_ tous *les* cas *__possibles__*, **fort1** ou __fort2__.

Rendu

Un exemple avec tous les cas possibles, fort1 ou fort2.

HTML
<p><strong><em>Un</em></strong> exemple <em>avec</em> tous <em>les</em> cas <em><strong>possibles</strong></em>, <strong>fort1</strong> ou <strong>fort2</strong>.</p>

Recommandation

Entrée

- Pour l'emphase faible, _un_ tiret-bas.
- Pour l'emphase forte, **deux** astérisques.

Rendu

  • Pour l'emphase faible, un tiret-bas.
  • Pour l'emphase forte, deux astérisques.

Citations⚓︎

Avec un chevron

Suivant l'ancien modèle sur les mails en mode texte, quand on répond à un message, le texte est décalé et chaque ligne est précédée d'un chevron >.

Entrée

> **Cookie** :
>
> - Anciennement petit gâteau sucré, qu'on acceptait avec plaisir.
> - Aujourd'hui : petit fichier informatique drôlement salé, qu'il faut refuser avec véhémence.

De Luc Fayard, _Dictionnaire impertinent des branchés_

Rendu

Cookie :

  • Anciennement petit gâteau sucré, qu'on acceptait avec plaisir.
  • Aujourd'hui : petit fichier informatique drôlement salé, qu'il faut refuser avec véhémence.

De Luc Fayard, Dictionnaire impertinent des branchés

Voici un example de mail qu'on peut recevoir, témoin d'un échange. Quand un mail est long, on peut avoir envie de répondre dans la partie associée et non tout d'un bloc au départ.

L'un dit « Salut ; À+», l'autre dit « Bonjour ; Merci ».

Entrée

Salut, c'est bon pour dimanche, pour le reste je réponds dans le corps du mail.
À+
> Bonjour,  
> un long blabla...  
> avec une question pour dimanche.  
> Et une autre question_1.  

Réponse à question_1.  

> Sinon blabla, et question_2.  

Réponse à question_2.  

> > Salut,  
> > Tu fais quoi dimanche ?  
> > À+  

> Alors, je pense que...  
> Merci et bonne journée  

Rendu

Salut, c'est bon pour dimanche, pour le reste je réponds dans le corps du mail. À+

Bonjour,
un long blabla...
avec une question pour dimanche.
Et une autre question_1.

Réponse à question_1.

Sinon blabla, et question_2.

Réponse à question_2.

Salut,
Tu fais quoi dimanche ?
À+

Alors, je pense que...
Merci et bonne journée

Code en bloc⚓︎

En indentant le bloc, 4 espaces

La méthode simple pour qu'un extrait ne soit pas formaté est de décaler le bloc de 4 espaces ou plus. On saute également une ligne avant et après, comme pour un paragraphe.

Entrée

Voici un code Python

    n = 47**2 + 31**2

Rendu

Voici un code Python

n = 47**2 + 31**2

Entrée

Voici un code Python

n = 47**2 + 31**2

Rendu

Voici un code Python

n = 472 + 312

⚠ Ici le moteur a interprété une partie avec de l'emphase forte.

Et la coloration syntaxique ?

Nous verrons cela dans une partie de Markdown avancé.

Code en ligne⚓︎

Avec l'accent grave

Avec un clavier azerty, AltGr7 donne l'accent grave `

On utilise la syntaxe : Du texte avec un `identifiant` de code.

Entrée

La définition de la fonction `premier` commence avec le mot clé `def`

Elle prend en paramètre un entier `n`

Elle renvoie un booléen avec le mot clé `return`

Rendu

La définition de la fonction premier commence avec le mot clé def

Elle prend en paramètre un entier n

Elle renvoie un booléen avec le mot clé return

Entrée

La définition de la fonction _premier_ commence avec le mot clé **def**

Elle prend en paramètre un entier _n_

Elle renvoie un booléen avec le mot clé **return**

Rendu

La définition de la fonction premier commence avec le mot clé def

Elle prend en paramètre un entier n

Elle renvoie un booléen avec le mot clé return

⚠ Les effets de texte ne servent pas à désigner des bouts de code.

Entrée

La définition de la fonction `#!py3 premier` commence avec le mot clé `#!py3 def`

Elle prend en paramètre un entier `#!py3 n`

Elle renvoie un booléen avec le mot clé `#!py3 return`

Rendu

La définition de la fonction premier commence avec le mot clé def

Elle prend en paramètre un entier n

Elle renvoie un booléen avec le mot clé return

Ceci n'est possible qu'avec MkDocs, et des extensions, on peut donc avoir la coloration syntaxique en ligne avec des langages variés. Nous y reviendrons plus tard.

Technique avancée

Si on souhaite écrire du code en ligne qui contient des `, il suffit d'encadrer le morceau avec plus de ` qu'il n'y en a consécutivement dans le morceau.

Entrée

Afficher **du code** avec accent grave : `` un entier `n` ``

Rendu

Afficher du code avec accent grave : un entier `n`

Entrée

Afficher **du code** avec accent grave : `un entier `n``

Rendu

Afficher du code avec accent grave : un entiern``

⚠ Comment savoir où est la fin et le début ?

Entrée

- Afficher 1`` ` `` : `` ` ``
- Afficher  2`` ` `` : ``` `` ```
- Afficher le code précédent : ```` - Afficher  2`` ` `` : ``` `` ``` ````

Rendu

  • Afficher 1` : `
  • Afficher 2` : ``
  • Afficher le code précédent : - Afficher 2`` ` `` : ``` `` ```

Images⚓︎

Un lien précédé de !

La syntaxe est avec ou sans l'info-bulle

  • ![<texte alternatif>](<url> "<info-bulle>")
  • ![<texte alternatif>](<url>)

Entrée

Le logo du langage Markdown

![M, flèche vers le bas](https://fr.wikipedia.org/wiki/Markdown#/media/Fichier:Markdown-mark.svg "sur Wikipédia")

Rendu

Le logo du langage Markdown

M, flèche vers le bas

Texte alternatif

Une bonne pratique est de renseigner un texte alternatif, il est utilisé par les robots.

  • Certains robots lisent à voix haute le contenu pour des humains, les images sont remplacées par le texte alternatif lu. Utile pour les mal-voyants.
  • Certains robots font de l'indexation de site, un bon texte alternatif aide au référencement.
  • Si la cible n'est plus disponible, cela arrive, le texte alternatif remplace l'image.

absolu ou relatif

Il faut faire attention à bien écrire son url.

  • Si c'est en local, vérifier le chemin d'accès.
  • Si c'est sur le web, bien préfixer avec le protocole http

Tableaux⚓︎

Avec le tube

Le caractère | (barre verticale ou tube) s'obtient avec AltGr6.

On construit un tableau suivant le modèle suivant.

Entrée

| Objectif | Markdown | Rendu |
|---------|-------------|---|
| Créer un lien    | `[texte cliquable](https://mon_lien.fr)` | [texte cliquable](https://mon_lien.fr) |
| Emphase faible   | `Un _mot_ discret`    | Un _mot_ discret   |
| Emphase forte    | `Un **mot** visible`  | Un **mot** visible |
| Du code en ligne | ``Une boucle `for` `` | Une boucle `for`   |

Rendu

Objectif Markdown Rendu
Créer un lien [texte cliquable](https://mon_lien.fr) texte cliquable
Emphase faible Un _mot_ discret Un mot discret
Emphase forte Un **mot** visible Un mot visible
Du code en ligne Une boucle `for` Une boucle for
HTML

Un code équivalent est bien plus délicat à écrire à la main, à lire et à maintenir...

<table>
<thead>
<tr>
<th>Objectif</th>
<th>Markdown</th>
<th>Rendu</th>
</tr>
</thead>
<tbody>
<tr>
<td>Créer un lien</td>
<td><code>[texte cliquable](https://mon_lien.fr)</code></td>
<td><a href="https://mon_lien.fr">texte cliquable</a></td>
</tr>
<tr>
<td>Emphase faible</td>
<td><code>Un _mot_ discret</code></td>
<td>Un <em>mot</em> discret</td>
</tr>
<tr>
<td>Emphase forte</td>
<td><code>Un **mot** visible</code></td>
<td>Un <strong>mot</strong> visible</td>
</tr>
<tr>
<td>Du code en ligne</td>
<td><code>Une boucle `for` </code></td>
<td>Une boucle <code>for</code></td>
</tr>
</tbody>
</table>

Quelques informations

  • Il n'est pas nécessaire que les tubes soient bien alignés.
  • On peut inclure du Markdown dans les cellules.
  • La seconde ligne propose des options pour chaque colonne.
    • |:---| pour un alignement de la colonne à gauche
    • |---:| pour un alignement de la colonne à droite
    • |:--:| pour une colonne centrée

Exercices simples⚓︎

Facile 1⚓︎

...

Autre⚓︎

...

(NSI) Tableau donné par Python⚓︎

Liste Python vers Markdown

Donner une fonction Python qui renvoie un texte en Markdown : le tableau de valeur pour une suite donnée en paramètre avec une liste.

def tableau_markdown(liste: list) -> str:
    lignes = []
    ajout = lignes.append
    # ... à compléter
    return "\n".join(lignes)

Exemple

Pour la liste \([0, 1, 1, 2, 3, 5, 8, 13]\), on souhaite un premier rendu

n 0 1 2 3 4 5 6 7
u_n 0 1 1 2 3 5 8 13

Un code Markdown valable est

|n|0|1|2|3|4|5|6|7|
|-|-|-|-|-|-|-|-|-|
|u_n|0|1|1|2|3|5|8|13|

Ainsi on aimerait avoir

>>> tableau_markdown([0, 1, 1, 2, 3, 5, 8, 13])
'|n|0|1|2|3|4|5|6|7|\n|-|-|-|-|-|-|-|-|-|\n|u_n|0|1|1|2|3|5|8|13|\n'

Résoudre en ligne Conseil : Ouvrir un nouvel onglet.

Indice 1

Pour construire la ligne 2, on pourrait faire

q = len(liste)
ligne_2 = '|-'*(q+1) + '|'
ajout(ligne_2)
Indice 2

Pour construire la ligne 1, on pourrait faire

q = len(liste)
ligne_1 = ['|n|'] # le début de la ligne 1
for i in range(q):
    ligne_1.append(f'{i}|') # chaque morceau
ajout("".join(ligne_1))
Indice 3

La ligne 3 est très proche de la ligne 1.

Indice 4

Vide.

Solution
def tableau_markdown(liste: list) -> str:
    lignes = []
    ajout = lignes.append

    # ligne 1
    q = len(liste)
    ligne_1 = ['|n|'] # le début de la ligne 1
    for i in range(q):
        ligne_1.append(f'{i}|') # chaque morceau
    ajout("".join(ligne_1))

    # ligne 2
    ligne_2 = '|-'*(q+1) + '|'
    ajout(ligne_2)

    # ligne 3
    ligne_3 = ['|u_n|'] # le début de la ligne 3
    for i in range(q):
        ligne_3.append(f'{liste[i]}|') # chaque morceau
    ajout("".join(ligne_3))

    # ligne 4 vide !
    ajout('')

    return "\n".join(lignes)

Markdown avancé⚓︎

Coloration syntaxique du code⚓︎

Quelques exemples de programmes

Entrée

```python
for i in range(10):
    print("Salut à tous !")
```

```c
#include<stdio.h>
int main(){
    int i;
    for(i = 0; i < 10; i++){
        printf("Salut à tous !\n");
    }
    return 0;
}
```

Rendu

for i in range(10):
    print("Salut à tous !")
#include<stdio.h>
int main(){
    int i;
    for(i = 0; i < 10; i++){
        printf("Salut à tous !\n");
    }
    return 0;
}

Entrée

for i in range(10):
    print("Salut à tous !")

#include<stdio.h>
int main(){
    int i;
    for(i = 0; i < 10; i++){
        printf("Salut à tous !\n");
    }
    return 0;
}

Rendu

for i in range(10): print("Salut à tous !")

#include int main(){ int i; for(i = 0; i < 10; i++){ printf("Salut à tous !\n"); } return 0; }

⚠ On perd l'indentation et on peut avoir des effets non désirés !

Méthode

Il suffit d'écrire

  • avant le bloc ```<nom_du_langage>
  • après le bloc ```

La liste des langages supportés contient entre autres aussi :

  • bash, diff et console
  • markdown
  • latex, tex et asy
  • html et css
  • ocaml
  • sql
  • yaml
Utilisation avancée

Suivant le même principe que pour le code en ligne, pour donner une coloration syntaxique à un bloc qui contient lui-même un bloc, on peut utiliser un accent grave ` supplémentaire dans les délimiteurs. Exemple :

Entrée

````markdown
```python
print("Salut")
```

```c
puts("Salut");
```
````

Rendu

```python
print("Salut")
```

```c
puts("Salut");
```

Le code source de ce document comportait

`````markdown
...
`````

Ceci pour afficher l'entrée correcte, et deux blocs de 6 `, pour afficher cette remarque.

Entrée

```markdown
```python
print("Salut")
```

```c
puts("Salut");
```
```

Rendu

```python
print("Salut")

puts("Salut");
```

⚠ Rien ne peut être structuré...

Pour voir les options de numérotation et de marquage de lignes, avec MkDocs, on consultera cette section

Texte barré⚓︎

On encadre d'un double ~

Entrée

La Terre ~~est plate~~ bleue comme une orange.

Rendu

La Terre est plate bleue comme une orange.

Entrée

La Terre ~~ est plate~~ bleue comme une orange.

La Terre ~~est plate ~~ bleue comme une orange.

Rendu

La Terre ~~ est plate~~ bleue comme une orange.

La Terre ~~est plate ~~ bleue comme une orange.

⚠ Le double ~ doit être collé au morceau à barrer.

Pas valable avec tous les Markdown !

On en dispose avec CodiMD, Jupyter, mais aussi MkDocs avec l'extension tilde, et nous utiliserons.

Texte souligné⚓︎

On encadre d'un double ^

Entrée

La Terre bleue ^^comme^^ une orange.

Rendu

La Terre bleue comme une orange.

Entrée

La Terre est bleue ^^ comme^^ une orange.

La Terre est bleue ^^comme ^^ une orange.

Rendu

La Terre est bleue ^^ comme^^ une orange.

La Terre est bleue ^^comme ^^ une orange.

⚠ Le double ^ doit être collé au morceau à barrer.

Pas valable avec tous les Markdown !

On en dispose avec CodiMD, mais aussi MkDocs avec l'extension caret, et nous utiliserons.

Pour Jupyter, il faut utiliser la balise HTML <u>. ⚠ Cependant le contenu ne pourra pas contenir de balise Markdown.

Texte surligné⚓︎

On encadre d'un double =

Entrée

La Terre bleue comme ==une orange==.

Rendu

La Terre bleue comme une orange.

Entrée

La Terre est bleue comme == une orange==.

La Terre est bleue comme ==une orange ==.

Rendu

La Terre est bleue comme == une orange==.

La Terre est bleue comme ==une orange ==.

⚠ Le double = doit être collé au morceau à barrer.

Pas valable avec tous les Markdown !

On en dispose avec CodiMD, mais aussi MkDocs.

Pour Jupyter, il faut utiliser la balise HTML <mark>. ⚠ Cependant le contenu ne pourra pas contenir de balise Markdown.

Case à cocher⚓︎

On préfixe par - [ ] ou - [x]

Entrée

Une liste de tâches

- [ ] à faire
- [x] fini
- [ ] presque
- [x] fait depuis longtemps

Rendu

Une liste de tâches

  • à faire
  • fini
  • presque
  • fait depuis longtemps

Méthode

Comme pour une liste, mais on commence par

- [ ] pour une case non cochée,

- [x] pour une case cochée.

Cliquables ?

Avec certains logiciels, les cases à cocher sont cliquables, ce qui permet de modifier leur état.

  • ❌ Avec Jupyter, les cases à cocher ne sont pas cliquables.
  • ✅ Avec CodiMD, elles le sont, et le fichier source est modifié à la volée.
  • ❓ Avec MkDocs, on peut choisir globalement sa préférence, dans ce document, elles sont cliquables.

Émojis et Unicode⚓︎

🤪👩‍🎨🚦🚂⚔️

Il suffit de coller vos émojis préférés depuis un site.

De manière encore plus générale, il est possible d'insérer tout caractère Unicode dans le fichier source en Markdown.

Entrée

Le [copyleft](https://fr.wikipedia.org/wiki/Copyleft) (🄯), est l'autorisation donnée par l'auteur d'un travail soumis au droit d'auteur d'utiliser, d'étudier, de modifier et de diffuser son œuvre, dans la mesure où cette même autorisation reste préservée.

Le caractère copyleft (🄯) a été ajouté au standard Unicode le 5 juin 2018 au titre de la version 11.0. Il a pour code U+1F12F.

Rendu

Le copyleft (🄯), est l'autorisation donnée par l'auteur d'un travail soumis au droit d'auteur d'utiliser, d'étudier, de modifier et de diffuser son œuvre, dans la mesure où cette même autorisation reste préservée.

Le caractère copyleft (🄯) a été ajouté au standard Unicode le 5 juin 2018 au titre de la version 11.0. Il a pour code U+1F12F.

Remarque, c'est aussi valable en Python, avec par exemple, (merci @sebhoa)

JEU_52 = (
    '🂡🂢🂣🂤🂥🂦🂧🂨🂩🂪🂫🂭🂮',
    '🂱🂲🂳🂴🂵🂶🂷🂸🂹🂺🂻🂽🂾',
    '🃁🃂🃃🃄🃅🃆🃇🃈🃉🃊🃋🃍🃎',
    '🃑🃒🃓🃔🃕🃖🃗🃘🃙🃚🃛🃝🃞',
    '🂠🂬🂼🃌🃜🃏🃟'
    )

⚠ Le rendu sur certains systèmes d'exploitation peut être incorrect. If faudra attendre une mise à jour proposée.

Où trouver les caractères Unicode ?

  • On peut rechercher par catégorie sur Charbase
  • On peut aussi trouver de nombreux caractères sur CharacterCodes
  • On peut dessiner un caractère et voir s'il existe sur Shapecatcher

Exercices élaborés⚓︎

Exercice 1⚓︎

???

Exercice 2⚓︎

???