ConTeXt/Introduction à MetaPost dans ConTeXt
← Tables des matières multiples et spécialisées
• Dessiner avec MPGraphics →
Retour vers le sommaire de ConTeXt
Objectifs de cette section
Cette page introduit MetaPost dans le contexte de ConTeXt.
Elle explique :
- ce qu’est MetaPost et pourquoi il est intégré à ConTeXt ;
- la différence entre MetaPost « externe » et MetaPost « interne » ;
- comment insérer un bloc MetaPost dans un document ConTeXt ;
- comment produire ses premiers dessins (lignes, cercles, chemins, couleurs) ;
- comment utiliser l’environnement
MPpageetMPgraphic.
Introduction à MetaPost dans ConTeXt
[modifier | modifier le wikicode]MetaPost est un langage de dessin vectoriel dérivé de Metafont et largement utilisé pour produire des figures de haute qualité typographique. ConTeXt intègre MetaPost de manière native et permet :
- d’appeler MetaPost directement dans un document,
- de générer des illustrations vectorielles à la volée,
- d’utiliser des macros graphiques ConTeXt (MPgraphics),
- d’insérer ces dessins comme des figures,
- d’automatiser la production graphique.
MetaPost fait donc partie intégrante de l’écosystème ConTeXt.
1. MetaPost : externe ou interne ?
[modifier | modifier le wikicode]Il existe deux manières d’utiliser MetaPost :
1.1 MetaPost externe (fichiers .mp)
[modifier | modifier le wikicode]On écrit du code MetaPost dans un fichier externe :
dessin.mpque l’on compile séparément avec :
mpost dessin.mp
et dont on insère ensuite le résultat (fichier .mps) dans ConTeXt :
\externalfigure[dessin.1]
1.2 MetaPost interne (intégré dans ConTeXt)
[modifier | modifier le wikicode]ConTeXt permet aussi d’écrire du MetaPost à l’intérieur même du document, ce qui est très pratique.
Il existe deux environnements :
\startMPpage ... \stopMPpage
→ produit une page entière dessinée en MetaPost ;
\startMPcode ... \stopMPcode
→ produit un dessin intégré dans le flux du document.
ConTeXt s’occupe de compiler le code MetaPost et d’insérer l’image résultante.
2. Premier exemple simple
[modifier | modifier le wikicode]Voici un dessin minimal en MetaPost intégré :
\startMPcode
draw (0,0)--(100,0)--(100,50)--cycle;
\stopMPcode
Ce code produit un simple triangle.
MetaPost utilise une syntaxe géométrique :
- les points sont écrits
(x,y) --dessine un segment..dessine une courbe lisséecycleferme la figure
3. Exemple avec couleurs et tracés
[modifier | modifier le wikicode]\startMPcode
pickup pencircle scaled 1.2pt ;
draw (0,0)..(40,30)..(80,0) withcolor (0,0,1) ;
draw fullcircle scaled 40 withcolor (1,0,0) shifted (100,0) ;
\stopMPcode
Ici :
withcolor (r,g,b)définit une couleur RGB,pickupchoisit un style de plume,fullcircle scaled 40dessine un cercle de diamètre 40,shifted (100,0)décale le dessin.
4. MetaPost en page entière : MPpage
[modifier | modifier le wikicode]Pour produire une page entièrement graphique, on utilise :
\startMPpage
draw fullcircle scaled 200 ;
label(btex Bonjour MetaPost ! etex, (0,0));
\stopMPpage
L’instruction btex ... etex permet d’insérer du texte ConTeXt/TeX dans un dessin MetaPost.
5. Utiliser MPgraphics
[modifier | modifier le wikicode]ConTeXt propose aussi un système pratique pour définir des dessins réutilisables :
\startuseMPgraphic{carre}
draw unitsquare scaled 2cm;
\stopuseMPgraphic
On l’utilise ensuite comme une figure :
\useMPgraphic{carre}
On peut donc composer une “bibliothèque interne” de graphiques vectoriels.
6. Intégration dans des figures
[modifier | modifier le wikicode]Un dessin MetaPost peut être placé dans une figure flottante :
\placefigure[here][fig:mp]
{Dessin MetaPost}
{\startMPcode
draw fullcircle scaled 60;
\stopMPcode}
Et référencé normalement :
Voir la figure \in[fig:mp].
7. Quand utiliser MetaPost dans ConTeXt ?
[modifier | modifier le wikicode]MetaPost est particulièrement adapté pour :
- les schémas géométriques,
- les graphiques vectoriels précis,
- les diagrammes conceptuels,
- les illustrations mathématiques,
- les décorations typographiques,
- les logos paramétriques,
- les figures répétées avec variations automatiques.
MetaPost permet de définir des figures algorithmiquement, ce qui assure cohérence et reproductibilité.
💡 Astuce
Pour tester rapidement du code MetaPost dans ConTeXt :
Utilisez \startMPcode dans un document minimal et recompilez.
C’est idéal pour expérimenter pas à pas.
⚠ Problème courant
Si votre code MetaPost ne produit rien, vérifiez :
- la présence de
\stopMPcode; - l’absence d’erreur de parenthèses (MetaPost est strict !) ;
- les coordonnées (un dessin entièrement hors page ne s’affiche pas).
⚠ Avertissement
Évitez de mélanger trop de logique TeX dans un bloc MetaPost.
Utilisez btex … etex exclusivement pour les textes à insérer, et laissez MetaPost gérer les tracés.
← Tables des matières multiples et spécialisées • [[ConTeXt/Dessiner_avec_MPGraphics|Dessiner avec M]()]()