Aller au contenu
Développement medium

AsciiDoc : le guide complet

20 min de lecture

Bienvenue dans ce guide complet dédié à AsciiDoc, un langage de balisage léger et puissant conçu pour rédiger des documents techniques, des guides, des manuels et bien plus encore. Que vous soyez développeur, écrivain technique ou simplement intéressé par la création de documents structurés, ce guide vous fournira toutes les informations nécessaires pour maîtriser AsciiDoc.

AsciiDoc se distingue par sa syntaxe simple et intuitive qui permet de produire des documents lisibles en texte brut tout en offrant des capacités de conversion en divers formats tels que HTML, PDF et DocBook.

Pour bien comprendre et apprécier AsciiDoc, il est essentiel de se pencher sur son historique et ses origines. Le langage AsciiDoc a été créé en 2002 par Stuart Rackham. À l’époque, Rackham recherchait une solution pour rédiger des documents techniques de manière plus efficace et flexible que les outils existants comme DocBook, qui étaient souvent jugés trop complexes et verbeux.

Initialement, AsciiDoc a été conçu comme une syntaxe légère permettant de produire du DocBook. Cela signifie que les utilisateurs pouvaient écrire leurs documents en AsciiDoc, puis les convertir en DocBook pour des besoins de publication. Ce concept de conversion a été un des piliers de la popularité d’AsciiDoc, offrant une grande flexibilité sans sacrifier la simplicité.

Au fil des années, AsciiDoc a évolué pour devenir un langage de balisage à part entière. Son adoption par la communauté open source a été rapide, en particulier parmi les développeurs et les rédacteurs techniques qui recherchaient une solution de documentation lisible en texte brut tout en étant puissante et extensible.

AsciiDoc a gagné en popularité grâce à sa capacité à être intégré dans des outils de versionnement de code comme Git, facilitant ainsi la collaboration sur des documents techniques. Les plateformes de développement comme GitHub et GitLab ont rapidement adopté AsciiDoc, permettant aux utilisateurs de visualiser directement leurs fichiers AsciiDoc en ligne.

L’introduction d’AsciiDoctor en 2013, une implémentation moderne et maintenue activement d’AsciiDoc en Ruby, a marqué une étape importante dans l’évolution du langage. AsciiDoctor a simplifié et accéléré la conversion des documents, offrant de nouvelles fonctionnalités et une meilleure performance. Cela a conduit à une adoption encore plus large et à une augmentation de la contribution de la communauté.

Aujourd’hui, AsciiDoc est utilisé dans une multitude de contextes, allant de la documentation de logiciels et d’API à la rédaction de livres et de manuels techniques. Il est apprécié pour sa syntaxe claire et concise, sa capacité de conversion en de nombreux formats et son extensibilité via des plugins et des scripts personnalisés.

AsciiDoc continue d’évoluer grâce à une communauté active et des contributions régulières. Des projets comme Antora, une plateforme de documentation multi-repository, montrent la capacité d’AsciiDoc à s’adapter aux besoins modernes de la documentation technique.

Avant de plonger dans la syntaxe d’AsciiDoc, il est important de comprendre certains concepts fondamentaux. Ces concepts vous aideront à mieux structurer vos documents et à tirer pleinement parti des fonctionnalités offertes par AsciiDoc.

Les métadonnées fournissent des informations supplémentaires sur votre document, comme le titre, l’auteur et la date. Elles sont généralement placées en haut du fichier.

Les blocs sont les éléments de base de tout document AsciiDoc. Ils structurent le contenu de manière logique et organisée. Voici quelques types de blocs couramment utilisés :

  • Paragraphes : Les paragraphes sont des blocs de texte simples, séparés par une ligne vide. Ils constituent le contenu principal de votre document.
  • Titres : Les titres structurent votre document en sections et sous-sections. Ils sont créés en utilisant des symboles égaux (=).
  • Listes : Les listes permettent de présenter des éléments de manière ordonnée ou non ordonnée. AsciiDoc prend en charge les listes à puces, numérotées et de définition.

Les attributs en AsciiDoc permettent de définir des variables que vous pouvez réutiliser dans tout le document. Ils facilitent la maintenance de vos documents en centralisant les informations réutilisables.

Les commentaires en AsciiDoc sont utilisés pour ajouter des notes ou des explications dans le document qui ne seront pas visibles dans le rendu final. Ils commencent par deux slashes (//).

// Ceci est un commentaire et ne sera pas affiché dans le document final.

AsciiDoc permet d’appliquer divers styles de texte pour améliorer la lisibilité et l’impact de votre document. Voici quelques exemples :

  • Gras : Utilisez les astérisques (*) pour le texte en gras.
  • Italique : Utilisez les underscores (_) pour le texte en italique.
  • Monospace : Utilisez les backticks (“) pour le texte en monospace.

AsciiDoc est un langage de balisage riche en fonctionnalités qui le rendent particulièrement puissant et flexible pour la création de documents de différents types et complexités. Dans ce chapitre, je vais vous présenter les principales fonctionnalités qui font d’AsciiDoc un outil incontournable pour la rédaction technique et bien plus encore.

L’une des principales forces d’AsciiDoc est sa lisibilité. Les documents écrits en AsciiDoc sont faciles à lire même dans leur format brut, ce qui les rend accessibles à tous, y compris ceux qui ne connaissent pas le langage. Par exemple, un paragraphe en AsciiDoc ressemble à du texte normal :

Ceci est un paragraphe en **AsciiDoc**. Il est lisible et compréhensible sans avoir besoin de traitement supplémentaire.

AsciiDoc est extrêmement flexible et peut être utilisé pour créer une variété de documents, des simples articles de blog aux livres techniques complexes. Voici quelques exemples :

  • Articles de Blog : Utilisez AsciiDoc pour rédiger des articles de blog avec des sections, des images, des liens et plus encore.
  • Documentation Technique : Créez des manuels, des guides et des documentations techniques avec des tableaux, des blocs de code et des listes numérotées.
  • Livres : Rédigez des livres entiers en structurant vos chapitres et sections avec des titres de différents niveaux.

AsciiDoc est hautement portable. Les fichiers AsciiDoc peuvent être convertis en plusieurs formats de sortie, ce qui vous permet de publier votre contenu sur différentes plateformes sans avoir à réécrire ou reformater le texte. Voici quelques formats couramment utilisés :

  • HTML : Convertissez vos fichiers AsciiDoc en HTML pour les publier sur des sites web.
  • PDF : Générez des documents PDF pour la distribution imprimée ou numérique.
  • EPUB : Créez des livres électroniques au format EPUB pour les lire sur des liseuses.

Avec AsciiDoc, vous pouvez personnaliser de nombreux aspects de votre document en utilisant des attributs et des styles. Par exemple, vous pouvez définir des attributs globaux pour contrôler l’apparence et le comportement de votre document.

:toc: left
:icons: font

Dans cet exemple, l’attribut toc place la table des matières à gauche, et l’attribut icons utilise des icônes basées sur des polices.

AsciiDoc facilite la gestion des projets de documentation volumineuse. Vous pouvez organiser votre contenu en fichiers séparés et les inclure dans un document principal. Cela rend la maintenance et la mise à jour de votre documentation beaucoup plus simples.

include::chapitre1.adoc[]
include::chapitre2.adoc[]

AsciiDoc supporte des macros qui ajoutent des fonctionnalités supplémentaires à vos documents. Par exemple, vous pouvez utiliser des macros pour inclure des fichiers, générer des tableaux dynamiques, ou insérer des images conditionnellement.

ifdef::backend-pdf[]
image::chemin/vers/image.pdf[]
endif::[]

AsciiDoc est compatible avec plusieurs autres outils et formats de documentation. Vous pouvez intégrer AsciiDoc dans des pipelines de génération de documentation existants ou l’utiliser conjointement avec d’autres outils pour améliorer votre flux de travail.

Dans ce chapitre, je vais vous présenter la syntaxe de base d’AsciiDoc. Vous apprendrez comment structurer vos documents avec des titres, des paragraphes, des listes et comment formater votre texte pour le rendre plus attrayant et lisible.

Les titres en AsciiDoc sont créés en utilisant le symbole égal (=). Plus il y a de symboles égaux, plus le niveau de titre est bas. Les titres permettent de structurer votre document en sections et sous-sections de manière hiérarchique.

= Titre de Niveau 1
== Titre de Niveau 2
=== Titre de Niveau 3
==== Titre de Niveau 4

Par exemple :

= Introduction à **AsciiDoc**
== Installation
=== Prérequis
==== Logiciels nécessaires

Les paragraphes sont des blocs de texte séparés par une ligne vide. Si vous avez besoin de forcer un saut de ligne à l’intérieur d’un paragraphe, vous pouvez utiliser le symbole plus (+) à la fin de la ligne.

Ceci est un paragraphe.
Ceci est un autre paragraphe avec un+
saut de ligne forcé.

AsciiDoc offre plusieurs options pour la mise en forme du texte. Voici comment appliquer du gras, de l’italique et du monospace à votre texte :

  • Gras : Utilisez les astérisques (*) autour du texte.
  • Italique : Utilisez les underscores (_) autour du texte.
  • Monospace : Utilisez les backticks (“) autour du texte.
*Texte en gras*
_Texte en italique_
`Texte en monospace`

Les listes en AsciiDoc peuvent être à puces, numérotées ou de définition. Voici comment créer chacun de ces types de listes :

Liste à Puces :

- Élément 1
- Élément 2
- Élément 3

Liste Numérotée :

. Élément 1
. Élément 2
. Élément 3

Liste de Définition :

Terme 1:: Définition 1
Terme 2:: Définition 2

Les blocs de code sont utilisés pour inclure du code source dans votre document. Ils sont délimités par des triples backticks (```) ou par le mot-clé [source] suivi du langage de programmation entre crochets.

[source, python]
----
print("Hello, World!")
----

Ou en utilisant les triples backticks :

print("Hello, World!")

Les blocs de citations sont utilisés pour inclure des citations ou des extraits de texte. Ils commencent par une double quote (").

[quote, Auteur]
____
Ceci est une citation.
____

AsciiDoc permet de créer des tableaux en utilisant des pipes (|) pour séparer les colonnes et des lignes de délimitation pour séparer les rangées.

|===
| Colonne 1 | Colonne 2 | Colonne 3
| Donnée 1 | Donnée 2 | Donnée 3
| Donnée 4 | Donnée 5 | Donnée 6
|===

Vous pouvez ajouter des notes et astuces en utilisant des blocs spécifiques pour attirer l’attention sur des informations importantes.

[TIP]
====
Voici une astuce utile.
====
[IMPORTANT]
====
Ceci est une information importante.
====

AsciiDoc propose des blocs avancés qui permettent de structurer vos documents de manière plus complexe et d’ajouter des fonctionnalités supplémentaires. Dans ce chapitre, nous allons explorer les blocs de code, les blocs de citations, les blocs de tableaux et d’autres types de blocs avancés.

Les blocs de citations permettent d’inclure des citations ou des extraits de texte avec un formatage distinctif. Ils sont utiles pour mettre en avant des citations importantes ou des références.

[quote, Auteur]
____
Ceci est une citation. Elle est mise en forme distinctivement pour attirer l'attention.
____

Les blocs de tableaux permettent de présenter des données structurées sous forme de tableaux. Les colonnes sont séparées par des pipes (|) et les lignes sont délimitées par des lignes de séparation.

|===
| Colonne 1 | Colonne 2 | Colonne 3
| Donnée 1 | Donnée 2 | Donnée 3
| Donnée 4 | Donnée 5 | Donnée 6
|===

Vous pouvez également personnaliser l’alignement des colonnes et ajouter des en-têtes.

Les blocs de listings sont similaires aux blocs de code, mais ils sont utilisés pour afficher du texte ou des commandes qui ne nécessitent pas de coloration syntaxique.

[listing]
----
$ ls -l
total 0
-rw-r--r-- 1 user staff 0 Jan 1 00:00 file1.txt
-rw-r--r-- 1 user staff 0 Jan 1 00:00 file2.txt
----

Les blocs de formulaires permettent de créer des formulaires interactifs. Bien que cette fonctionnalité soit moins courante, elle peut être utilisée dans des contextes spécifiques.

[form]
----
*Name:* [_________]
*Email:* [_________]
----

Les blocs d’exemples sont utilisés pour fournir des exemples de texte ou de code. Ils sont encadrés pour se distinguer du reste du contenu.

[example]
====
Ceci est un exemple de texte mis en évidence dans un bloc d'exemple.
====

Les blocs de verbatim affichent le texte exactement comme il est écrit, sans aucune mise en forme. Ils sont utiles pour montrer des exemples de texte brut.

[verbatim]
----
Ceci est du texte verbatim.
Il est affiché tel quel, sans mise en forme.
----

Les blocs de notes permettent d’ajouter des informations supplémentaires ou des remarques importantes. Ils sont formatés pour attirer l’attention du lecteur.

[NOTE]
====
Ceci est une note. Elle attire l'attention sur un point particulier.
====

AsciiDoc permet d’utiliser des blocs spécifiques pour les astuces (tips) et les informations importantes (important). Ces blocs sont formatés de manière distincte pour se démarquer du texte principal.

[TIP]
====
Voici une astuce utile pour travailler avec **AsciiDoc**.
====
[IMPORTANT]
====
Ceci est une information importante à ne pas négliger.
====

Dans ce chapitre, je vais vous montrer comment insérer des images et des liens dans vos documents AsciiDoc. Ces éléments enrichissent votre contenu en ajoutant des visuels et des références utiles.

Les images peuvent être insérées dans un document AsciiDoc en utilisant la syntaxe image:: suivie du chemin de l’image et d’un texte alternatif entre crochets. Les images peuvent être locales ou hébergées en ligne.

Pour insérer une image locale, spécifiez le chemin relatif ou absolu vers le fichier image.

image::images/exemple.png[Texte alternatif]

Pour insérer une image hébergée en ligne, utilisez l’URL de l’image.

image::http://www.example.com/images/exemple.png[Texte alternatif]

Vous pouvez redimensionner et aligner les images en utilisant des attributs. Par exemple, pour redimensionner une image à 200 pixels de largeur :

image::images/exemple.png[Texte alternatif, width=200]

Pour aligner une image au centre :

image::images/exemple.png[Texte alternatif, align=center]

Voici un exemple complet combinant plusieurs attributs :

image::images/exemple.png[Texte alternatif, width=300, align=right]

Les liens sont essentiels pour référencer d’autres documents, sites web, ou sections au sein du même document. AsciiDoc supporte plusieurs types de liens, notamment les liens hypertexte, les liens vers des fichiers locaux et les ancres internes.

Pour créer un lien hypertexte, utilisez les crochets pour le texte du lien et les parenthèses pour l’URL.

http://www.example.com[Visitez notre site web]

Vous pouvez également créer des liens vers des fichiers locaux.

link:chemin/vers/fichier.pdf[Télécharger le PDF]

Les liens peuvent être enrichis avec des attributs tels que window pour ouvrir le lien dans une nouvelle fenêtre.

http://www.example.com[Visitez notre site web, window="_blank"]

Les ancres internes permettent de créer des liens vers des sections spécifiques du même document. Définissez une ancre avec un double crochet ([[]]) et créez un lien en utilisant cette ancre.

Définition d’une ancre :

[[section1]]
== Section 1

Création d’un lien vers l’ancre :

Voir la <<section1,Section 1>> pour plus de détails.

Un exemple combinant différents types de liens :

== Introduction
Ce document contient plusieurs liens utiles.
- Lien hypertexte : http://www.example.com[Visitez notre site web]
- Lien vers un fichier local : link:chemin/vers/fichier.pdf[Télécharger le PDF]
- Lien avec attributs : http://www.example.com[Ouvrir dans une nouvelle fenêtre, window="_blank"]
- Lien interne : Voir la <<section1,Section 1>> pour plus de détails.

Vous pouvez insérer des images et des liens dans les tableaux pour rendre vos données plus interactives et visuelles.

|===
| Colonne 1 | Colonne 2
| Texte
| image::images/exemple.png[Texte alternatif, width=100]
|===
|===
| Colonne 1 | Colonne 2
| Texte
| http://www.example.com[Visitez notre site web]
|===

Les attributs en AsciiDoc permettent de personnaliser et de configurer divers aspects de votre document. Ils fonctionnent comme des variables que vous pouvez définir et réutiliser dans tout le document, facilitant ainsi la gestion et la maintenance de votre contenu.

Les attributs sont définis en utilisant les deux points (:) suivis du nom de l’attribut et de sa valeur. Ils sont généralement placés au début du document, mais peuvent être définis à n’importe quel endroit si nécessaire.

:nom: John Doe
:date: 2024-06-17

Pour utiliser un attribut défini, placez son nom entre accolades ({}).

Auteur : {nom}
Date : {date}

AsciiDoc comprend plusieurs attributs pré-définis que vous pouvez utiliser pour configurer divers aspects du document, comme le titre, l’auteur et les options de table des matières.

  • doctitle : Définit le titre du document.
  • author : Définit l’auteur du document.
  • revdate : Définit la date de révision du document.
:doctitle: Guide **AsciiDoc**
:author: John Doe
:revdate: 2024-06-17

Voici un exemple d’utilisation d’attributs pré-définis pour configurer les métadonnées du document :

= {doctitle}
{author}
{revdate}
== Introduction
Ce document a été rédigé par {author} et révisé le {revdate}.

Vous pouvez définir vos propres attributs pour une personnalisation plus poussée. Par exemple, pour définir une URL de base que vous utilisez fréquemment :

:base-url: http://www.example.com
Voir notre site web ici : {base-url}/accueil

Les attributs peuvent être redéfinis au cours du document. La dernière définition de l’attribut sera utilisée.

:nom: John Doe
Auteur original : {nom}
:nom: Jane Smith
Nouvel auteur : {nom}

AsciiDoc permet d’utiliser des attributs conditionnels pour inclure ou exclure du contenu en fonction de la présence ou de la valeur d’un attribut. Ceci est particulièrement utile pour la gestion de contenu dynamique ou multilingue.

:lang: fr
ifdef::lang[:lang est défini]
ifndef::lang[:lang n'est pas défini]
ifdef::lang[:lang est défini comme fr]
:lang: fr
ifdef::lang[]
Ceci est affiché parce que l'attribut lang est défini.
endif::[]
ifndef::lang[]
Ceci est affiché parce que l'attribut lang n'est pas défini.
endif::[]
ifdef::lang[fr]
Ceci est affiché parce que l'attribut lang est défini comme fr.
endif::[]

Les attributs peuvent être utilisés pour personnaliser des blocs de texte ou des éléments spécifiques, comme les titres, les paragraphes et les listes.

= {doctitle}
:subtitle: Un guide complet
{subtitle}
== Introduction
Bienvenue dans le {doctitle}.
:element1: Élément 1
:element2: Élément 2
- {element1}
- {element2}

Les attributs peuvent être combinés avec des macros pour créer des documents dynamiques et réutilisables.

:filepath: chemin/vers/fichier.adoc
include::{filepath}[]

AsciiDoc supporte les macros et les extensions, qui ajoutent des fonctionnalités supplémentaires à vos documents. Les macros permettent d’inclure d’autres fichiers, de générer des tableaux dynamiques, ou d’insérer des éléments conditionnels. Les extensions, quant à elles, ajoutent des fonctionnalités avancées qui ne sont pas disponibles par défaut.

Les macros d’inclusion vous permettent d’insérer le contenu d’un fichier externe dans votre document AsciiDoc. Cela est particulièrement utile pour la gestion de documentation volumineuse ou pour réutiliser du contenu.

Pour inclure un fichier externe, utilisez la macro include:: suivie du chemin du fichier et des crochets vides.

include::chemin/vers/fichier.adoc[]

Vous pouvez utiliser des attributs pour rendre les inclusions plus dynamiques.

:filepath: chemin/vers/fichier.adoc
include::{filepath}[]

Les inclusions conditionnelles permettent d’inclure du contenu uniquement si certaines conditions sont remplies. Cela est utile pour créer des documents adaptés à différents contextes ou audiences.

ifdef::backend-pdf[]
include::chemin/vers/fichier-pdf.adoc[]
endif::[]
ifndef::backend-html[]
include::chemin/vers/fichier-non-html.adoc[]
endif::[]

Les macros permettent également de créer des tableaux dynamiques en utilisant des attributs ou des variables. Vous pouvez définir des attributs pour les en-têtes de colonne et les valeurs, puis les utiliser dans votre tableau.

:col1: Colonne 1
:col2: Colonne 2
:val1: Valeur 1
:val2: Valeur 2
|===
| {col1} | {col2}
| {val1} | {val2}
|===

Les extensions ajoutent des fonctionnalités avancées à AsciiDoc. Elles peuvent être utilisées pour générer des diagrammes, des graphiques et d’autres éléments interactifs. L’une des extensions les plus populaires est AsciiDoctor, qui offre de nombreuses fonctionnalités supplémentaires.

Mermaid est une extension qui permet de créer des diagrammes et des graphiques avec une syntaxe simple. Pour utiliser Mermaid avec AsciiDoc, vous devez définir un bloc source avec la syntaxe mermaid.

[source, mermaid]
----
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
----

Ce code génère un diagramme de flux simple montrant les connexions entre les nœuds A, B, C et D.

AsciiDoctor est une implémentation moderne d’AsciiDoc qui ajoute de nombreuses fonctionnalités avancées. Voici quelques exemples d’extensions populaires :

AsciiDoctor Diagram permet de générer des diagrammes à partir de plusieurs langages de description de diagrammes, y compris PlantUML et Graphviz.

[plantuml, format=svg]
----
@startuml
Alice -> Bob: Hello
Bob -> Alice: Hi
@enduml
----

AsciiDoctor Reveal.js permet de créer des présentations interactives en utilisant la syntaxe AsciiDoc. Vous pouvez structurer vos diapositives avec des titres et des sections.

= Titre de la Présentation
:stem:
== Introduction
=== Slide 1
Contenu de la première diapositive.
=== Slide 2
Contenu de la deuxième diapositive.

Voici quelques macros utiles pour enrichir vos documents :

Inclure uniquement certaines lignes d’un fichier.

include::chemin/vers/fichier.adoc[lines=1..5]

Inclure une section spécifique d’un fichier.

include::chemin/vers/fichier.adoc[tags=section1]

Définir des tags dans le fichier source pour des inclusions conditionnelles.

// tag::section1[]
== Section 1
Contenu de la section 1.
// end::section1[]

J’espère que ce guide complet sur AsciiDoc vous a permis de comprendre les bases et les fonctionnalités avancées de ce langage de balisage puissant et flexible. En maîtrisant AsciiDoc, vous serez capable de créer des documents de haute qualité, qu’il s’agisse de simples articles de blog, de documentation technique complexe, ou même de livres entiers.

Pour approfondir vos connaissances et explorer davantage les possibilités offertes par AsciiDoc, voici quelques ressources utiles :

  • Site Officiel : Le site officiel d’AsciiDoc, où vous pouvez trouver des informations générales et des liens vers d’autres ressources.
  • Documentation : La documentation officielle, qui couvre en détail toutes les fonctionnalités d’AsciiDoc.
  • Projet GitHub : Le dépôt GitHub du projet AsciiDoc, où vous pouvez trouver le code source et contribuer au développement.