Praktikum 8
Metaposti joonised (Postscript)
Võtke fail joonised.tex ja koostage sinna nõutavad MetaPost-keeles joonised. Näidiseks on fail joonised_naidis.pdf.
Lisapaketid:
GeometriePlus.mp,
geometry2d.mp -- lisapaketid geomeetria konstruktsioonide arvutamiseks (lõikepunktid, sise- ja ümberringjooned jms)
labelauto.mp -- lisapekett teksti lisamiseks
Kompileerimine käsureal: mpost joonis.mp või mpost -tex=latex joonis.mp või mpost --tex=latex joonis.mp
MetaPosti käsud
beginfig(5); . . . endfig;joonis nr. 5, kompileerimisel tekibjoonis.5- muutujate tüübid:
numeric x;muutujaxtüübiks on reaalarvpair A;muutujaAtüübiks on punktpath p;muutujaptüübiks on joon
x := 5;omistamineA:=0.3[B,C]tähendab punkti lõigul BC, kus B poole jääb 0,3 osa ja C poole 1-0,3 osa- joone konstrueerimine
(0cm,2cm)--(3cm,4cm)..(-5cm,1cm)--cycle--määrab ühenduslüliks sirglõigu,..määrab ühenduslüliks kõverjoone,cyclenäitab, et algus- ja lõpp-punkt langevad kokku
fullcircle scaled (4cm)ringjoon läbimõõduga 4 cmp shifted (1cm,-3cm)joonpnihutatud vektori (1cm,-3cm) võrrap rotated 45joonppööratud 45 kraadi vastupäeva ümber nullpunkti
fill p withcolor (1, 0.8, 0.8);täitmisvärv RGB-süsteemis (kanalid skaalal 0-st 1-ni)- joone joonistamine
draw p;joonistab joonepdraw p withpen pencircle scaled 2pt;joonetüüp (circle-ümar, square-kandiline), -paksus
- tsükkel:
for i := 0 upto 5: draw (i*1cm, 4cm)--(i*1cm,5cm); endfor;
- valiklause:
if (i > 3): draw (i*1cm, 4cm)--(i*1cm,5cm); fi;
- Teksti lisamine
label(btex $\frac{1}{2}$ etex, (3cm, 1cm));tekst 1/2 antud punktislabel.top,label.bot,label.rt,label.lft,label.ulftjne teksti asukoht punkti suhteslabel.autotekst pannakse punkti lähedale sinna, kus on tühja ruumi (vajab paketti labelauto)circlabel.autopunkti kohale rõngas
input labelauto;paketti lisamine- lisaseadistused ja makrod, mõjuvad kõigile tekstidele
verbatimtex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[estonian]{babel}
\usepackage{mathpazo}
\begin{document}
etex;
Metaposti joonised (PDF)
NB! Metaposti joonised joonis.1, joonis.2 jne on küll PostScript-vormingus vektorgraafika pildid, aga sealt on puudu fontide info. Seetõttu ei saa neid vahetult konverteerida PDF-ks (näiteks Ghostscriptiga).
Metaposti jooniste PDF vormingusse viimiseks on kaks võimalust.
Võimalus 1. Paigutada joonise lähtekoodi algusse järgmine abifunktsioon:
def genereeri(expr w, h, base) =
begingroup
write "\documentclass{article}" to base&".tex";
write "\usepackage{geometry}" to base&".tex";
write "\usepackage[pdftex]{graphicx}" to base&".tex";
write "\DeclareGraphicsRule{*}{mps}{*}{}" to base&".tex";
write "\geometry{papersize={"& decimal(ceiling(w)) & "bp," &%
decimal(ceiling(h)) & "bp}}" to base&".tex";
write "\geometry{margin={0bp,0bp}}" to base&".tex";
write "\geometry{noheadfoot,nomarginpar}" to base&".tex";
write "\begin{document}" to base&".tex";
write "\thispagestyle{empty}" to base&".tex";
write "\noindent\includegraphics{" & jobname & "." &%
decimal(charcode) & "}" to base&".tex";
write "\end{document}" to base&".tex";
write EOF to base&".tex";
endgroup
enddef;
Iga joonise lõppu (vahetult ENNE endfig; käsku) paigutage järgmine kood:
numeric w,h; w := xpart urcorner bbox currentpicture -% xpart llcorner bbox currentpicture; h := ypart urcorner bbox currentpicture -% ypart llcorner bbox currentpicture; string base; base:=jobname&"_"&decimal(charcode); genereeri(w, h, base);
Tulemusena tekib lisaks failidele joonis.1, joonis.2 jne, ka failid joonis_1.tex, joonis_2.tex, mida saab kompileerida käsuga pdflatex. Sellega saadakse joonised PDF-failidena kujul joonis_1.pdf, joonis_2.pdf jne.
Võimalus 2. Arvutisse peab olema paigaldatud Perl.
Käsureal tuleb anda käskmptopdf fail.mp
Nende käskude tulemusena teostatakse enam-vähem samad operatsioonid, nagu "Võimalus 1" juures märgitud, automaatselt.
NB! Kodutöö lahendamisel tuleb projekti koosseisu paigutada Metaposti lähtekood ning ükskõik millisel ülaltoodud meetodil saadud PDF.