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;
muutujax
tüübiks on reaalarvpair A;
muutujaA
tüübiks on punktpath p;
muutujap
tüü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,cycle
näitab, et algus- ja lõpp-punkt langevad kokku
fullcircle scaled (4cm)
ringjoon läbimõõduga 4 cmp shifted (1cm,-3cm)
joonp
nihutatud vektori (1cm,-3cm) võrrap rotated 45
joonp
pöö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 joonep
draw 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.ulft
jne teksti asukoht punkti suhteslabel.auto
tekst pannakse punkti lähedale sinna, kus on tühja ruumi (vajab paketti labelauto)circlabel.auto
punkti 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.