Aller au contenu

ConTeXt/Introduction à MetaPost dans ConTeXt

Un livre de Wikilivres.

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 MPpage et MPgraphic.

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.mp

que 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ée
  • cycle ferme 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,
  • pickup choisit un style de plume,
  • fullcircle scaled 40 dessine 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]()]()