MetaPost - MetaPost
| Paradigma | imperativo , impaginazione |
|---|---|
| Progettato da | John D. Hobby |
| Sviluppatore | Taco Hoekwater, Luigi Scarso |
| Apparso per la prima volta | 1994 |
| Rilascio stabile | 1.8 / 17 giugno 2013
|
| Rilascio in anteprima | 2.0rc2 / 19 febbraio 2018
|
| Disciplina di digitazione | anatra , dinamico , forte |
| OS | Multipiattaforma |
| Licenza | LGPL |
| Sito web | tug |
| Influenzato da | |
| Metafont | |
MetaPost si riferisce sia a un linguaggio di programmazione che all'interprete del linguaggio di programmazione MetaPost. Entrambi sono derivati da Donald Knuth 's Metafont linguaggio e interprete. MetaPost produce diagrammi grafici vettoriali da una descrizione geometrica/algebrica. Il linguaggio condivide la sintassi dichiarativa di Metafont per la manipolazione di linee, curve, punti e trasformazioni geometriche. Però,
- Metafont è impostato per produrre font, sotto forma di file immagine (in formato .GF) con i file del font metriche associate (in formato file .tfm), mentre MetaPost produce EPS , SVG o PNG file
- L'output di Metafont è costituito dai caratteri a una risoluzione fissa in un formato basato su raster, mentre l'output di MetaPost è una grafica vettoriale (linee, curve di Bézier )
- L' output di Metafont è monocromatico, mentre MetaPost utilizza i colori RGB o CMYK .
- Il linguaggio MetaPost può includere etichette di testo sui diagrammi, stringhe da un font specificato o qualsiasi altra cosa che può essere composta con TeX .
- A partire dalla versione 1.8, Metapost consente l'aritmetica in virgola mobile con 64 bit (impostazione predefinita: aritmetica in virgola fissa a 32 bit)
Molte delle limitazioni di MetaPost derivano dalle funzionalità di Metafont. Ad esempio, MetaPost non supporta tutte le funzionalità di PostScript . In particolare, i percorsi possono avere un solo segmento (in modo che le regioni siano semplicemente collegate ) e le regioni possono essere riempite solo con colori uniformi. Il livello 1 di PostScript supporta i modelli affiancati e il PostScript 3 supporta l'ombreggiatura Gouraud .
Disponibilità e utilizzo
MetaPost è distribuito con molte distribuzioni del framework TeX e Metafont , ad esempio è incluso nelle distribuzioni MiKTeX e TeX Live .
Il postscript incapsulato prodotto da Metapost può essere incluso nei documenti LaTeX , ConTeXt e TeX tramite comandi di inclusione grafica standard. L'output postscript incapsulato può essere utilizzato anche con il motore PDFTeX , fornendo così direttamente PDF . Questa capacità è implementata in ConTeXt e nel pacchetto grafico LaTeX e può essere utilizzata da semplice TeX tramite il file macro supp-pdf.tex.
ConTeXt e LuaTeX supportano l'inclusione del codice MetaPost all'interno del file di input. L'inclusione del codice MetaPost in LaTeX è possibile anche utilizzando i pacchetti LaTeX, ad esempio gmp o mpgraphics .
Esempi
Questo è un singolo file esempio.mpche quando processato dall'interprete MetaPost (tramite il comando mpostsu Linux ) produce tre file epsEsempio 1, esempio.2, esempio.3. Questi sono raffigurati a destra.
transform pagecoords;
pagecoords:=identity scaled 10mm shifted (100mm,150mm);
beginfig (1)
fill ((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--cycle)
transformed pagecoords withcolor green;
draw ((2,0)..(2,1)..(1,1)..(1,2)..(0,2))
transformed pagecoords;
drawarrow ((0,0)--(2,2)) transformed pagecoords;
endfig;
beginfig (2)
draw (for i=0 upto 7: dir (135i)-- endfor cycle)
transformed pagecoords;
endfig;
pagecoords:=identity scaled 15mm shifted (100mm,150mm);
beginfig (3);
% declare paths to be used
path p[],p[]t;
% set up points by defining relationships
z1=(0,0); z2=z1+2up;
z3=z1+whatever*dir (60)=z2+whatever*dir (-50);
z4=z3+(-1.5,-.5);
z5=z1+dir (135);
z0=whatever[z1,z2]=whatever[z3,z4];
% set up paths
p0=fullcircle yscaled .5 rotated 45 shifted z0 ;
p1=z2---z4..z0..z3---z1;
p2=p1 cutbefore p0 cutafter p0;
p3=p0 cutbefore p1 cutafter p1;
p4=p2---p3---cycle;
% define transformed versions of paths and points
for i=0 upto 4: p[i]t=p[i] transformed pagecoords; endfor
for i=0 upto 5: z[i]t=z[i] transformed pagecoords; endfor
% do some drawing
fill p4t withcolor (1,1,0.2);
draw z1t---z2t withcolor .5white;
draw z3t---z4t withcolor .5white;
pickup pencircle;
draw p0t dashed withdots scaled .3;
draw p1t dashed evenly;
draw p2t withcolor blue;
draw p3t withcolor red;
label.lrt (btex $z_0$ etex, z0t);
label.llft (btex $z_1$ etex, z1t);
label.top (btex $z_2$ etex, z2t);
label.rt (btex $z_3$ etex, z3t);
label.llft (btex $z_4$ etex, z4t);
for i=0 upto 4:
drawdot z[i]t withpen pencircle scaled 2;
endfor
endfig;
bye
I tre file EPS risultanti possono essere utilizzati in TeX via LaTeX 's \includegraphicscomando, contesto ' s \externalfigure, di Plain TeX \epsfboxdi comando, o (in Plain pdftex) il \convertMPtoPDFcomando dasupp-pdf.tex. Per visualizzare o stampare il terzo diagramma, questa inclusione è necessaria, poiché i caratteri TeX ( Computer Modern ) non sono inclusi nei file eps prodotti da MetaPost per impostazione predefinita.
Guarda anche
Riferimenti
- Hagen, Hans. "MetaFun" (moduli per Metapost).
- Knuth, Donald (1986). Il METAFONTbook . Computer e impaginazione . c . Addison-Wesley . ISBN 0-201-13444-6.
- " Rete completa di archivi di T E X" ( CTAN ). Repository del sorgente T E X e centinaia di componenti aggiuntivi e file di stile.
- "(La)TeX Navigator fornisce 305 semplici esempi MetaPost" . Archiviato dall'originale il 27-07-2013 . Estratto il 17-11-2006 .
- Hoekwater, Taco (2006). "Sviluppi MetaPost-autunno 2006" (PDF) . Rimorchiatore . 27 (1).
link esterno
- Il gruppo utenti TeX ( TUG ) http://www.tug.org/ ha una pagina dedicata a MetaPost: http://www.tug.org/metapost.html
- Lo sviluppo attivo di MetaPost continua su https://web.archive.org/web/20070929092912/http://foundry.supelec.fr/projects/metapost/
- MetaPost funzionale consente di utilizzare MetaPost dal linguaggio di programmazione funzionale Haskell
- John D. Hobby ha una homepage su https://web.archive.org/web/20131003040005/http://ect.bell-labs.com/who/hobby/index.shtml e alcune altre pagine e pubblicazioni dedicate a MetaPost , anche se ora sono un po' datati
- Homepage storica di MetaPost: https://web.archive.org/web/20081212090123/http://ect.bell-labs.com/who/hobby/MetaPost.shtml
- Manuale dell'utente per MetaPost John D. Hobby. Disponibile come file mpman.ps distribuito con MetaPost o dal sito web dei Bell Labs . Disponibile anche in formato PDF da CTAN .
- Anteprima MetaPost online di Troy Henderson