CransWiki:

Présentation

Metapost est un système permettant de construire des figures au format Postscript afin de faciliter leur utilisation ultérieure dans un document LaTex (par exemple). Ce programme est dérivé de Metafont qui permet de créer des fontes, mais à la différence de ce dernier qui génère des bitmaps à résolution fixe, metapost travaille en vectoriel.

L'utilisation de ce programme est recommandée lorsque l'on s'intéresse à l'esprit du dessin (sa structure), plutôt que simplement à son apparence. Ce n'est pas un programme cliquodrome, mais cela ressemble plutôt à de la programmation (ou au moins description par une syntaxe précise). De plus, les fichiers engendrés sont de bonne qualité visuelle (sauf si comme avec Latex vous demandez explicitement le contraire).

C'est tellement puissant, que cela ne se limite pas à la création de simple dessins, mais on peut aussi faire de animations (cf liens).

Installation

À priori aucune ! Si vous avez déjà installé LaTex, metapost est aussi installé (en tout cas avec Debian et avec Miktex sous Windows).

Utilisation

En console (ou invite de commandes pour Windows), dans le répertoire contenant le fichier fichier.mp :

mpost fichier.mp

Exemple pratique d'un fichier

Il y en a tout plein sur http://zoonek.free.fr/LaTeX/Metapost/metapost.html.

Néanmoins, il y a un cas couramment utilisé de graphiques qui ne possède pas d'exemple sur cette page : la création de graphiques à partir d'un fichier de données. C'est ce cas que je vais décrire ci-dessous. On va pour cela utiliser l'extension graph.

Contexte

Suposons que vous possédez un fichier contenant en colonnes les échantillons de différentes tensions (B4 powered) tous les quart d'heures sur une journée (entre 0h et 24h). On va dire que vous n'êtes intéressés que par les valeurs de la 2ème à la 10ème colonne (afin d'illustrer le choix de colonnes). Vous voulez l'axe horizontal gradué en heures, un choix automatique de l'échelle de l'axe vertical, des légendes et on va même demander la légende de l'axe vertical tournée de 90° afin de prendre moins de place en largeur. Les dimensions (10cm x 4cm) représentent les dimensions du graphiques sans les légendes (donc il sera un peu plus grand).

Ma vie

C'est à cause de cet exemple que je me suis mis à metapost. La réalisation de ce graphe était possible avec un tableur, mais j'ai horreur de ce genre de logiciel qui convertissent mes nombres en date sans que je le demande. De plus, en cas de changement de fichiers de données, il faut recommencer la manipulation, alors que je voulais une solution automatisable (et qui fonctionne aussi bien sous GNU/Linux que sous Windows). J'ai bien pensé à gnuplot mais cela faisait un programme suplémentaire à installer. C'était également possible avec Matlab ou GNU/Octave, mais pas vraiment top. Metapost m'a vraiment bien plu une fois passé la barrière de l'apprentissage initial (et en plus il était déjà installé).

Fichier metapost

input graph;

beginfig(1)
  draw begingraph(10cm,4cm)
    numeric t;
    t:=0;
    path p[];
    gdata("data0d.d",
      c,
      for j=2 upto 10 :
        augment.p[j](t,c[j]);
      endfor;
      t:=t+0.25;)
    for j=2 upto 10 :
      gdraw p[j];
    endfor
    glabel.bot(btex Time in hour etex, OUT);
    glabel.lft(btex Voltage in Volt etex rotated 90, OUT);
    setrange((0, whatever), (24, whatever));
  endgraph ;
endfig;

end

Intégration dans un fichier .tex

En théorie, les fichiers s'intègrent de la même manière que les autres graphiques avec la commande \includegraphics{fichier} . Cependant, les fichiers engendrés par metapost ont comme extension le chiffre correspondant à la figure (par exemple fichier.1 pour le cas ci-dessus). Une solution est de changer l'extension en .mps pour que pdflatex sache qu'il s'agit d'un fichier metapost. Mais cela est fastidieux. L'autre solution est de dire à pdflatex que tous les fichiers dont il ne connaît pas l'extension sont des fichiers metapost grâce à la directive suivante dans les en-têtes :

\DeclareGraphicsRule{*}{mps}{*}{}

Liens


CatégoriePagePublique

CransWiki: LaTex/MetaPost (dernière édition le 2008-12-10 20:16:15 par localhost)