LaTeX/Slika
picture okruženje omogućava programiranje slika direktno u LaTeX-u. Sa jedne strane, postoje veoma stroga ograničenja, kao što su nagibi delova linija kao i radijusi krugova koji su ograničeni na uzak izbor vrednosti. Sa druge strane, okruženje slike LaTeX2e-a donosi sa sobom u \qbezier komandi, "q" što označava kvadratnu. Dosta najčeće korišćenih krivih kao što su krugovi, elipse, i catenaries mogu se zadovoljavajući aproksimirati koristeći Bezijerove krive, ovo ipak zahteva matematički težak posao. Ako se koristi programski jezik kao Java za pravljenje \qbezier blokova LaTeX ulaznih fajlova, okruženje slike postaje moćno.
Iako je pravljenje slike direktno u LaTeX-u veoma ograničeno, i često oduzima dosta vremena, i dalje postoje razlozi da se slika baš u njemu pravi. Dokumenti pravljeni na ovaj način su "mali" u bajtovima, i nema dodatnih fajlova grafika koje moraju da idu uz fajl.
Paketi kao što su pict2e, epic, eepic ili pstricks poboljšavaju originalno okuženje slike, i dosta ojačavaju grafičku moć LaTeX-a.
Osnovne komande
uredipicture okruženje dostupno je u dosta LaTeX distribucija, bez potrebe za ubacivanjem dodatnih paketa. Ovo okrućenje pravi se pomoću ovih komandi
\begin{picture}(x, y)
...
\end{picture}
|
ili
\begin{picture}(x, y)(x0, y0)
...
\end{picture}
|
Prvi par, , utiče na rezervaciju, unutar dokumenta, pravougaonog prostora slike.
Opcioni drugi par, , dodeljuje proizvoljne kordinate donjem levom uglu zatvorenog pravougaonika .
Brojevi x, y, x0, y0 su brojevi (dužine) u jedinicama \unitlength
, koji se mogu uvek restartovati (ali ne u okruženju slike) sa komadama kao što su
\setlength{\unitlength}{1.2cm}
|
Osnovna vrednost \unitlength
je 1pt.
Većina komandi za crtanje ima jednu od dve forme
\put(x, y){object}
|
ili
\multiput(x, y)(dx, dy){n}{object}
|
Bezijerove krive su izuzetak. One se crtaju sa ovom komandom
\qbezier(x1, y1)(x2, y2)(x3, y3)
|
Sa paketom picture apsolutne dimenzije (na primer 15pt) i ekspresije su dozvoljene, zajedno sa brojevima relativnim na \unitlength
.
Linijski segmenti
urediLinijski segmenti crtaju se sledećim komandama:
\put(x, y){ \line(x1, y1){length} }
|
\line
komanda ima dva argumenta:
- vektor pravca,
- "dužinu" (otprilike: ovaj argument je vertikalna dužina u slučaju vertikalnih segmentnih linija i u svim ostalim slučajevima je horizontalna udaljenost linije, a ne dužina samog segmenta).
Komponente vektora dužine su ogranićene na intidžere (−6, −5, ... , 5, 6) i moraju da budu prosti brojevi (deljivi samo sa jedan). Donja figura ilustruje svih 25 mogućih naginih vrednosti u prvom kvadrantu. Dužina je reletivna u odnosu na \unitlength
.
\setlength{\unitlength}{5cm}
\begin{picture}(1,1)
\put(0,0){\line(0,1){1}}
\put(0,0){\line(1,0){1}}
\put(0,0){\line(1,1){1}}
\put(0,0){\line(1,2){.5}}
\put(0,0){\line(1,3){.3333}}
\put(0,0){\line(1,4){.25}}
\put(0,0){\line(1,5){.2}}
\put(0,0){\line(1,6){.1667}}
\put(0,0){\line(2,1){1}}
\put(0,0){\line(2,3){.6667}}
\put(0,0){\line(2,5){.4}}
\put(0,0){\line(3,1){1}}
\put(0,0){\line(3,2){1}}
\put(0,0){\line(3,4){.75}}
\put(0,0){\line(3,5){.6}}
\put(0,0){\line(4,1){1}}
\put(0,0){\line(4,3){1}}
\put(0,0){\line(4,5){.8}}
\put(0,0){\line(5,1){1}}
\put(0,0){\line(5,2){1}}
\put(0,0){\line(5,3){1}}
\put(0,0){\line(5,4){1}}
\put(0,0){\line(5,6){.8333}}
\put(0,0){\line(6,1){1}}
\put(0,0){\line(6,5){1}}
\end{picture}
|
Strelice
urediStrelice se crtaju sa komandom
\put(x, y){\vector(x1, y1){length}}
|
Za strelice, komponente vektora pravca su još uže ograničene nego li komponente linijskih segmenata, uglavnom na intidžere (−4, −3, ... , 3, 4). Komponente takođe moraju da budu prosti brojevi (deljii samo sa 1). primetite efekte \thicklines
komande na dve strlice koje pokazuju na gornji levi ugao.
\setlength{\unitlength}{0.75mm}
\begin{picture}(60,40)
\put(30,20){\vector(1,0){30}}
\put(30,20){\vector(4,1){20}}
\put(30,20){\vector(3,1){25}}
\put(30,20){\vector(2,1){30}}
\put(30,20){\vector(1,2){10}}
\thicklines
\put(30,20){\vector(-4,1){30}}
\put(30,20){\vector(-1,4){5}}
\thinlines
\put(30,20){\vector(-1,-1){5}}
\put(30,20){\vector(-1,-4){5}}
\end{picture}
|
Krugovi
urediKomanda
\put(x, y){\circle{diameter}}
|
Crta krug sa centrom (x, y) i prečnikom (ne poluprečnik) određenim sa diameter. Okruženje slike prima samo prečnike do 14mm, pa čak i ispod ove granice, nisu svi prečnici mogući. \circle*
komanda pravi diskove (ispunjene krugove). Kao u slučaju linijskih segmenata, morali biste da potražite dodatne pakete, kao što su eepic, pstricks, ili tikz.
\setlength{\unitlength}{1mm}
\begin{picture}(60, 40)
\put(20,30){\circle{1}}
\put(20,30){\circle{2}}
\put(20,30){\circle{4}}
\put(20,30){\circle{8}}
\put(20,30){\circle{16}}
\put(20,30){\circle{32}}
\put(40,30){\circle{1}}
\put(40,30){\circle{2}}
\put(40,30){\circle{3}}
\put(40,30){\circle{4}}
\put(40,30){\circle{5}}
\put(40,30){\circle{6}}
\put(40,30){\circle{7}}
\put(40,30){\circle{8}}
\put(40,30){\circle{9}}
\put(40,30){\circle{10}}
\put(40,30){\circle{11}}
\put(40,30){\circle{12}}
\put(40,30){\circle{13}}
\put(40,30){\circle{14}}
\put(15,10){\circle*{1}}
\put(20,10){\circle*{2}}
\put(25,10){\circle*{3}}
\put(30,10){\circle*{4}}
\put(35,10){\circle*{5}}
\end{picture}
|
Ovo je još jenda mogućnost u okviru okruženja slike. Ako se ne plašite neophodnih proračunavanja (ili ih ostavite da ih program odradi), poizvoljni krugovi i elipse mogu se zakrpiti pomoću Bezijerovih kvadratnih krivih . Pogledajte Graphics in LaTeX2e za primere i Java izvorne fajlove.
Tekst i formule
uredikao što ovaj primer pokazuje, tekst i formule mogu ze pisati u okruženju sa \put
komandom na uobičajen način:
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,5)
\thicklines
\put(1,0.5){\line(2,1){3}}
\put(4,2){\line(-2,1){2}}
\put(2,3){\line(-2,-5){1}}
\put(0.7,0.3){$A$}
\put(4.05,1.9){$B$}
\put(1.7,2.95){$C$}
\put(3.1,2.5){$a$}
\put(1.3,1.7){$b$}
\put(2.5,1.05){$c$}
\put(0.3,4){$F=\sqrt{s(s-a)(s-b)(s-c)}$}
\put(3.5,0.4){$\displaystyle s:=\frac{a+b+c}{2}$}
\end{picture}
|
\multiput and \linethickness
urediKomanda
\multiput(x, y)(dx, dy ){n}{object}
|
ima 4 argumenta: početnu tačku, vektor translacije od jednog objekta do drugog, broj objekata, i objekat koji se crta. \linethickness komanda odnosi se na horizontalne i vertikalne segmente, ali ne na kose segmente, a ni na krugove. Ali odnosi se,ipak, na Bezijerove kvadratne krive!
\setlength{\unitlength}{2mm}
\begin{picture}(30,20)
\linethickness{0.075mm}
\multiput(0,0)(1,0){26}%
{\line(0,1){20}}
\multiput(0,0)(0,1){21}%
{\line(1,0){25}}
\linethickness{0.15mm}
\multiput(0,0)(5,0){6}%
{\line(0,1){20}}
\multiput(0,0)(0,5){5}%
{\line(1,0){25}}
\linethickness{0.3mm}
\multiput(5,0)(10,0){2}%
{\line(0,1){20}}
\multiput(0,5)(0,10){2}%
{\line(1,0){25}}
\end{picture}
|
Ovali
urediKomanda
\put(x, y){\oval(w, h)}
|
ili
\put(x, y){\oval(w, h)[position]}
|
pravi oval centriran u (x, y) sa širinom w i visinom h. Opcioni argumenti pozicije b, t, l, r odnose se na "gore", "dole", "levo", "desno", i mogu niti kombinovani, kao što primer ilustruje. Debljina linije može da se kontroliše pomoću ove dve komande: \linethickness{''length''}
sa jedne strane, \thinlines
i \thicklines
sa druge. Dok se \linethickness{''length''}
odnosi na horizontalne i vertikalne linije (i kvadratne bezijerove krive), \thinlines
i \thicklines
se odnose na krivolinijske segmente kao i na krugove i ovale.
\setlength{\unitlength}{0.75cm}
\begin{picture}(6,4)
\linethickness{0.075mm}
\multiput(0,0)(1,0){7}%
{\line(0,1){4}}
\multiput(0,0)(0,1){5}%
{\line(1,0){6}}
\thicklines
\put(2,3){\oval(3,1.8)}
\thinlines
\put(3,2){\oval(3,1.8)}
\thicklines
\put(2,1){\oval(3,1.8)[tl]}
\put(4,1){\oval(3,1.8)[b]}
\put(4,3){\oval(3,1.8)[r]}
\put(3,1.5){\oval(1.8,0.4)}
\end{picture}
|
Više primena predefinisanih slikovnih sanduka
uredisanduk slike može se deklarisati komandom
\newsavebox{name}
|
pa se definiše sa
\savebox{name}(width,height)[position]{content}
|
i konačno proizvoljno crtan sa
\put(x, y){\usebox{name}}
|
Opcioni parametar pozicije ima efekat definisanja "tačke utočišta" savebox-a. U primeru postavljen je na "bl" koji postavlja tačku utočišta u dnu levog ugla savebox-a. Drugi odrednici pozicije su gore i desno.
ime argument se odnosi LaTeX skladišni bin i kao takav ima prirodu komande (što objašnjava kose crte u ovom primeru). Usandučene slike mogu se povezati: U ovom primeru, \foldera
se koristi u okvitu definicije \folderb
. \oval
komanda morala je se koristiti jer \line
komanda ne radi ako je dužina segmenta manja od 3 mm.
\setlength{\unitlength}{0.5mm}
\begin{picture}(120,168)
\newsavebox{\foldera}
\savebox{\foldera}
(40,32)[bl]{% definition
\multiput(0,0)(0,28){2}
{\line(1,0){40}}
\multiput(0,0)(40,0){2}
{\line(0,1){28}}
\put(1,28){\oval(2,2)[tl]}
\put(1,29){\line(1,0){5}}
\put(9,29){\oval(6,6)[tl]}
\put(9,32){\line(1,0){8}}
\put(17,29){\oval(6,6)[tr]}
\put(20,29){\line(1,0){19}}
\put(39,28){\oval(2,2)[tr]}
}
\newsavebox{\folderb}
\savebox{\folderb}
(40,32)[l]{% definition
\put(0,14){\line(1,0){8}}
\put(8,0){\usebox{\foldera}}
}
\put(34,26){\line(0,1){102}}
\put(14,128){\usebox{\foldera}}
\multiput(34,86)(0,-37){3}
{\usebox{\folderb}}
\end{picture}
|
Kvadratne Bezijerove krive
urediKomanda
\qbezier(x1, y1)(x, y)(x2, y2)
|
crta kvadratnu Bezijerovu krivu gde , označava krajnje tačke, i označava srednju kontrolnu tačku. Respektivne tangentne kosine, i , mogu se dobaviti iz jednačina
Pogledajte Graphics in LaTeX2e za Java program koji pravi neophodnu \qbezier
liniju komadne.
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)
\linethickness{0.075mm}
\multiput(0,0)(1,0){7}
{\line(0,1){4}}
\multiput(0,0)(0,1){5}
{\line(1,0){6}}
\thicklines
\put(0.5,0.5){\line(1,5){0.5}}
\put(1,3){\line(4,1){2}}
\qbezier(0.5,0.5)(1,3)(3,3.5)
\thinlines
\put(2.5,2){\line(2,-1){3}}
\put(5.5,0.5){\line(-1,5){0.5}}
\linethickness{1mm}
\qbezier(2.5,2)(5.5,0.5)(5,3)
\thinlines
\qbezier(4,2)(4,3)(3,3)
\qbezier(3,3)(2,3)(2,2)
\qbezier(2,2)(2,1)(3,1)
\qbezier(3,1)(4,1)(4,2)
\end{picture}
|
Kao što ovaj primer ilustruje, deljenje kruga u 4 kvadratne Bezijerove krive nije pogodno. Najmanje 8 je potrebno. Figura ponovo pokazuje efekat \linethickness
komande na horizontalne i vertikalne linije, pa i na \thinlines
i \thicklines
komande krivolinijskih segmenata . Takođe pokazuje da obe vrste komandi utiču na kvadratne Bezijerove krive, a svaka komada postaje važnija od prethodne .
Katemptote
uredi
\setlength{\unitlength}{1cm}
\begin{picture}(4.3,3.6)(-2.5,-0.25)
\put(-2,0){\vector(1,0){4.4}}
\put(2.45,-.05){$x$}
\put(0,0){\vector(0,1){3.2}}
\put(0,3.35){\makebox(0,0){$y$}}
\qbezier(0.0,0.0)(1.2384,0.0)
(2.0,2.7622)
\qbezier(0.0,0.0)(-1.2384,0.0)
(-2.0,2.7622)
\linethickness{.075mm}
\multiput(-2,0)(1,0){5}
{\line(0,1){3}}
\multiput(-2,0)(0,1){4}
{\line(1,0){4}}
\linethickness{.2mm}
\put( .3,.12763){\line(1,0){.4}}
\put(.5,-.07237){\line(0,1){.4}}
\put(-.7,.12763){\line(1,0){.4}}
\put(-.5,-.07237){\line(0,1){.4}}
\put(.8,.54308){\line(1,0){.4}}
\put(1,.34308){\line(0,1){.4}}
\put(-1.2,.54308){\line(1,0){.4}}
\put(-1,.34308){\line(0,1){.4}}
\put(1.3,1.35241){\line(1,0){.4}}
\put(1.5,1.15241){\line(0,1){.4}}
\put(-1.7,1.35241){\line(1,0){.4}}
\put(-1.5,1.15241){\line(0,1){.4}}
\put(-2.5,-0.25){\circle*{0.2}}
\end{picture}
|
U ovoj figuri, svaka simetrična polovina katemptote je aproksmirana Bezijerovom kvadratnom krivom. Desni deo krive završava se u tački (2, 2.7622), gde nagib ima vrednost m = 3.6269.Koristeći ponovo jednačinu (*), možemo izračunati srednju kotrolnu tačku. A one su (1.2384, 0) i (−1.2384, 0). Krstići ukazuju natačke realne katemptote. Greška je jedva vidljiva, jer je manjaid 1%. Ovaj primer ukazuke na korišćenje opcionalnih argumenata \begin{picture}
komande. Slika je definisana u odgovarajućim "matematičkim" koordinatama, gde je u komandi
\begin{picture}(4.3,3.6)(-2.5,-0.25)
|
njen donji levi ugao (označen sa crnim diskom) u koordinatama (−2.5,−0.25).
Plotovanje grafika funkcija
uredi
\setlength{\unitlength}{1cm}
\begin{picture}(6,6)(-3,-3)
\put(-1.5,0){\vector(1,0){3}}
\put(2.7,-0.1){$\chi$}
\put(0,-1.5){\vector(0,1){3}}
\multiput(-2.5,1)(0.4,0){13}
{\line(1,0){0.2}}
\multiput(-2.5,-1)(0.4,0){13}
{\line(1,0){0.2}}
\put(0.2,1.4)
{$\beta=v/c=\tanh\chi$}
\qbezier(0,0)(0.8853,0.8853)
(2,0.9640)
\qbezier(0,0)(-0.8853,-0.8853)
(-2,-0.9640)
\put(-3,-2){\circle*{0.2}}
\end{picture}
|
Kontrolne tačke Bezijerovih krivih izračunate su formulama (*). Pozitivna grana je određena sa , and , . Ponovo, the slika je difinisana u matematički odgovarajućim koordinatama , i donjem levom uglu dodeljene su matematičke koordinate (−3,−2) (crni disk).
okruženje slike i gnuplot
urediMoćni naučni paket za plotovanje gnuplot ima mogućnost da se direktno ubaci u pictureokruženje. Često je pogodnije da se plotuje direktno u LaTeX , jer nam to omogućava da se posle ne bavimo sa potencijalno problematičnim postskrpt fajlovima. Plotovanje naučnih podataka (ili, takođe, matematičkih figura) na ovaj način daje mnogo bolju kontrolu, i naravno mogućnost typesetting-a, no dostupan je i za druge potrebe (kao što je postskript ).
Takve slike se onda mogu dodati u dokument koristeći \include{}
komandu.
N.B. gnuplot je moćan softver sa dosta komandi. Puna diskusija o gnuplot-u ne može se provući kroz jednu notu . Pogledajte [[1]] tutorijal.