# Wikitexte

Le wikitexte, wikicode, langage wiki ou balisage wiki est un langage de balisage léger utilisé pour écrire des pages dans les sites web wiki, tels que Wikipédia, et constitue une alternative simplifiée au HTML.
Le but est de convertir un contenu par le logiciel moteur de wiki en HTML, qui à son tour est servi aux navigateurs web. Tous ces moteurs wiki intègrent le moteur de rendu des pages, les outils de traitement et l'éditeur de pages dans un seul logiciel.
Il n'existe pas de langage wiki standard communément accepté, car la grammaire, la structure, la justification, les mots-clés, etc., dépendent du logiciel wiki particulier utilisé sur le site web en question. À titre d’exemple, tous les balisages wiki ont un moyen simple de créer des liens hypertextes vers d'autres pages du site, mais il existe plusieurs conventions syntaxiques différentes pour ces liens. Différents programmes Wiki peuvent supporter l'utilisation de différents ensembles d'éléments HTML dans le wikitexte. Dans certains cas, les éléments HTML autorisés peuvent être configurés par les sites wiki individuels.

## Présentation

La fonctionnalité essentielle de tout système wiki est la possibilité de modifier des pages web directement dans un navigateur en saisissant un langage de balisage facile à apprendre. Le concept basé sur le navigateur et le serveur permet à plusieurs auteurs d'éditer et de réviser des documents communs sans avoir à échanger des versions écrites et mises à jour indépendamment. Comme la plupart des systèmes wiki offrent un système intégré de gestion des versions, les auteurs peuvent facilement fusionner leurs modifications.
Le wikitexte permet de décrire une page contenant des textes mis en forme et autres contenus, à l'aide de textes et symboles du répertoire Unicode.
Avec le moteur de rendu d'un wiki, le texte peut être présenté en sections, contenir des mises en forme telles que gras, italique, des hyperliens internes, des hyperliens externes et des images. Ainsi, les caractères [[Paris]] décrivent un lien hypertexte qui sera rendu dans l'article par un lien vers la page Paris de ce wiki, sous la forme « Paris ».

## Fonctionnalités
### Navigation

Lorsque l'utilisateur a la permission de modifier une page wiki, il a à sa disposition un bouton ou un lien d'édition permettant de passer en mode édition. Il va ainsi pouvoir structurer et formater la page wiki en cours avec un langage de balisage simplifié, appelé wikitexte ou wikicode.
La page d'édition pourra également être visualisée en mode WYSIWYG.
Par exemple, un astérisque qui commence une ligne de texte délimite un élément d'une liste à puces. Le style et la syntaxe des wikitextes peuvent varier d'une implémentations de wiki dont certaines autorisent également les balises HTML.

### Cohérence

Afin de mettre en forme et structurer la page, les wikis ont privilégié l'édition en texte brut, avec des conventions moins nombreuses et plus simples que le HTML. Limiter l'accès au HTML et aux feuilles de style en cascade (CSS) peut également limiter les possibilités de mise en forme et de structuration.
En contrepartie, cette limitation favorise la cohérence de présentation ainsi que la protection des données.

## WikiCreole

Il existe de nombreux moteurs wiki, le site WikiMatrix.org compare plus de 80 moteurs wiki. Dans la plupart des systèmes wiki, les auteurs n'utilisent pas d'éditeur WYSIWYG (« What You See Is What You Get ») pour modifier le contenu d'une page. Ils utilisent plutôt une zone de texte pour modifier le texte qui est balisé à l'aide du balisage wiki. Par rapport au HTML, le balisage wiki est un langage de balisage léger qui réduit le nombre de choix possibles au profit de la simplicité et de la rapidité d'écriture. Par ailleurs, la plupart des moteurs wiki ont des langages de balisage similaires, mais pas identiques. C'est ce qu'on appelle le désordre du balisage wiki. Dans ce sens, une tentative pour normaliser et standardiser les langages de balisage wiki a été faite, appelée « WikiCréole ». Le WikiCréole est censé permettre aux visiteurs d'un moteur wiki d'éditer des pages sur d'autres wikis sans avoir à apprendre une nouvelle syntaxe wiki.
Ward Cunningham, le fondateur des wikis, a inventé le terme créole, tout comme il a inventé le nom wiki à partir du WikiWiki hawaïen. Il a suggéré ce nom lors de la conférence internationale sur Wikipédia, Wikimania 2006 à Boston. L'idée de Cunningham était de créer un balisage commun qui ne soit pas la standardisation d'un balisage existant arbitraire, mais plutôt un nouveau langage de balisage créé à partir des éléments communs des moteurs existants. Ward Cunningham fait la comparaison avec le terme linguistique : « Une langue créole, ou simplement un créole, est une langue stable qui provient d'une combinaison non triviale de deux ou plusieurs langues, typiquement avec de nombreuses caractéristiques qui ne sont pas héritées d'un parent » Les langues créoles commencent comme pidgin.
Le Créole est conçu pour offrir le moins de conflit possible avec les langages existants, ainsi plusieurs modes d'implémentation sont possibles qui permettent une migration facile. La spécification de l’ensemble réside dans l’effort de plusieurs parties impliquées, principalement des implémenteurs de moteurs wiki et leurs sponsors correspondants.

## MediaWiki

La plupart des langages de balisage wiki se sont développés de manière organique et sans aucun plan directeur. Par conséquent, il n'existe pas de grammaire bien définie, ni de spécification précise de la syntaxe et de la sémantique. Le langage est défini par la mise en œuvre de son analyseur syntaxique, et cette mise en œuvre de l'analyseur syntaxique est étroitement liée au reste du moteur wiki. Comme indiqué précédemment, ce manque de précision du langage et le découplage des composants entravent l'évolution des logiciels wiki. Si le contenu du wiki avait une représentation bien spécifiée et entièrement exploitable par les machines, il serait possible de mieux accéder à ce contenu, mais aussi d'améliorer et d'étendre les méthodes de traitement.
Une telle amélioration du traitement automatique est particulièrement souhaitable pour MediaWiki, le moteur de wiki qui alimente Wikipédia. Celle-ci contient une grande quantité de données sous forme de tableaux et d'appels de fonctions spécialisées (« templates ») comme les infoboxes. L'état de l'art de l'extraction et de l'analyse des données de Wikipédia consiste à utiliser des expressions régulières et une analyse syntaxique imprécise pour récupérer les données. Une analyse précise du wikitexte, le langage de balisage wiki dans lequel le contenu de Wikipédia est écrit, résoudrait ce problème. Non seulement elle permettrait d'effectuer des requêtes précises, mais elle permettrait également de définir le contenu wiki à l'aide d'un modèle d'objet bien défini sur lequel d'autres outils pourraient opérer. Un tel modèle peut simplifier considérablement la manipulation programmatique du contenu. Et cela profite à son tour aux éditeurs WYSIWYG et à d'autres outils, qui requièrent une structure de données précise pouvant être traitée par la machine.

## Wikitexte et MediaWiki

Le logiciel MediaWiki s'est développé pendant de nombreuses années à partir du wiki UseMod de Clifford Adams, qui a été le premier logiciel wiki utilisé par Wikipédia. Bien que la première version du logiciel appelé plus tard MediaWiki ait été une réécriture complète en PHP, elle supportait fondamentalement la même syntaxe que le wiki UseMod.
L'analyseur de MediaWiki est devenu un logiciel complexe. Malheureusement, il convertit le wikitexte directement en HTML, de sorte qu'aucune représentation de niveau supérieur n'est jamais générée par l'analyseur. De plus, le HTML généré peut être invalide. La complexité du logiciel interdit également le développement ultérieur de l'analyseur et la maintenance est devenue diﬃcile.
De nombreuses tentatives ont essayé d'implémenter un analyseur syntaxique pour le wikitexte afin d'obtenir une représentation accessible à la machine, cependant, de nombreuses difficultés ont empêché ces essais d’aboutir. La raison principale est la complexité de la grammaire du wikitexte, qui n'entre dans aucune des catégories bien comprises.