Markdown pour créer des pages et une table des matières?


359

J'ai commencé à utiliser le démarque pour prendre des notes.

J'utilise marqué pour voir mes notes de démarque et sa belle.

Mais comme mes notes s'allongent, j'ai du mal à trouver ce que je veux.

Je sais que le démarquage peut créer des tables, mais est-il capable de créer une table des matières, qui saute aux sections ou définit des sections de page dans le démarquage?

Sinon, existe-t-il des lecteurs / éditeurs de démarques qui pourraient faire de telles choses. La recherche serait également une bonne fonctionnalité.

En bref, je veux en faire mon formidable outil de prise de notes et ses fonctions un peu comme écrire un livre, etc.


2
si vous souhaitez utiliser un outil javascript / node.js, essayez marqué-toc
jonschlinkert

@jonschlinkert Vous devez soumettre cela comme réponse! Actuellement, les réponses suggèrent uniquement des outils qui ne sont pas gratuits ou en Python. Pas vraiment un grand choix.
Domi

8
Je devrais peut-être mentionner que dans LaTeX, cela est réalisé avec \tableofcontents. Si la roue va être réinventée, il serait préférable de copier les bonnes pièces.
Eero Aaltonen


De même, reStructuredText a une directive intégrée pour la table des matières qui, sous sa forme la plus simple, ressemble à juste .. contents::.
saaj

Réponses:


37

MultiMarkdown Composer semble générer une table des matières pour vous aider lors de l'édition.

Il peut également y avoir l'une ou l'autre bibliothèque, qui peut générer des tables des matières: voir Extension de table des matières Python Markdown .


17
MultiMarkdown Composer est uniquement MacOS
chmike

1
Lien vers la table des matières de
John

2
L'application n'est pas disponible au Royaume-Uni.
kenorb

L'extension TOC produit des tocs HTML, pas Markdown. Il est remarquable que ce soit difficile.
rjurney

396

Vous pouvez essayer.

# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
4. [Fourth Example](#fourth-examplehttpwwwfourthexamplecom)


## Example
## Example2
## Third Example
## [Fourth Example](http://www.fourthexample.com) 

10
Le 3ème exemple ci-dessus ne fonctionne pas. ## Example ## "Example2" ## Third Example<a name="third-example" /> est le seul moyen pour moi de l'avaler jusqu'à présent. La troisième balise serait sûrement interprétée comme - #Third- suivie d'un espace - puis du mot Exemple - dans votre extrait ci-dessus? Les tirets ne fonctionnent pas du tout. Merci
twobob

L'exemple est là pour servir d'exemple pour plus d'un mot. Tous les mots sont décomposés sans verrouillage des majuscules et sans espaces.
Rick

6
Fonctionne bien dans RStudio. Je veux juste ajouter que les trémas allemands, par exemple ü doivent être écrits sans tréma dans l'ancre, c'est1. [Einführung](#einfuhrung)
Steinbock

4
Les ancres ne sont pas automatiquement créées pour les en-têtes dans Bitbucket v4.5.2
Mike Rylander

1
Ce quatrième exemple est ce que je cherchais. Merci!
kenecaswell

221

Voici une méthode utile. Devrait produire des références cliquables dans n'importe quel éditeur MarkDown.

# Table of contents
1. [Introduction](#introduction)
2. [Some paragraph](#paragraph1)
    1. [Sub paragraph](#subparagraph1)
3. [Another paragraph](#paragraph2)

## This is the introduction <a name="introduction"></a>
Some introduction text, formatted in heading 2 style

## Some paragraph <a name="paragraph1"></a>
The first paragraph text

### Sub paragraph <a name="subparagraph1"></a>
This is a sub paragraph, formatted in heading 3 style

## Another paragraph <a name="paragraph2"></a>
The second paragraph text

Produit:

Table des matières

  1. introduction
  2. Un paragraphe
    1. Sous-paragraphe
  3. Un autre paragraphe

Ceci est l'introduction

Du texte d'introduction, formaté dans le style de la rubrique 2

Un paragraphe

Le texte du premier paragraphe

Sous-paragraphe

Ceci est un sous-paragraphe, formaté dans le style de titre 3

Un autre paragraphe

Le texte du deuxième paragraphe


23
J'aime mettre la balise d'ancrage sur la ligne au-dessus du titre, donc lorsque le lien est cliqué, le titre apparaît sur la page.
mgarey

4
Ce fut le seul utile pour moi. Avec des titres longs, il est impossible de le faire sans balises d'ancrage.
Matt Fletcher

C'est vraiment sympa. J'ai commencé à placer une table des matières dans tous mes cahiers Jupyter pour naviguer rapidement entre les sections.
jackdbd le

@mgarey Il suffit de mettre l'ancre en premier:## <a name="foo" /> Foo
tobias_k

40

Pour les utilisateurs de Visual Studio Code , une bonne idée est d'utiliser le plugin Markdown TOC .

Pour l'installer, lancez VS Code Quick Open ( Control/⌘+ P), collez la commande suivante et appuyez sur Entrée.

ext install markdown-toc

Et pour générer la table des matières, ouvrez la palette de commandes ( Control/⌘+ Shift+ P) et sélectionnez Markdown TOC:Insert/Update optionou utilisez Control/⌘+ MT.


7
Remarque: Je viens de découvrir qu'en utilisant le stock VSCode, vous pouvez créer des liens de démarque vers les en-têtes:, [Section Foo](#foo-header-title)et cela fonctionne même en dehors du mode de prévisualisation (c'est-à-dire dans le démarque ordinaire).
kitsu.eb

4
une autre alternative pour VSCode est vscode-markdown qui a plusieurs fonctionnalités, ToC inclus
Ciprian Tomoiagă

26

Vous pouvez essayer ce script ruby pour générer la table des matières à partir d'un fichier de démarque.

 #!/usr/bin/env ruby

require 'uri'

fileName = ARGV[0]
fileName = "README.md" if !fileName

File.open(fileName, 'r') do |f|
  inside_code_snippet = false
  f.each_line do |line|
    forbidden_words = ['Table of contents', 'define', 'pragma']
    inside_code_snippet = !inside_code_snippet if line.start_with?('```')
    next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } || inside_code_snippet

    title = line.gsub("#", "").strip
    href = URI::encode title.gsub(" ", "-").downcase
    puts "  " * (line.count("#")-1) + "* [#{title}](\##{href})"
  end
end

Génial! Juste une note, peut vouloir ajouter ifndef, includeet endif, entre autres directives de préprocesseur, à la liste des mots interdits. De plus, définir la liste hors de la portée de la boucle évite d'avoir à la réinstancier à chaque itération. En outre, cela récupérera les commentaires de toute langue qui utilise la #syntaxe des commentaires, Ruby inclus, ce qui n'est pas bon. Je suis prêt à modifier si vous le souhaitez. Cependant, c'est un excellent début et a bien fonctionné pour mes besoins. Merci beaucoup!
Jeff Klein

Cela ne fonctionne qu'avec les en-têtes atx (c'est-à-dire ceux commençant par #), pas avec les en-têtes setext (soulignés).
gozzilli

merci pour cela, si vous l'utilisez pour redcarpet sur rails, vous devriez aller avec title.parameterizepour le href, merci!
Alexis

25

Il existe 2 façons de créer votre table des matières (résumé) dans votre document de démarque.

1. Manuellement

# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)

<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2

2. Par programme

Vous pouvez utiliser par exemple un script qui génère un résumé pour vous, jetez un œil à mon projet sur github - resumeMD -

J'ai aussi essayé d'autres modules script / npm (par exemple doctoc ) mais personne ne reproduit une table des matières avec des ancres fonctionnelles.


`` <div id = ... `n'est pas reconnu par MarkdownPad2 (Windows)
chmike

Fonctionne uniquement dans le même dossier, ne fonctionne pas non plus pour les en-têtes setext.
gozzilli

25
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)

## Example [](#){name=example}
## Example2 [](#){name=example2}
## [Third Example](#){name=third-example}

Si vous utilisez des démarques supplémentaires, n'oubliez pas que vous pouvez ajouter des attributs spéciaux aux liens, aux en-têtes, aux barrières de code et aux images.
https://michelf.ca/projects/php-markdown/extra/#spe-attr


11

Les balises d'ancrage générées par différents analyseurs Markdown ne sont pas égales.

Si vous travaillez avec les analyseurs Markdown GFM (GitHub Flavoured Markdown) ou Redcarpet, j'ai écrit un plugin Vim pour gérer la table des matières.

Caractéristiques

  1. Générez une table des matières pour les fichiers Markdown.

    Analyseurs Markdown pris en charge:

    • GFM (GitHub Flavored Markdown)
    • Tapis rouge
  2. Mettre à jour la table des matières existante.

  3. Mise à jour automatique de la table des matières existante lors de l'enregistrement.

Captures d'écran

vim-markdown-toc

Usage

Générer une table des matières

Déplacez le curseur sur la ligne à laquelle vous souhaitez ajouter la table des matières, puis tapez une commande ci-dessous qui vous convient. La commande générera des en-têtes après le curseur dans la table des matières.

  1. :GenTocGFM

    Générez une table des matières dans le style de lien GFM.

    Cette commande convient aux fichiers Markdown dans les référentiels GitHub, comme README.md, et aux fichiers Markdown pour GitBook.

  2. :GenTocRedcarpet

    Générez une table des matières dans le style de lien Redcarpet.

    Cette commande convient à Jekyll ou utilise Redcarpet comme analyseur Markdown.

    Vous pouvez voir ici pour connaître les différences entre les liens toc de style GFM et Redcarpet.

Mettre à jour manuellement la table des matières existante

En règle générale, vous n'avez pas besoin de le faire, la table des matières existante sera mise à jour automatiquement lors de l'enregistrement par défaut. Si vous voulez le faire manuellement, utilisez simplement la :UpdateToccommande.

Téléchargements et documents

https://github.com/mzlogin/vim-markdown-toc


10

Vous pouvez également utiliser pandocle "couteau suisse" pour convertir "un format de balisage en un autre" . Il peut générer automatiquement une table des matières dans le document de sortie si vous fournissez l' --tocargument.

Astuce: Si vous voulez une table des matières en htmlsortie, vous devez également fournir -squi génère un document autonome.

Exemple de ligne de commande shell:

./pandoc -s --toc input.md -o output.html



7

Vous pouvez le générer en utilisant ce bash one-liner. Suppose que votre fichier de démarque est appelé FILE.md.

echo "## Contents" ; echo ; 
cat FILE.md | grep '^## ' | grep -v Contents | sed 's/^## //' | 
  while read -r title ; do 
    link=$(echo $title | tr 'A-Z ' 'a-z-') ; 
    echo "- [$title](#$link)" ; 
    done

C'est bien. Il vaudrait la peine de le réécrire comme un script approprié avec un nom de fichier comme argument, et peut-être avec la gestion des sous-sections.
MasterScrat

6

Je viens de coder une extension pour python-markdown, qui utilise son analyseur pour récupérer les en-têtes, et génère une table des matières sous forme de liste non ordonnée au format Markdown avec des liens locaux. Le fichier est

... et il doit être placé dans le markdown/extensions/répertoire de l'installation de démarquage. Ensuite, tout ce que vous avez à faire est de taper des <a>balises d' ancrage avec un id="..."attribut comme référence - donc pour un texte d'entrée comme celui-ci:

$ cat test.md 
Hello
=====

## <a id="sect one"></a>SECTION ONE ##

something here

### <a id='sect two'>eh</a>SECTION TWO ###

something else

#### SECTION THREE

nothing here

### <a id="four"></a>SECTION FOUR

also...

... l'extension peut être appelée comme ceci:

$ python -m markdown -x md_toc test.md 
* Hello
    * [SECTION ONE](#sect one)
        * [SECTION TWO](#sect two)
            * SECTION THREE
        * [SECTION FOUR](#four)

... et vous pouvez ensuite coller ce toc dans votre document de démarque (ou avoir un raccourci dans votre éditeur de texte, qui appelle le script sur le document actuellement ouvert, puis insère la table des matières résultante dans le même document).

Notez que les anciennes versions de python-markdownn'ont pas de __main__.pymodule, et en tant que tel, l'appel de ligne de commande comme ci-dessus ne fonctionnera pas pour ces versions.


6

Comme mentionné dans d'autres réponses, il existe plusieurs façons de générer automatiquement une table des matières. La plupart sont des logiciels open source et peuvent être adaptés à vos besoins.

Ce qui me manquait, cependant, était un formatage visuellement attrayant pour une table des matières, en utilisant les options limitées fournies par Markdown. Nous avons trouvé ce qui suit:

Code

## Content

**[1. Markdown](#heading--1)**

  * [1.1. Markdown formatting cheatsheet](#heading--1-1)
  * [1.2. Markdown formatting details](#heading--1-2)

**[2. BBCode formatting](#heading--2)**

  * [2.1. Basic text formatting](#heading--2-1)

      * [2.1.1. Not so basic text formatting](#heading--2-1-1)

  * [2.2. Lists, Images, Code](#heading--2-2)
  * [2.3. Special features](#heading--2-3)

----

Dans votre document, vous placeriez les marqueurs de sous-partie cible comme ceci:

<div id="heading--1-1"/>
### 1.1. Markdown formatting cheatsheet

Selon l'endroit et la façon dont vous utilisez Markdown, les éléments suivants devraient également fonctionner et fournir un code Markdown plus joli:

### 1.1. Markdown formatting cheatsheet <a name="heading--1-1"/>

Exemple de rendu

Contenu

1. Markdown

2. Formatage BBCode


Les avantages

  • Vous pouvez ajouter autant de niveaux de chapitres et sous-chapitres que vous le souhaitez. Dans la table des matières, celles-ci apparaissent sous forme de listes imbriquées non ordonnées à des niveaux plus profonds.

  • Pas d'utilisation de listes ordonnées. Celles-ci créeraient une indentation, ne lieraient pas le nombre et ne peuvent pas être utilisées pour créer une numérotation de classification décimale comme "1.1".

  • Pas d'utilisation de listes pour le premier niveau. Ici, l'utilisation d'une liste non ordonnée est possible, mais pas nécessaire: l'indentation et la puce ajoutent simplement un encombrement visuel et aucune fonction ici, nous n'utilisons donc pas du tout de liste pour le premier niveau de ToC.

  • Accent visuel sur les sections de premier niveau de la table des matières en caractères gras.

  • Marqueurs de sous- #heading--1-1parties courts et significatifs qui sont "beaux" dans la barre d'URL du navigateur, tels que des marqueurs contenant des morceaux transformés de l'en-tête réel.

  • Le code utilise rubriques H2 ( ## …) pour les sections, rubriques H3 ( ### …) pour les sous-rubriques , etc .. Cela rend plus facile à lire le code source , car ## …fournit un indice plus fort visuel lors du défilement par rapport au cas où les sections commenceraient par rubriques H1 ( # …). Il est toujours cohérent sur le plan logique car vous utilisez l'en-tête H1 pour le titre du document lui-même.

  • Enfin, nous ajoutons une belle règle horizontale pour séparer la table des matières du contenu réel.

Pour en savoir plus sur cette technique et comment nous l'utilisons dans le logiciel de forum Discourse , voir ici .


5

J'ai écrit un script python qui analyse un fichier de démarque et génère une table des matières sous forme de liste de démarque: md-to-toc

Contrairement aux autres scripts que j'ai trouvés, md-to-toc prend correctement en charge les titres en double. Il ne nécessite pas non plus de connexion Internet, il fonctionne donc sur n'importe quel fichier md, pas seulement sur ceux disponibles dans un dépôt public.


5

Dans Visual Studio Code (VSCode), vous pouvez utiliser l'extension Markdown All in One .

Une fois installé, suivez les étapes ci-dessous:

  1. Appuyez sur CTRL+ SHIFT+P
  2. Sélectionnez Markdown: Créer une table des matières


4

Typora génère une table des matières en l'ajoutant [TOC]à votre document.


Merci beaucoup! Voici également un lien vers le fichier Lisez
moi


4

Utilisez simplement votre éditeur de texte avec un plugin.

Votre éditeur a très probablement un package / plugin pour gérer cela pour vous. Par exemple, dans Emacs , vous pouvez installer un générateur de table des matières markdown-toc . Ensuite, lorsque vous modifiez, appelez simplement à plusieurs reprises M-x markdown-toc-generate-or-refresh-toc. Cela vaut une liaison clé si vous voulez le faire souvent. Il est bon de générer une table des matières simple sans polluer votre document avec des ancres HTML.

D'autres éditeurs ont des plugins similaires, donc la liste populaire est quelque chose comme:


2

Basé sur la réponse albertodebortoli a créé la fonction avec des contrôles supplémentaires et la substitution des signes de ponctuation.

# @fn       def generate_table_of_contents markdown # {{{
# @brief    Generates table of contents for given markdown text
#
# @param    [String]  markdown Markdown string e.g. File.read('README.md')
#
# @return   [String]  Table of content in markdown format.
#
def generate_table_of_contents markdown
  table_of_contents = ""
  i_section = 0
  # to track markdown code sections, because e.g. ruby comments also start with #
  inside_code_section = false
  markdown.each_line do |line|
    inside_code_section = !inside_code_section if line.start_with?('```')

    forbidden_words = ['Table of contents', 'define', 'pragma']
    next if !line.start_with?('#') || inside_code_section || forbidden_words.any? { |w| line =~ /#{w}/ }

    title = line.gsub("#", "").strip
    href = title.gsub(/(^[!.?:\(\)]+|[!.?:\(\)]+$)/, '').gsub(/[!.,?:; \(\)-]+/, "-").downcase

    bullet = line.count("#") > 1 ? " *" : "#{i_section += 1}."
    table_of_contents << "  " * (line.count("#") - 1) + "#{bullet} [#{title}](\##{href})\n"
  end
  table_of_contents
end


2

Pour moi, la solution proposée par @Tum fonctionne comme un charme pour une table des matières à 2 niveaux. Cependant, pour le 3e niveau, cela n'a pas fonctionné. Il n'a pas affiché le lien comme pour les 2 premiers niveaux, il affiche le texte brut à la 3.5.1. [bla bla bla](#blablabla) <br>place.

Ma solution est un ajout à la solution de @Tum (qui est très simple) pour les personnes qui ont besoin d'une table des matières à 3 niveaux ou plus.

Au deuxième niveau, un simple onglet fera correctement le retrait pour vous. Mais il ne prend pas en charge 2 onglets. Au lieu de cela, vous devez utiliser un onglet et en ajouter &nbsp;vous-même autant que nécessaire afin d'aligner correctement le 3ème niveau.

Voici un exemple utilisant 4 niveaux (les niveaux plus élevés, ça devient horrible):

# Table of Contents
1. [Title](#title) <br>
    1.1. [sub-title](#sub_title) <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1. [sub-sub-title](#sub_sub_title)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1.1. [sub-sub-sub-title](#sub_sub_sub_title)

# Title <a name="title"></a>
Heading 1

## Sub-Title <a name="sub_title"></a>
Heading 2

### Sub-Sub-Title <a name="sub_sub_title"></a>
Heading 3

#### Sub-Sub-Sub-Title <a name="sub_sub_sub_title"></a>
Heading 4

Cela donne le résultat suivant où chaque élément de la table des matières est un lien vers sa section correspondante. Notez également le <br>afin d'ajouter une nouvelle ligne au lieu d'être sur la même ligne.

Table des matières

  1. Titre
    1.1. Sous-titre
           1.1.1. Sous-sous-titre
                     1.1.1.1. Sous-sous-sous-sous-titre

Titre

Rubrique 1

Sous-titre

Rubrique 2

Sous-sous-titre

Rubrique 3

Sous-sous-sous-sous-titre

Rubrique 4


1

En fonction de votre flux de travail, vous voudrez peut-être regarder le strapdown

C'est une fourchette de l'original ( http://strapdownjs.com ) qui ajoute la génération de la table des matières.

Il y a un fichier de configuration apache sur le dépôt (peut-être pas encore correctement mis à jour) pour envelopper le démarquage à la volée, si vous préférez ne pas écrire dans des fichiers html.


1

Je ne suis pas sûr, quelle est la documentation officielle pour le démarque. La référence croisée peut être écrite uniquement entre crochets [Heading]ou avec des crochets vides [Heading][].

Les deux fonctionnent en utilisant pandoc . J'ai donc créé un script bash rapide, qui remplacera $ TOC dans le fichier md par son TOC. (Vous aurez besoin d'envsubst, qui pourrait ne pas faire partie de votre distribution)

#!/bin/bash
filename=$1
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/   /g;s/\. \(.*\)$/. [\1][]/')
export __TOC__
envsubst '$__TOC__' < $filename

1

Si vous utilisez Eclipse, vous pouvez utiliser le raccourci Ctrl+ O(contour), cela affichera l'équivalent de la table des matières et permettra de rechercher dans les titres de section (saisie semi-automatique).

Vous pouvez également ouvrir la vue Structure (Fenêtre -> Afficher la vue -> Structure) mais elle n'a pas de recherche de saisie semi-automatique.


1

Utilisez toc.py qui est un petit script python qui génère une table des matières pour votre démarque.

Usage:

  • Dans votre fichier Markdown, ajoutez l' <toc>emplacement où vous souhaitez placer la table des matières.
  • $python toc.py README.md(Utilisez votre nom de fichier de démarque au lieu de README.md )

À votre santé!


Votre script est sympa mais il ne crée pas d'ancre avant chaque titre. Nécessaire au moins dans bitbucket.
Paul Rougieux

1

J'ai utilisé https://github.com/ekalinin/github-markdown-toc qui fournit un utilitaire de ligne de commande qui génère automatiquement la table des matières à partir d'un document de démarque.

Pas de plugins, ni de macros ou autres dépendances. Après avoir installé l'utilitaire, collez simplement la sortie de l'utilitaire à l'emplacement du document où vous souhaitez votre table des matières. Très simple à utiliser.

$ cat README.md | ./gh-md-toc -


1

Il existe un script Ruby appelé mdtoc.rb qui peut générer automatiquement une table des matières GFM Markdown, et il est similaire mais légèrement différent de certains autres scripts publiés ici.

Étant donné un fichier Markdown d'entrée comme:

# Lorem Ipsum

Lorem ipsum dolor sit amet, mei alienum adipiscing te, has no possit delicata. Te nominavi suavitate sed, quis alia cum no, has an malis dictas explicari. At mel nonumes eloquentiam, eos ea dicat nullam. Sed eirmod gubergren scripserit ne, mei timeam nonumes te. Qui ut tale sonet consul, vix integre oportere an. Duis ullum at ius.

## Et cum

Et cum affert dolorem habemus. Sale malis at mel. Te pri copiosae hendrerit. Cu nec agam iracundia necessitatibus, tibique corpora adipisci qui cu. Et vix causae consetetur deterruisset, ius ea inermis quaerendum.

### His ut

His ut feugait consectetuer, id mollis nominati has, in usu insolens tractatos. Nemore viderer torquatos qui ei, corpora adipiscing ex nec. Debet vivendum ne nec, ipsum zril choro ex sed. Doming probatus euripidis vim cu, habeo apeirian et nec. Ludus pertinacia an pro, in accusam menandri reformidans nam, sed in tantas semper impedit.

### Doctus voluptua

Doctus voluptua his eu, cu ius mazim invidunt incorrupte. Ad maiorum sensibus mea. Eius posse sonet no vim, te paulo postulant salutatus ius, augue persequeris eum cu. Pro omnesque salutandi evertitur ea, an mea fugit gloriatur. Pro ne menandri intellegam, in vis clita recusabo sensibus. Usu atqui scaevola an.

## Id scripta

Id scripta alterum pri, nam audiam labitur reprehendunt at. No alia putent est. Eos diam bonorum oportere ad. Sit ad admodum constituto, vide democritum id eum. Ex singulis laboramus vis, ius no minim libris deleniti, euismod sadipscing vix id.

Il génère cette table des matières:

$ mdtoc.rb FILE.md 
#### Table of contents

1. [Et cum](#et-cum)
    * [His ut](#his-ut)
    * [Doctus voluptua](#doctus-voluptua)
2. [Id scripta](#id-scripta)

Voir aussi mon blog post sur ce sujet.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.