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:
- ga lahko uporabljamo kot visok risarski jezik za pripravo slik;
- predela dane opise v PostScript;
- pozna tudi barve in nekatere druge zahtevnejše slikovne
sestavine.
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;