METAPOST


v pripravi

D.E. Knuth je za pripravo pisav ustvaril program METAFONT. Ta iz opisov posameznih znakov na datoteki bla.mf oblike

 beginchar ("X", ... );
    opis znaka X
 endchar;
 ...
 end
 
in vzporedne informacije o lastnostih izhodne naprave ustvari na datoteki bla*.gf bitne slike opisanih znakov. Iz teh dobimo s programom gftopk stisnjene bitne slike znakov na datoteki bla*.pk. Glavna hiba METAFONTa je, da potrebujemo za različne izhodne naprave in različne velikosti pisav posebne datoteke *.pk

J.D. Hobby, baje soavtor METAFONTa, je leta 1992 predelal in dopolnil METAFONT, tako da:

METAPOST je vključen tudi v zbirko programov MiKTeX. Na datoteki z opisi slik bla.mp ga uporabimo z zahtevo
mp bla.mp
Če so opisi pravilni, mp ustvari eno ali več datotek z opisi slik v PostScriptu.

V TextPad vključimo METAPOST takole: Izberemo Configure/Preferences.../Tools. Nato nadaljujemo z izbiro New >>/Command in vnesemo ustrezne podatke iz tabele (pri zadnjih dveh je v tabeli obrnjen vrstni red):

 Menu text:      Command:   Initial folder:  Parameters:
 MetaPost        *\mp.exe   $FileDir         $FileName
 MetaPost/LaTeX  *\mp.exe   $FileDir         --tex=latex $FileName
 
Namesto * se vnese pot do datoteke mp.exe, ki jo izberemo z iskalnikom datotek po izboru možnosti New >>/Command. Praviloma se nahaja na ...texmf\miktex\bin.
Možnost MetaPost/LaTeX bomo potrebovali, če bomo hoteli vključiti v sliko besedilo (oznake) napisano v LaTeXu.

Preprosti primeri

Recimo, da imamo na datoteki primer01.mp naslednji preprosti opis slike beginfig(1); draw (0,0)..(50,20)..(40,30)..(30,20); endfig; end V sam jezik METAPOST se tu ne bomo spuščali - bralec se lahko z njim seznani v predstavitvi in zajetnem uporabniškem priročniku.

Zahteva mp primer01.mp nam na datoteki primer01.1 ustvari opis slike v PostScriptu:

%!PS %%BoundingBox: -1 -15 52 31 %%Creator: MetaPost %%CreationDate: 1999.01.06:1640 %%Pages: 1 %%EndProlog %%Page: 1 1 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash 1 setlinecap 1 setlinejoin 10 setmiterlimit newpath 0 0 moveto 15.60495 -27.51297 57.67432 -10.68521 50 20 curveto 48.71936 25.12053 45.12155 29.58069 40 30 curveto 34.29486 30.4671 29.5329 25.70514 30 20 curveto stroke showpage %%EOF Kot vidimo sega okvir slike tudi na negativno stran. Za lep prikaz uporabimo LaTeX. Na datoteki primer1.tex zahtevamo uokvirjen prikaz slike: \documentclass{article} \usepackage[dvips]{epsfig} \begin{document} \begin{figure} \centerline{\framebox{\epsfig{file=primer01.1}}} \caption{Primer 1.1} \end{figure} \end{document} Rezultat dobimo (latex in nato dvips) na datoteki primer1.ps.

Poglejmo še nekoliko zahtevnejši primer 2:

prologues := 1; beginfig(1); draw (0,0)..(50,20)..(40,30)..(30,20); endfig; beginfig(2); pickup pencircle scaled 2pt; draw (0,0)..(50,20)..(40,30)..(30,20)..cycle withcolor (1,0,0); endfig; beginfig(5); verbatimtex \documentclass{article} \begin{document} etex; draw (50,50)..(100,70)..(90,80)..(80,70)..cycle; u = 1mm; label.ulft(btex \Large \TeX : $\frac{a+b}{c}+\sqrt{a^2+b^2}$ etex,(50u,50u)); endfig; end V njem je kar nekaj novih sestavin.

Najprej opazimo, da opis sestavljajo 3 (nezaporedno) oštevilčene slike. Uganili ste, METAPOST bo ustvaril tri datoteke v PostScriptu primer02.1, primer02.2 in primer02.5.

Z oklepaji verbatimtex ... etex in btex ... etex lahko v opis vnesemo opis v (La)TeXu, kar nam z uporabo ukaza label.* omogoča opremljanje slike z oznakami. TeXovske sestavine se posebej oblikujejo z (La)TeXom in nato vključijo v PostScriptni opis. Če želimo uporabiti za to LaTeX moramo to posebej povedati s stikalom tex pri klicu programa

mp --tex=latex bla.mp
S tem smo pojasnili tudi drug ukaz pri povezavah s TextPadom.

Sam sem kar nekaj časa zapravil, preden sem ugotovil, da moram na začetek opisov postaviti prologues := 1; , če si želim dobljene datoteke ogledam s programom GSView.

Ko povežemo dobljene datoteke z LaTeXom dobimo enako kot prej skupni prikaz.

Če v napisu na tretji sliki vidite napisano črko p namesto kvadratnega korena, pomeni, da na vašem računalniku nimate povezanih PostScriptnih opisov TeXovih pisav (texmf\fonts\type1\public\cm) s programom GSview/GhostScript.

Še primer 3:

beginfig(1); pickup pencircle scaled 4pt yscaled .2pt rotated 60; n := 5; for i := (n*20) step -(n) until (n): draw (i,0)..(0,i)..(-i,0)..(0,-(i-n))..(i-n,0); endfor; endfig; end Rezultat.

Prikaz podatkov z datotek z grafi

Pokukajmo na področje miktex\metapost. Tu najdemo nekaj knjižnic ukazov v METAPOSTu. Med njimi je posebej zanimiva knjižnica GRAPH, ki vsebuje ukaze za prikaze zaporedij podatkov z raznovrstnimi (funkcijskimi) grafi. Primeri uporabe in rezultat.

Trirazsežni prikazi in animacija

Denis Roegel je ustvaril knjižnico ukazov za opis trirazsežnih prikazov. Njeno uporabo je prikazal na primeru pravilnih poliedrov. Izdelal je tudi ukaz, ki zaporedje slik predela v večslični GIF. Oglejte si dva primerka takih prikazov:

Poskusite sami


Kako?; TeXCeH;