ConTeXt est un deuxième système de préparation de documents à part entière construit sur TeX. Il appartient à la même famille que LaTeX — les deux sont des « formats » — mais sa philosophie de conception est assez différente : une famille cohérente de commandes \setup... donne un contrôle précis sur l'apparence, et le dessin MetaPost est profondément intégré. Il s'agit d'une alternative à LaTeX, particulièrement appréciée pour les mises en page élaborées et la composition automatisée.
Qu'est-ce que ConTeXt
Les pdfTeX, XeTeX et LuaTeX que nous avons vus jusqu'à présent sont des moteurs – les programmes qui effectuent le traitement. ConTeXt se situe à une couche différente : comme LaTeX, il s'agit d'un format, un système de commandes assemblées à partir de macros TeX. Il a été développé depuis les années 1990 par Hans Hagen des Pays-Bas et sa société PRAGMA ADE (Advanced Document Engineering), à l'origine comme outil de production pour leur propre travail d'édition. Le nom vient de « texte avec TeX » – con-tex-t.
Sa place est un peu déroutante : bien que ConTeXt ne soit pas un « moteur » au sens de pdfTeX/XeTeX, le matériel d'introduction le répertorie souvent à côté des moteurs et des formats. Il est plus précis de le considérer comme un frère de LaTeX qui fonctionne sur un moteur. Construit sur la même fondation TeX, il offre une manière différente de rédiger des documents.
En quoi diffère-t-il de LaTeX
Alors que LaTeX est une culture de regroupement de fonctionnalités à partir d'une vaste collection de packages tiers, ConTeXt est hautement intégré et monolithique. Couleur, mise en page, polices, tables des matières, notes de bas de page : tout est conçu ensemble dès le départ. Ainsi, vous passez moins de temps à vous demander « quel package dois-je ajouter pour cela, et est-ce qu'il entrera en conflit avec un autre ? », et les mises en page complexes sont plus faciles à contrôler proprement. Cette intégration constitue sa principale force.
L'interface est également cohérente. Presque toutes les apparences sont spécifiées via des commandes de configuration commençant par \setup..., combinées avec des options key=value. La taille de la police du corps est \setupbodyfont, la taille du papier est \setuppapersize, l'espacement des paragraphes est \setupwhitespace, et ainsi de suite — le nom et la syntaxe sont fortement réguliers. Il y a peu de « grammaire » ad hoc à mémoriser et les paramètres restent lisibles.
Le balisage lui-même diffère également de LaTeX. Le corps – le \begin{document}…\end{document} de LaTeX – est enveloppé dans \starttext … \stoptext, et une section est \startsection … \stopsection (ou simplement \section pour le titre seul). Les environnements sont exprimés avec des paires \start…/\stop… correspondantes, qui est l'idiome ConTeXt.
Le matériel d’apprentissage se rassemble également différemment. Les connaissances de LaTeX sont dispersées dans d'innombrables livres, sites de questions-réponses et manuels de packages dans le monde entier, tandis que la documentation de ConTeXt est relativement centralisée - le wiki officiel ConTeXt (contextgarden) et des introductions telles que *ConTeXt : une excursion*. La communauté se rassemble de la même manière : une réunion annuelle ConTeXt met les développeurs et les utilisateurs face à face, et les discussions sur la conception et la mise en œuvre ont tendance à revenir dans le matériel officiel.
La lignée MkII / MkIV / LMTX
ConTeXt se décline en trois lignes principales, chacune correspondant à une génération du moteur sous-jacent. Tous sont des « ConTeXt », mais ils fonctionnent sur des moteurs différents avec des composants internes différents.
- MkII — la ligne la plus ancienne, exécutée sur pdfTeX (et sur XeTeX pour les scripts tels que le japonais). Il est désormais gelé et uniquement entretenu.
- MkIV — la réécriture de l'ère Lua exécutée sur LuaTeX. Introduit en 2007, il exploite les polices Unicode, OpenType et les scripts Lua. Lui aussi est en grande partie gelé.
- LMTX (en interne MkXL) — la ligne actuelle recommandée, fonctionnant sur LuaMetaTeX. Disponible depuis 2019, c’est là que le développement actif se poursuit.
L'élément clé ici est LuaMetaTeX. Il s'agit d'un moteur allégé que Hans Hagen et les développeurs de ConTeXt ont reconstruit spécifiquement pour ConTeXt, en tant que successeur de LuaTeX. Il supprime délibérément la sortie PDF (le backend), la gestion des polices et de nombreuses primitives de LuaTeX, laissant celles-ci à implémenter du côté ConTeXt (Lua) — une conception audacieuse. Il n'a aucune dépendance vis-à-vis de bibliothèques externes, ne nécessite aucun écosystème de construction complexe et est porté sur tous les systèmes d'exploitation avec un minimum d'effort : un successeur épuré et autonome.
LuaMetaTeX est maintenu par le groupe ConTeXt lui-même, et pour l'instant ConTeXt (LMTX) est effectivement la seule chose qui le met réellement à profit. Si vous débutez avec ConTeXt, LMTX est le choix standard.
Intégration profonde de MetaPost
Aucun compte de ConTeXt n'est complet sans sa fusion avec MetaPost. MetaPost est un langage de programmation pour des chiffres précis, issu du METAFONT de Knuth. ConTeXt intègre MPlib en son cœur — MetaPost transformé en une bibliothèque réutilisable, séparée par Taco Hoekwater et Hans Hagen en 2007 — afin que vous puissiez écrire du code MetaPost directement dans un document et dessiner des figures à la volée, au cours de la même compilation.
Dans l'ancien MkII, dessiner des figures au moment de l'exécution ralentissait l'exécution de TeX ou nécessitait de générer des fichiers PostScript intermédiaires entre les exécutions. MPlib a rendu cela possible directement au moment de l'exécution, donnant naissance à une culture de dessin distinctement ConTeXt dans laquelle même les éléments de page (règles, arrière-plans, ornements) sont générés dynamiquement avec MetaPost.
Un exemple minimal
Pour avoir une idée, voici le plus petit document ConTeXt compilé. Le corps va de \starttext à \stoptext. Il n’y a pas de déclaration obligatoire de classe de document comme dans LaTeX de LaTeX ; vous configurez l'apparence dont vous avez besoin en haut avec les commandes \setup....
\setuppapersize[A4]
\setupbodyfont[12pt]
\starttext
\startsection[title=はじめに]
Hello, \ConTeXt! 数式もそのまま組めます:
\startformula
E = mc^2
\stopformula
\stopsection
\stoptextIci, \setuppapersize sélectionne A4, \setupbodyfont définit un corps de 12 points et \startsection ouvre une section intitulée « Introduction ». Une équation affichée va dans \startformula … \stopformula. Les rôles correspondent à \section{…} et \[ … \] de LaTeX, mais vous pouvez voir que le style d'écriture suit l'idiome \start…/\stop….
# ConTeXt は context コマンドで処理する / compile with the context command
context first-context.tex
# => first-context.pdfLe point important est que vous n'exécutez pas pdflatex ou lualatex ici. ConTeXt n'est pas le format LaTeX, même si le fichier peut toujours se terminer par .tex ; remettez-le à la commande context. Mettez « construire ce document avec context main.tex » dans README afin que les collaborateurs et CI n'utilisent pas accidentellement une commande LaTeX.
LaTeX et ConTeXt côte à côte
Pour ceux qui sont habitués à LaTeX, voici quelques idiomes représentatifs côte à côte. La pensée est similaire, mais le vocabulaire et les conventions diffèrent.
| LaTeX | ConTeXt | Objectif |
|---|---|---|
\begin{document} | \starttext | Commencer le corps |
\section{…} | \section{…} / \startsection | Un titre de section |
\[ … \] | \startformula … \stopformula | Une équation affichée |
geometry など | \setuppapersize et autres \setup... | Papier et mise en page |
Quand le choisir
- Mise en page élaborée ou automatisée. Les conceptions de pages complexes ou la composition générée en masse à partir de données bénéficient de son contrôle cohérent.
- Présentations. Il dispose de modes de diapositives dédiés et MetaPost peut créer une ornementation dynamique.
- Publication à partir de XML. ConTeXt dispose d'une puissante fonction de traitement de XML et convient parfaitement aux flux de travail qui lisent et composent directement XML.
- Intégration de dessins. Avec MetaPost intégré, les figures et le texte peuvent vivre dans une seule source.
Il y a cependant des mises en garde. La communauté est beaucoup plus petite que celle de LaTeX et il y a moins de packages tiers. Les modèles de journaux, les didacticiels et les questions-réponses accumulées sont plus limités que pour LaTeX. Ainsi, dans la pratique, la plupart des utilisateurs universitaires choisissent toujours LaTeX pour les articles et les thèses. Considérez ConTeXt comme une option spécialisée qui correspond parfaitement à son type de travail.
Comment l'obtenir
ConTeXt est livré avec la distribution standard TeX Live, et le moteur LuaMetaTeX est inclus depuis TeX Live 2023, donc une installation normale de TeX Live vous donne également LMTX (le TeX Live actuel est l'édition 2026). Si, à la place, vous souhaitez suivre le tout dernier ConTeXt, l'itinéraire habituel est le propre ConTeXt Standalone (maintenant distribué sous le nom de LMTX) du groupe - un ensemble léger, uniquement ConTeXt, qui est mis à jour fréquemment.
Démarrer un premier chapitre dans ConTeXt
Lorsque vous essayez ConTeXt, mettez de côté l'habitude de LaTeX de rechercher un package supplémentaire. Construisez d'abord le corps avec \starttext, \startsection et \startitemize, puis rassemblez les marges, les polices et l'apparence du titre dans les commandes \setup... en haut. Ajoutez du style à mesure que le chapitre s'agrandit ; les paramètres restent en dehors de la prose, et modifier la conception de la page ultérieurement signifie regarder au même endroit.
- Les Soumissions de journaux doivent rester avec LaTeX lorsque le modèle requis est LaTeX.
- Les livrets, le matériel pédagogique et les catalogues dont vous êtes propriétaire de la conception des pages bénéficient du modèle de configuration intégré de ConTeXt.
- Les chiffres provenant de la même source que la prose sont une bonne raison d'essayer l'intégration MetaPost dès le début.