Introduction à Metapost
Table des matières
Metapost est un langage de programmation pour construire des figures 2d (langage qui dérive de Metafont développé par Donald Knuth: créateur de TeX). Contrairement à un logiciel WYSIWYG (What You See Is What You Get), metapost interprète un ensemble de commandes pour tracer une figure. Ce langage est donc surtout adapté pour construire des figures dans lesquelles l'utilisation des mathématiques est nécessaires.
Avec metapost vous allez apprendre à dessiner avec le clavier !
Metapost a de nombreux avantages:
- disponible gratuitement
- facilité d'apprentissage
- extensible (macros 3d par exemple)
- possibilité d'intégrer des équations LaTeX
- possibilité de faire des figures animées
- etc
Installation de Metapost
Pour installer metapost la meilleure option est d'installer une distribution Tex comme TexLive par exemple.
Installation sous Windows
Installation sous Mac OS
Etape 1: Téléchargez le package MacTeX.pkg puis installez la distribution LaTeX sur votre machine. (l'operation d'installation est automatique et devrait prendre que quelques minutes)
Remarques: le package MacTeX.pkg faisant environ 2GB, le temps de téléchargement peut être long.
Etape 2: Téléchargez un éditeur TeX pour Mac OS X. (comme par exemple TeXShop)
Remarques: cette étape n'est pas obligatoire mais ces éditeurs ont été développés spécialement pour vous aider lors de l'utilisation de tex (rédaction de document latex, etc).
Installation sous Linux
Bien démarrer avec Metapost
Pour débuter avec metapost il existe le manuel de John D. HOBBY (traduit en Français par Pierre FOURNIER Jean-Come Charpentier), mais aussi les sites Syracuse (qui contient de nombreux exemples) et TeXUsersGroup (en anglais qui contient des tutoriels et des exemples). Ci-dessous nous allons parcourir quelques points essentiels pour débuter avec metapost.
Premier dessin avec metapost
Pour illustrer comment travailler avec metapost,
analysons les différentes étapes permettant de reproduire
l'image ci-contre.
Etape 1: créez un fichier vide (soit avec un éditeur de texte quelconque, soit avec un éditeur de texte latex comme TeXnicCenter (windows), TeXShop (Mac), etc).
Le choix de l'éditeur de texte latex n'a pas vraiment d'importance mais dépend uniquement de vos préférences personnelles.
Etape 2: éditez le fichier.
Le fichier (image.mp) va comprendre un ensemble de commandes interprétables directement par metapost. Pour reproduire l'image ci-dessus vous pouvez recopier les lignes suivantes dans le fichier image.mp:
beginfig(1) ;
u=1cm ;
draw (2u,2u) -- (0,0) -- (0,3u) -- (3u,0) -- (0,0);
pickup pencircle scaled 4pt;
for i=0 upto 2 :
for j=0 upto 2 :
draw (i*u,j*u);
endfor
endfor
endfig ;
Etape 3: sauvegardez votre fichier (et ajouter l'extension .mp pour indiquer qu'il s'agit d'un fichier metapost).
L'extension .mp n'est pas obligatoire mais est surtout pratique pour se rappeler qu'il s'agit d'un fichier source metapost.
Etape 4: appelez metapost.
Pour appeler metapost, il existe plusieurs possibilités:
-
soit votre éditeur de texte latex peut le faire pour vous (par exemple
avec TeXShop (sur Mac) il suffit de sélectionner Metapost et d'appuyer
sur le bouton soumission et vous avez terminé). -
soit vous passez par votre invite de commandes et taper
mpost cercle.mp
Remarques: si vous obtenez le message d'erreur: "command not found"
c'est que votre ordinateur n'a pas trouvé la commande mpost. Dans ce cas vous devez mettre à jour votre PATH ou tapez le chemin
complet vers la commande mpost (faite une recherche sur votre ordinateur pour déterminer sous quel répertoire est mpost, cela devrait ressembler à
quelque chose comme: "/usr/local/texlive/2009/bin/universal-darwin/mpost")
L'appel de metapost produit alors les fichiers image.1 (celui qui contient les informations sur l'image) et image.log (qui comprend les messages d’erreur). Pour insérer cette image dans un document latex il suffit alors
de remplacer l'extension .1 du fichier image.1 par un .mps et d'utiliser les
commandes suivantes dans le document latex:
\begin{figure}
\includegraphics{image.mps}
\end{figure}
Pour transformer ce fichier metapost image.1 dans un autre format
(comme le format postscript) il est nécessaire de faire quelques opérations
supplémentaires qui sont présentées dans la prochaine section.
Obtenir un fichier au format postscript
Pour cela,
téléchargez le fichier intitulé mpimage.tex et placez ce dernier dans le même
répertoire que le fichier image.mp
Remarque: si vous avez appelé metapost par l'intermédiaire
d'un éditeur de texte latex, il est possible que celui-ci vous retourne
directement le fichier dans un format plus commun comme pdf, eps, etc.
Dans ce cas, vous pouvez sauter cette section.
Pour transformer le fichier image metapost image.1, il suffit alors d'appeler tex:
tex mpimage image.1,1
puis dvips
dvips -ta4 mpimage.dvi -o
Un nouveau fichier doit alors apparaitre dans votre répertoire courant
intitulé mpimage.ps
Remarque: une fois votre image au format postscript (ps) il est relativement facile de transformer celle-ci dans d'autres formats
a l'aide par exemple de imagemagick.
De plus, vous pouvez automatiser l'ensemble des commandes que nous venons de voir à l'aide d'un simple script:
#!/bin/sh
mpost image.mp
tex mpimage image.1,1
dvips -ta4 mpimage.dvi -o
Insérer des équations mathématiques
Un des avantages de metapost est de pouvoir facilement insérer des
équations mathématiques en passant par l'intermédiaire de LaTeX.
Pour cela, il suffit de placer au début de votre code metapost les lignes suivantes:
verbatimtex
%&latex
\documentclass{article}
\usepackage[english,frenchb]{babel}
\begin{document}
et de terminer le code par
\end{document}
Vous pouvez alors insérer sur votre image des équations
mathématiques en tapant simplement:
label(btex $mon equation latex$ etex,z1);
ou z1 est la position de l'équation sur l'image.
Ci dessous, un exemple complet permettant de
reproduire l'image ci-contre.
verbatimtex
%&latex
\documentclass{article}
\usepackage[english,frenchb]{babel}
\begin{document}
etex
numeric u;
u=1cm;
beginfig(1);
z0=(0u,0u);
z1=(1u,0u);
z2=(0u,1u);
z3=(-1u,0u);
z4=(0u,-1u);
draw z1..z2..z3..z4..z1..cycle;
pickup pencircle scaled 2pt;
draw z0;
label.bot(btex $x^2+y^2=r^2$ etex,z4);
label.bot(btex $0$ etex,z0);
endfig;
\end{document}
Continuer à découvrir Metapost
Cet article a introduit les points essentiels pour démarrer avec metapost
Dans les prochains articles nous aborderons d'autres points comme:
- faire des figures 3d avec metapost,
- quelques conseils pour bien utiliser metapost,
- etc
Références
Liens | Site |
---|---|
Syracuse | contient de nombreux exemples illustrant les possibilités de metapost |
CTAN | Comprehensive TeX Archive Network |
TeXUsersGroup | Page dédiée à metapost sur le site des utilisateurs de TeX |