You are on page 1of 24

Tehnologije za Podrku Tehnikom Pisanju

arrayjob, csvtools, zatita dokumenta: pdftk,


vektorska graka - tikz
Mr. sc. Asmir Gogi, dipl. ing. el.
Decembar 2012
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
1 / 24
arrayjob paket

Osigurava infrastrukturu za kreiranje podataka tipa niz.

Kreiranje niza izvodimo prije inicijalizacije lanova niza unutar preambule ili
tijela dokumenta sa komandom
\newarray \mojniz
gdje mojniz predstavlja ime niza koje se sastoji od karaktera engleskog jezika.

Kreirani niz je u osnovi vie dimenzionalan!

Brisanje prethodno deniranog niza mojniz izvodimo sa komandom


\delarray \mojniz

Dodavanje novog lana (elementa) niza izvodimo sa komandom


\mojniz(k)={vrijednost}
gdje je k redni broj (indeks) elementa u nizu, vrijednost moe biti broj ili niz
karaktera.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
2 / 24
arrayjob paket

Dodavanje novog lana (elementa) kod dvodimenzionalnog niza izvodimo sa


komandom
\mojniz(k,n)={vrijednost}
gdje je k broj reda a n broj kolone elementa u nizu, vrijednost moe biti broj
ili niz karaktera.

Prazna mjesto se ne smije pojaviti u sintaksi komande za dodavanje novog


elementa.

Zapisivanjem nove vrijednosti na lokaciju u nizu na kojoj je ve postojala


vrijednost, stara vrijednost se prepisuje novom.

Prikaz vrijednosti elemenata niza izvodimo na slian nain


\mojniz(k)
gdje je k redni broj (indeks) elementa u nizu.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
3 / 24
arrayjob paket

Sukcesivne elemente niza moemo inicijalizirati bez indeksiranja njihovih


pozicija sa komandom
\readarray{mojniz}={vrijednost 1&vrijednost 2&vrijednost 3}
karakterom "&" razdvajamo sukcesivne elemente niza.

Inicijalizacija sukcesivnih lanova niza se uvijek izvodi od indeksa sa rednim


brojem 1!

Duina niza se dinamiki mijenja svaki puta kada dodamo novi element niza.

Niz moemo inicijalizirati kao jednodimenzionalan a zatim mu naknadno


promijeniti dimenzije sa komandom \dataheight{} koja denira broj kolona u
nizu.
\readarray{mojniz}{a&b&c&d&1&2&3&4}
\dataheight=4

Prazno mjesto unutar vrijednosti koju dodajemo elementu niza ukljuuje se u


vrijednost elementa niza!
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
4 / 24
arrayjob paket

Sadraj proizvoljne lokacije niza moe izbrisati koristei komandu \clrarray{}


\clrarray{mojniz}(k)
gdje je k lokacija koju elimo izbrisati.

Provjera stanja odreene lokacije moemo izvesti sa komandom


\checkimeniza{}
\checkmojniz(k)
pri emu je sadraj lokacije k spremljen u makro \cachedata{} a stanje lokacije
prazna ili okupirana u logiku varijablu emptydata.

Logika varijabla emptydata je false ukoliko je lokacija k okupirana u


suprotnom je true.
.
Primjer 1
Demonstrirati kreiranje niza, inicijalizaciju elemenata niza koristei komandu
\readarray{} i indeksirani pristup lanovima niza.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
5 / 24
csvtools paket

Omoguava uzastopno izvravanje L


A
T
E
X komandi na podacima spremljenim u
redovima CSV (Comma Separated Value) le-a.

Okruenje pogodno za spajanje velikog broja e-mail-ova ili generiranje tabela.

Deniranje razdjelnika (separatora) CSV le-a, izvodimo sa komandom


\setcsvseparator{razdjelnik}.

Upotreba L
A
T
E
X specijalnih karaktera unutar CSV le-a strogo je zabranjena.

Konverziju sadraja CSV le-a u tabular okruenje moemo izvesti sa


komandom
\CSVtotabular{ime_file}{poravnanje_kolona}{f_code}{m_code}{l_code}
gdje je ime_file predstavlja ime CSV le-a koji mora u prvom redu imati nazive
kolona, poravnanje_kolona je argument koji se proslijeuje tabular okruenju
u cilju poravnanja kolona i ima isto znaenjem kao i kod tabular okruenja,
f_code i l_code predstavljaju komande koje e biti aplicirane za prvi i zadnji
red le-a dok m_code predstavlja komande koje se apliciraju za sve redove
izmeu prvog i zadnjeg reda.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
6 / 24
csvtools paket

Formiranje dugih tabela unutar longtable okruenja izvodimo komandom


\CSVtolongtable{ime_file}{poravnanje_kolona}{f_code}{m_code}{l_code}

Unutar tabele redoslijed kolona deniramo sa komandama koje imaju oblik


\insertImeKolone
gdje je ImeKolone ime kolone u CSV le-u.

Kolone razdvajamo sa karakterom "&" na isti nain kao kod tabular okruenja.

Ukoliko ime kolone sadri prazno mjesto ili broj potrebno je koristiti komandu
\insertbyname{ime kolone} za ukljuivanje kolone.

Ukljuivanje kolona mogue je izvriti i sa komandom \field{rb_kolone}, gdje


je rb_kolone redni broj kolone u CSV le-u.

Brojai csvlinenumber i csvrownumber sadre u informaciju o rednom broju


linije i reda tabele.
.
Primjer 2
Demonstrirati kreiranje tabele na osnovu sadraja CSV le-a set1.csv.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
7 / 24
csvpie paket

Dvodimenzionalni graki prikaz sadraja odreene kolone CSV le u obliku


krunog dijagrama omoguen je sa komandom
\csvpiechart[opcije]{ime_kolone}{ime_file}
gdje opcije mogu biti:
start - poetni ugao prvog segmenta.
total - zbir svih segmenata, inicijalna postavka 100.
radius - poluprenik krunog dijagrama.
inner - relativna udaljenost unutranjeg natpisa.
outer - relativna udaljenost vanjskog natpisa.
cutaway - lista segmenata unutar para { } zagrada koji su izdvojeni.
offset - relativna (u odnosu na veliinu segmenta) udaljenost izdvojenih
segmenata.
firstrow - redni broj prve kolone koja sadri podatke.

Boju segmenta moemo promijeniti kao i dobiti sa komandama


\csvpiesegmentcol{n}{boja}
\csvpiesegcolname{n}{ime}
gdje je n redni broj segmenta u smjeru kazaljke na satu.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
8 / 24
csvtools paket

Napomena: prva kolona CSV le-a iz kojeg elimo kreirati kruni dijagram
(piechart) mora sadravati nazive atributa, druga kolona njihove vrijednosti a
prvi red nazive kolona.
.
Primjer 3
Demonstrirati kreiranje krunog dijagrama na osnovu podataka iz le-a set2.csv
a zatim istaknuti desetke. Dodatno promijeniti boju drugog i treeg segmenta u
utu a etvrtog segmenta postaviti u boju kao prvog segmenta a zatim istaknuti
osmice i sedmice.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
9 / 24
pdftk - zatita nalnog dokumenta

Zatitu nalnog dokumenta nije mogue izvesti sa L


A
T
E
X-om.

Rjeenje je koristiti neki od eksternih alata kao to je pdftk koji je dostupan za


Linux i Windows operativne sisteme.

Kreiranje lozinke za pregled nalnog dokumenta moemo izvesti na sljedei


nain
pdftk izvor.pdf output destinacija.pdf user_pw lozinka

U prethodnom primjeru tampanje nije dozvoljeno nakon otvaranja dokumenta.

Ukoliko elimo omoguiti i tampanje procedura je


pdftk izvor.pdf output destinacija.pdf user_pw lozinka allow
printing

pdftk u osnovi radi i ifrovanje interno sadraja pdf dokumenta koristei 40 ili
128 bitni klju.

Pored navednih prednosti pdftk omoguuje i spajanje dva ili vie pdf
dokumenata u jedan (za vie detalja pogledati dokumentaciju)
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
10 / 24
pdftk - zatita nalnog dokumenta
Primjer 4
Demonstrirati kreiranje lozinke za pristup nalnom dokumentu iz prethodnog
primjera koristei pdftk program. Postaviti da je lozinka studenti.
Koristei program identify provjeriti sadraj nalnog dokumenta na sljedei
nain:
indentify -verbose finalni.pdf
Koristei program pdftk spojiti dva pdf dokumenta na sljedei nain:
pdftk prvi.pdf drugi.pdf cat output output.pdf
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
11 / 24
PGF & TikZ

PGF (Portable Graphic Format) predstavlja paket za kreiranje vektorske grake


a sastoji se od tri sloja: sistemski, osnovni i sloj interfejsa.

Interfejs PGF predstavlja TikZ jezik visokog nivoa za kreiranje vektorske grake
na bazi geometrijskog i algebarskog opisa slike.

Infrastruktura osigurana kroz paket


\usepackage{tikz}
\usetikzlibrary{...}

Mogunosti TikZ jezika mogue je proiriti sa dodatnim bibliotekama.

Komande za generiranje geometrijskih oblika deniraju se unutar okruenja


tikzpicture koje je mogue postaviti unutar figure okruenja.

Makro \tikz{kod} omoguuje generiranje vektorskih slika u inline stilu.

Komanda \draw{} omoguava kreiranje staze u 2D prostoru pri emu koordinate


taaka deniraju kao ureeni par.

Izmeu koordinata staze potrebno je denirati spojnicu koja moe imati oblik:
"- -", "-|" i "|-".
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
12 / 24
PGF & TikZ

Opcije znaajne za \draw{} komandu su:

color - denira boju linije.

line width - debljina linije u jedinicama duine.

ll - boja popunjenosti objekta koje se dobije zatvaranjem staze.

rounded corners - poluprenik krivine krive (poluprenik zaobljenosti krive).

dashed, dotted, double - tip linije isprekidana, takasta i dvostruka.

->,<-,<->,|-,-|,|-| - tip zavretka staze.


\begin{tikzpicture}
\draw[|->,line width=1.5pt] (0,0)--(1,1);
\draw[color=red] (0,0) -| (1,1);
\draw[color=blue,dashed] (0,0) |- (1,1);
\draw[rounded corners=5pt,green!50]
(0,0) |- (0.5,0.5) -- (1,0) ;
\end{tikzpicture}

Geometrijske oblike moemo generirati koristei predenirane tipove staza:


circle, ellipse, parabola, rectangle, arc itd.

Svaka TikZ linija koda se mora zavriti karakterom ";".


.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
13 / 24
PGF & TikZ
\begin{tikzpicture}
\draw[red,fill=green] (0,0) circle (5mm);
\draw[blue,fill=magenta] (1,0) ellipse
(2mm and 5mm); \draw[orange,pattern=
crosshatch] (-1,-1) rectangle (0,-2);
\draw[blue] (1,-1.5) arc (45:135:5mm);
\end{tikzpicture}

Tekst i njegovu poziciju deniramo sa komandom \node{} koja se moe koristiti


i za ukljuivanje eksternih slika, predeniranih stilova.

Opcije znaajne za \node{} komandu su:


xshift - relativni pomak po x koordinati.
yshift - relativni pomak po y koordinati.
rotate - rotira node za ugao izraen u stepenima.
text width - denira irinu teksta.
above, below - relativna pozicija iznad i ispod denirane koordinate vora.
anchor - relativno poravnanje vora (center, east, west, north i south).

vor moe imati simboliko ime koje se denira u paru "(" ")" zagrada iza dijela
za opcije.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
14 / 24
PGF & TikZ

Komanda za kreiranje vora mora imati ulazni argument!


\begin{tikzpicture}
\draw (-2,0) node[anchor=west]{\small\sc
Prvi tekst};
\draw (0,0)--node[rotate=45,anchor=center]
(n1){\color{red}\small Tekst na dijagonali}
(-2,-2);
\draw[fill=black] (0,-2) node[](n2){}
circle (1pt);
\draw[blue,dotted] (n2) -- (n1.south);
\draw[fill=black] (n1.south) circle (1pt);
\end{tikzpicture}
Prvi tekst
T
e
k
s
t
n
a
d
i
j
a
g
o
n
a
l
i

Koordiante vora koji ima slimboliko ime moemo dobiti sa komandom \let{}

Za primjer potrebno je kreirati pravolinijsku stazu izmeu koordinata n1 i n2 iz


prethodnog primjera s time to je potrebno zamijeniti x i y koordinate taaka.
\draw let \p1=(n1), \p2=(n2) in (\x1,\y2) -- (\x2,\y1);
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
15 / 24
PGF & TikZ

Prethodna komanda zahtjeva ukljuivanje Tikz biblioteke calc u okviru


preambule dokumenta.

vor moe poprimiti oblike staze ukoliko deniramo novi stil koji ukljuimo u
okviru opcija vora.

Novi stil deniramo na sljedei nain


\tikzstyle{mojstil} = [opcije_cvora,tip_staze]
gdje opcije mogu biti sve one vezane za staze ili za vor.

vorove moemo postavljati relativno u odnosu na prethodno denirani vor ili


koordinatu koristei opcije: right of, left of, below of i above of.

Transformaciju koordinata omoguena je kroz matematiki mod i paket cal pa je


tako mogue simbolikoj koordinati dodati ili oduzeti koordinatu.
\draw ($(n1) + (-1,2)$) node[]{\small Test};

Promjena vrha zavretka staze se moe izvrtiti sa opcijama unutar \draw{} iz


TikZ biblioteke arrows.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
16 / 24
PGF & TikZ
\begin{tikzpicture}
\tikzstyle{blok} = [draw, rectangle,
minimum height=5mm, minimum width=5mm,
rounded corners=1mm,fill=blue!50,drop shadow]
\tikzstyle{sum} = [draw, circle, minimum
size=1pt]
\tikzstyle{input} = [coordinate]
\draw (0,0) node[input](i1){};
\node[blok,right of=i1](n1){\small\sc
$\int$};
\draw[->,>=stealth,dashed] (i1)--(n1);
\node[sum,below of=n1,yshift=-2mm,
fill=red!50,double](s1){$+$};
\draw[->,>=stealth] (n1)--(s1);
\end{tikzpicture}

+
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
17 / 24
PGF & TikZ

TikZ osigurava implementaciju for petlje kroz komandu \foreach{}


\begin{tikzpicture}
\foreach \x in {-1,-0.9,...,0}{
\draw[red] (\x,0) -- (\x,1+\x);
\draw[] (\x,0) -- (\x,-1-\x);}
\foreach \x in {0,0.1,...,1}{
\draw[] (\x,0) -- (\x,1-\x);
\draw[red] (\x,0) -- (\x,-1+\x);}
\draw[color=white,fill=white] (0,0)
circle (3mm);
\draw[color=black,fill=red,double] (0,0)
circle (1mm);
\draw[] (0,-1) node[yshift=-4mm]{
\scriptsize \sc Moj LoGo};
\end{tikzpicture}
Moj LoGo
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
18 / 24
PGF & TikZ

Sjenenje popunjenosti staze ili vora moemo izvriti sa opcijom shade unutar
komande \draw{} ili \node{} sa nekim od tri podrana tipa sjenenja:
horizontalno, vertikalno i kruno.

Novi tip sjenenja deniramo na sljedei nain:


\pgfdeclarehorizontalshading{ime_sjencenja}{visina_oblika_sjencenja}
{definicije_boja}
\pgfdeclareverticalshading{ime_sjencenja}{sirina_oblika_sjencenja}
{definicije_boja}
\pgfdeclareradialshading{ime_sjencenja}{centralna_tacka}
{definicije_boja}

Prozinost popunjenosti staze, boje staze ili vora moemo izvriti kombinujui
opciju opacity sa nekom od postojeih opcija kao to je draw ili fill komandi
\draw{} ili \node{}.
. Primjer 5
Demonstrirati kreiranje dijagrama koristei vorove a zatim denirati novi tip
sjenenja.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
19 / 24
PGF & TikZ

Graki prikaz matematikih funkcija unutar tikzpicture okruenja mogue je


izvesti sa axis okruenjem i komandom \plot{} iz paketa pgfplots.
\begin{tikzpicture}[scale=0.25]
\begin{axis}[xlabel=$t$,ylabel= $x(t)$,
grid=major]
\plot[blue,line width=1pt] plot[domain=
-360:360,samples=100] expression{cos(x)};
\plot[red,line width=1pt] plot[domain=
-360:360,samples=100] expression{sin(x)};
\end{axis}
\end{tikzpicture}
400 200 0 200 400
1
0.5
0
0.5
1
t
x
(
t
)

Opcije \plot{} komande deniraju opseg promjenljive za koji elimo nacrtati


funkciju (domain) i broj uzoraka na datom intervalu za koje e biti odreene
vrijednosti funkcije (samples).

Unutar expression dijela deniramo analitiki oblik 2D funkcije koju elimo


nacrtati.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
20 / 24
PGF & TikZ

Ukoliko elimo prikazati matematiku funkciju za koju znamo vrijednosti ali ne i


matematiki izraz isto moemo uraditi sa komandom \addplot{}

Komanda \addplot+{} obavlja istu funkciju kao i \addplot{} ali dodatno


prikazuje vor u taki u kojoj se zna vrijednost funkcije
\begin{tikzpicture}[scale=0.25]
\begin{axis}[xmin=-3,xmax=4,xlabel=$t$,
ylabel= $f(t)$]
\addplot[red] coordinates {(-2,3)
(-1.5,2) (-0.3,-0.2)(1,1.2)(2,2)(3,5)};
\addplot+[smooth,blue] coordinates {
(-2,3) (-1.5,2)(-0.3,-0.2)(1,1.2)(2,2)
(3,5)};
\end{axis}
\end{tikzpicture}
3 2 1 0 1 2 3 4
0
2
4
t
f
(
t
)

Opcija smooth zamjenjuje klasinu linearnu interpolaciju izmeu dvije susjedne


vrijednosti funkcije sa kubnim Bezierovim krivim (Bernsteinov polinom) koje
interpoliraju funkciju na bazi etri ili vie taaka.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
21 / 24
PGF & TikZ

Najei sluaj je da imamo vrijednosti matematike funkcije denirane u


velikom broju taaka storirane u le-u.

Rjeenje je koristiti \addplot{} komandu zajedno sa table komandom.


\begin{tikzpicture}[scale=0.45]
\begin{axis}[xmin=-1,xmax=20,grid=major,
grid style={dashed}]
\addplot[red,line width=1.5pt]
table[x=x,y=y] {primjeri/fun.tr};
\addplot[blue,dashed,smooth]
table[x=x,y=y] {primjeri/fun.tr};
\end{axis}
\end{tikzpicture}
0 5 10 15 20
0
10
20
30

Generiranje slika i dijagrama sa TikZ nekada moe biti naporno i iscrpno, stoga
se preporuuje upotreba odgovarajuih editora koji u realnom vremenu
prikazuju rezultate.

KTikZ i TikZEdt za Linux i Windows, cirkuit za Linux, LatexPix i TpX za


Windows.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
22 / 24
PGF & TikZ

Kreiranje trakastih dijagrama moemo izvriti koristei komandu \addplot{} i


opciju bar.
\begin{tikzpicture}[scale=0.45]
\begin{axis}[xmin=-1,xmax=20,grid=major,
grid style={dashed}]
\addplot[red!70,line width=0.5pt,ybar,bar
width=2mm,fill=red!50] table[x=x,y=y]
{primjeri/fun.tr};
\addplot[blue!70,line width=0.5pt,ybar,
bar width=2mm,fill=blue!50] table[x=x,
y=z] {primjeri/fun.tr};
\end{axis}
\end{tikzpicture}
0 5 10 15 20
0
10
20
30
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
23 / 24
PGF & TikZ

Za vie detalja u vezi TikZ pogledati uputstvo paketa tikz, pgfplots i skriptu
pfgmanual v2.10.

Ukoliko TikZ ne odgovara potrebama i zahtjevima korisnika uvijek moemo


pristupiti eksternim alatima kao to je GNUplot, Octave, MATLAB za prikaz i
generiranje funkcija i dijagrama koje moemo ukljuiti u nalni dokument.
.
Fakultet elektrotehnike Univerziteta u Tuzli
Laboratorij za informacijsko-komunikacijske tehnologije
24 / 24

You might also like