13
L A T E X vizualizacija Phonrule Tipa Qb4e TikZ Python vizualizacija TkInter - op ´ cenito Tkinter objekti Primjeri Vježba 4 — Vizualizacija I (L A T E X + TkInter) 4.1 L A T E X vizualizacija 4.1.1 Phonrule Ovaj paket sadrži funkcije s kojima se po fonetskim pravilima ispisuju glasovni uzorci (nažalost samo za engleski jezik). Naredba \ ima op´ ci oblik s dva argumenta: \ prvi je ulaz pravila ({input}), a drugi je izlaz ({output}), dok: \ ima dodatni argument ({context}) Naredbe \ , \ i \ u kojima se kontekst stavlja uz oznaˇ citelj mjesta s lijeve, desne ili s obje strane. Naredba \ pruža mogu´ cnost kompilacije više konteksta, svakog u svom retku, ome ¯ de- nih vitiˇ castim zagradama. Slijedi nekoliko primjera: 1 2 3 4 5 6 Sljede´ ci L A T E Xprogramski odlomak: 1 2 3 4 5 6 7 8 9 daje na zaslonu sljede´ ce:

Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

Embed Size (px)

Citation preview

Page 1: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

LATEX vizualizacijaPhonruleTipaQb4eTikZ

Python vizualizacijaTkInter - opcenitoTkinter objektiPrimjeri

Vježba 4 — Vizualizacija I (LATEX + TkInter)

4.1 LATEX vizualizacija

4.1.1 Phonrule

Ovaj paket sadrži funkcije s kojima se po fonetskim pravilima ispisuju glasovni uzorci (nažalostsamo za engleski jezik).Naredba \phon ima opci oblik s dva argumenta:

\phon{input} {output}prvi je ulaz pravila ({input}), a drugi je izlaz ({output}), dok:

\phonc{input} {output} {context}ima dodatni argument ({context})

Naredbe \phonl, \phonr i \phonb u kojima se kontekst stavlja uz oznacitelj mjesta s lijeve,desne ili s obje strane.

Naredba \oneof pruža mogucnost kompilacije više konteksta, svakog u svom retku, omede-nih viticastim zagradama. Slijedi nekoliko primjera:

1 \usepackage{phonrule}2 \phon{z}{r}3 \phonc{a}{e}{[-stressed]}4 \phonl{k}{c}{i}5 \phonr{t}{ts}{u}6 \phonb{s}{z}{V}{V}

Sljedeci LATEXprogramski odlomak:

1 \usepackage{phonrule}2 \phonc{x}{y}{\oneof[l]{3 \phold z \\4 \phonfeat{5 +feature x \\6 -feature y7 }8 \phold9 }

daje na zaslonu sljedece:

Page 2: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

46 Vizualizacija I (LATEX + TkInter)

Na koncu, naredba \phonfeat omogucuje umetanje fonetskih obilježja. Moguci parametri su:c za središte (eng. centre),l za lijevo poravnanje,r za desno poravnanje.

Kombinacijom nekih od dosadašnjih naredbi ovog paketa realizira se programski odsjecak:

Program 4.1 — Phonrule. –

1 \usepackage{phonrule}2

3 \phonb{\phonfeat{+stop \\ +consonant \\ +alveolar} }{[A]}{\phonfeat{+vowel\\ +stressed} }{\phonfeat{+vowel \\ +stressed} }

koji daje sljedeci ispis na zaslonu:

Identificirajte svaki clan izlaza preko zadanog ulaza.

4.1.2 TipaTIPA je sustav za obradbu IPA (International Phonetic Alphabeet) simbola u LATEX-u.

Postoji popis simbola koji se mogu stvoriti i nacin (naredbe) da se to dogodi. Neke naredbeimaju opcenitiji znacaj od dobivanja samo jednog simbola. Na primjer kôd \* se može koristitina više nacina od kojih su neka pokazana na sjedecoj slici:

Sljedeci program koristi slicne naredbe: \;, \: i \!.

Program 4.2 — TIPA LATEX modul. –

1 \usepackage{tipa}2 \textipa{abcdefghijklmnopqrstuvwxyz}3 \textipa{ABCDEFGHIJKLMNOPQRSTUVWXYZ}4 \textipa{\;A \;B \;E \;G \;H \;I \;L \;R \;Y}5 \textipa{\:d \:l \:n \:r \:s \:t \:z}6 \textipa{\!b \!d \!g \!j \!G \!o}

Page 3: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

4.1 LATEX vizualizacija 47

Postoje tablice svih simbola koji se uopce mogu naci u fonologijskim zapisima prirodnihjezika svijeta. Jednu od tih tablica prikazuje slika:

Važno je istaknuti da je moguce uci u tzv. "IPA environment" (IPA okoliš), kako se ne bipisale duge. vec jednostavne naredbe, na primjer ovako:

4.1.3 Qb4eOvo je tipicni LATEXprogramski paket za jezikoslovlje - služi za oznacivanje vrsta recenica(primjera, definicija i/ili glosa) s obzirom na njihovu lingvisticku ispravnost. Ako je recenicapogrešna, ispisuje se tocka (’*’), ako je sumnjiva onda dva usklicnika, a sve recenice se najcešcenumeriraju. Postoji i gniježdenje oznaka.

Sljedecim programom pokazuju se osnovne naredbe paketa:

Page 4: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

48 Vizualizacija I (LATEX + TkInter)

Program 4.3 — Qb4e - nabrajanje naredbi . –

1 \usepackage{qb4e}2 \begin{exe} % sets up the top-level example environment3 \ex\label{here} Broj je jedan. % example with running number4 \ex[*]{Jedan ovdje jo² (broji).} % judged ex. with running number5 \ex Evo nekih s prosudbama.6 \begin{xlist} % first embedding (alphabetical numbering)7 \ex[]{Gramati£ki ispravna re£enica: Tko sam ja?}8 \ex[*]{Gramati£ki neispravna re£enica: Sam tko ja?}9 \ex[??]{Sumnjiva re£enica: Ja sam tko.}

10 \ex % just the number11 \begin{xlist} % second embedding (roman numbering)12 \ex[**]{Treba li jo² jedna uvlaka?}13 \ex[\%]{Ponekad.}14 \end{xlist} % end second embedding15 \ex Usudi se suditi mi!16 \end{xlist} % end first embedding17 \ex Ovim se zaklju£uje na²a demonstracija.18 \end{exe} % end example environment

što daje sljedeci ispis na zaslonu:

Obrazložite svaki pojedinacni redak ispisa.

U iducem programskom primjeru pokazuje se cesta upotreba paketa u višejezicnoj usporedbii poveznicama rijeci.

Program 4.4 — Gb4e LATEX modul s poveznicama rijeci. –

1 \usepackage{gb4e}2

3 \begin{exe}4 \ex5 \gll Wenn jemand in die W\"uste zieht ... \\6 If someone in the desert draws and lives ... \\7 \trans `if one retreats to the desert and ... '8 \trans `ako se netko povrati u pustinju i ... '9 \end{exe}

Page 5: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

4.1 LATEX vizualizacija 49

10

11 \begin{exe}12 \ex13 \gll Den Fritz_1 habe ich \_\_{}_1 zum Essen eingeladen.\\14 the fred have I {} {to the} eating invited.\\15 \glt I invited Fred for dinner.16

17 \ex18 \gll * Dit is een voorboeldje.\\19 {} This is an example.\\20 \trans `Here's where the translation would be'21

22 \ex[*]{23 \gll Dit is een voorboeld.\\24 This is an example.\\25 \trans `and this would be the translation line'}26 \end{exe}27

28 \begin{exe}29 \ex\atcenter{30 \arrowalign{\fillright\pd&\link3&\fillleft{\vrule\hfil}\cr31 Did&\ &John&\ &t_{gr}&\ appear &t&\ to be likely32 &t&\ to win.\cr33 &&\fillright\pu&\link3&\centr{\vrule\spacer\pu}&\lf34 &\fillleft\vrule\cr}35 }36 \end{exe}

što daje sljedeci ispis na zaslonu:

Uocite poravnavanje rijeci u prijevodima i brazložite svaki pojedinacni ispis.

Page 6: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

50 Vizualizacija I (LATEX + TkInter)

4.1.4 TikZTikZ je najbolji graficki program u LATEX-u. U ovom potpoglavlju iskoristit ce se samo njegovemogucnosti za crtanje sintaktickijh stabala. Za istu tu svrhu služi i paket qtree, ali kako su obavrlo slicna i jednostavna, koristit cemo samo podmodul paketa TikZ s imenom ’TikZ-qtree’:

Program 4.5 — Tikz LATEX modul. –

1 \usepackage{tikz}2 \usepackage{tikz-qtree}3

4 \begin{tikzpicture}5 \Tree [.S [.NP [.Det Jedna ] [.N ma£ka ] ]6 [.VP [.V sjedi ]7 [.PP [.P na ]8 [.NP [.Det jednoj ] [.N prostirki ] ] ] ] ]9 \end{tikzpicture}

10

11 \begin{tikzpicture}12 \tikzset{grow'=right} % rast stabla s lijeva nadesno13 \tikzset{every tree node/.style={anchor=base west}} % postaviti £vorove

stabla na lijevo (zapad)14 \Tree [.S [.NP LaTeX ] [.VP [.V je ] [.NP zabavan ] ] ]15 \end{tikzpicture}

što daje sljedeci ispis na zaslonu:

Obrazložite svaki pojedinacni redak ispisa.

U istom modulu moguce je crtati i ovisnosna stabla, i to u razlicitim varijantama. Za primjer,uzima se samo jedna od njih:

Page 7: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

4.1 LATEX vizualizacija 51

Program 4.6 — Tikz (dependency) LATEX modul. –

1 \usepackage{tikz}2 \usepackage{tikz-qtree}3 \begin{dependency}[theme = simple]4 \begin{deptext}[column sep=1em]5 A \& hearing \& is \& scheduled \& on \& the \& issue \& today \& . \\6 \end{deptext}7 \deproot{3}{ROOT}8 \depedge{2}{1}{ATT}9 \depedge[edge start x offset=-6pt]{2}{5}{ATT}

10 \depedge{3}{2}{SBJ}11 \depedge{3}{9}{PU}12 \depedge{3}{4}{VC}13 \depedge{4}{8}{TMP}14 \depedge{5}{7}{PC}15 \depedge[arc angle=50]{7}{6}{ATT}16 \end{dependency}

daje sljedeci ispis na zaslonu:

Page 8: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

52 Vizualizacija I (LATEX + TkInter)

4.2 Python vizualizacija

4.2.1 TkInter - opcenito

TkInter ima standardnu GUI knjižnicu za Python. Stvaranje GUI aplikacije je jednostavna zadaca,koja se izvodi u par koraka:

1. ucitati Tkinter modul2. naciniti glavni prozor za GUI aplikaciju3. dodati jedan ili više grafickih modula, tzv widgets-a u glavni prozor4. naciniti glavnu petlju koja reagira na sve korisnikove akcije (preko miša ili tipkovnice)

Program 4.7 Osnovni Tkinter program

1 import Tkinter2 top = Tkinter.Tk()3 # Ovdje se dodaje kod widgets-a...4 top.mainloop()

To ce na zaslonu racunala otvoriti prazan okvir:

Slika 4.1: Tkinter prozor

Tkinter nudi razlicite upravljacke module, kao što su gumbovi (eng. buttons), oznake (eng.labels), tekstne okvire (eng. text boxes) i slicno, koje zovemo widgets-ima. Do sad je razvijeno15 tipova widgets-a u Tkinter-u, koji su ukratko opisani u sljedecoj tablici:

Svi Tkinter wingets-i imaju pristup specificnim geometrijskim metodama, s kojima seorganiziraju widgets-i s obzirom na prvotno (roditeljsko) spremište. Postoje 3 metode koje semogu koristiti:

1. Pack metoda - ovo geometrijsko upravljanje organizira widgets-e u blokove prije nego ihstavi u roditeljski widget

2. Grid metoda - ovo geometrijsko upravljanje organizira widgets-e u strukturi slicnoj tabliciu roditeljskom widget-u

3. Mjesna (eng. place) metoda - ovo geometrijsko upravljanje postavlja widgets-e na speci-ficnu poziciju u roditeljski widget

Svaka opisana metoda ima jedan ili više atributa i bilo bi prezahtjevno (i nepotrebno) opisivatisvakog pojedinacno. Zato je u sljedecoj tablici nacinjen pokušaj da se osnovni atributi ujedine, sobzirom na kategorije koje ih ujedinjuju. Svaki argument po imenu, vec govori o svojoj ulozi.Detalje treba potražiti u Tkinter prirucniku.

Page 9: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

4.2 Python vizualizacija 53

Ime widgets-a Namjena

Button prikazuje gumb koji se spaja s nekom akcijomCanvas prostor za crtanje grafickih oblikaCheckbutton služi za prikaz više opcija izmedju kojih korisnik može izabrati jednu ili višeEntry prikazuje ’kucicu’ - obrazac za unos korisnickog tekstaFrame okvir (eng. container) za prihvat drugih widgets-aLabel tekstni opis ili slika u jednom retku za opis drugih widgets-aListbox lista korisnickih ponudaMenubutton služi za prikaz izbornih ponuda u aplikacijiMenu izborne ponude s razlicitim naredbama koje su sadržane unutar Menu gumba.Message ispis višelinijskih poruka korisnikuRadiobutton koristi se za prikaz više opcija od kojih korisnik može izabrati samo jednuScale upravlja analognom vrpcom (eng. slider-om)Scrollbar upravlja vertikalnim pomakom (eng. scroll), npr. kod listaText ispis teksta u više linijaToplevel služi za vizualno odvajanje više spremištaSpinbox jedna varijanta Entry-a, kojom se izabire izmedu fiksnog broja vrijednostiPanedWindow spremište koje može imati bilo koji broj hor. ili vert. podspremištaLabelFrame jednostavno spremište unutar složenihtkMessageBox služi za ispis poruke u aplikaciji

Tablica 4.1: Funkcije u Tkinter paketu

Atributi se navode na standardan nacin, u obliku parova ’atribut=vrijednost’, na primjer: text="plus", relief=RAISED, cursor="plus" i slicno.

Kategorija Atributi

Dimensions borderwidth, highlightthickness, padX, padY, height, width, . . .Colors background, foreground, highlightcolor,. . .Fonts family, size, weight, slant, underlineAnchors NW, N, NE, W, CENTER, E, SW, S, SERelief styles FLAT, RAISED, SUNKEN, GROOVE, RIDGEBitmaps "error", "gray75", "hourglass", "info", "question", "warning", . . .Cursors "arrow", "circle", "clock", "cross", "dotbox", . . .

Tablica 4.2: Standardni atributi Tkinter funkcija

4.2.2 Tkinter objekti

Ne ulazeci u detalje, u nastavku ce bit pokazano nekoliko Tkinter funkcija i pripadnh kratkihprogramskih odsjecaka s kojima se one lako razumiju.

Frame widget je vrlo važan za proces povezivanja i organiziranja drugih widgets-a na laknacin. On radi kao spremište (eng. container) i prima na sebe druge widgets-e.

Njegova sintaksa je:w = Frame (glavni, opcije, ... )

gdje argument glavni, odgovara roditeljskom widgets-u, a opcije nekom od parametara dimenzija,boje i slicno.

Page 10: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

54 Vizualizacija I (LATEX + TkInter)

Program 4.8 Tkinter program koji opisuje Frame funkciju

1 from Tkinter import *2

3 root = Tk()4 frame = Frame(root)5 frame.pack()6

7 bottomframe = Frame(root)8 bottomframe.pack( side = BOTTOM )9

10 redbutton = Button(frame, text="Red", fg="red")11 redbutton.pack( side = LEFT)12

13 greenbutton = Button(frame, text="Brown", fg="brown")14 greenbutton.pack( side = LEFT )15

16 bluebutton = Button(frame, text="Blue", fg="blue")17 bluebutton.pack( side = LEFT )18

19 blackbutton = Button(bottomframe, text="Black", fg="black")20 blackbutton.pack( side = BOTTOM)21

22 root.mainloop()

Primjetite stvaranja Button (gumb) objekta i njegovo pozicioniranje na Frame spremište.Takoder je vidljiva ’pack’ metoda kojom se svi gumbi uglavljuju u okvir. Izvodjenjem programadobit cemo sljedeci prozor s obojenim gumbima u definiranom nizu:

Slika 4.2: Tkinter prozor

U iducem programu pokazuje se tkMessageBox objekt koji ima showinfo metodu za prikazporuke. Objekt je korišten u hello() korisnickoj funkciji koja se poziva iz Button objekta.

Program 4.9 Tkinter program koji opisuje tkMessageBox funkciju

1 import Tkinter2 import tkMessageBox3

4 top = Tkinter.Tk()5 def hello():6 tkMessageBox.showinfo("Say Hello", "Hello World")7

8 B1 = Tkinter.Button(top, text = "Say Hello", command = hello)9 B1.pack()

10

11 top.mainloop()

Page 11: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

4.2 Python vizualizacija 55

Posebno važno je vidjeti povezivanje nekog Tkinter objekta (u ovom slucaju Button-a) snekom korisnickom funkcijom. Za to nam služi atribut command, pa u našem slucaju com-mand=hello cini da se klikom na gumb izvrši funkcija hello(), kako je prikazano slikom:

Slika 4.3: Izvodjenje korisnicke funkcije unutar Tkinter objekta

4.2.3 PrimjeriU nastavku su pokazana tri primjera, za druge Tkinter objekte. Oni ne donose novu informaciju,nego proširuju i potvrdduju postojecu.

U prvom primjeru ukljucen je Radiobutton objekt, koji omogucuje korisniku jedan izborizmedju više mogucnosti. Osluškivanje dogadaja lijevog klika miša od strane korisnika, obavljase u objektu bez potrebe pisanja dodatnih funkcija, što olakšava upotrebu.

Program 4.10 Tkinter program koji opisuje Radiobutton funkciju

1 from Tkinter import *2

3 def sel():4 selection = "You selected the option " + str(var.get())5 label.config(text = selection)6

7 root = Tk()8 var = IntVar()9 R1 = Radiobutton(root, text="Option 1", variable=var, value=1,

10 command=sel)11 R1.pack( anchor = W )12

13 R2 = Radiobutton(root, text="Option 2", variable=var, value=2,14 command=sel)15 R2.pack( anchor = W )16

17 R3 = Radiobutton(root, text="Option 3", variable=var, value=3,18 command=sel)19 R3.pack( anchor = W)20

21 label = Label(root)22 label.pack()23 root.mainloop()

Primjetite upotrebu cjelobrojne varijable kojom se odabrana mogucnost pridružuje broju, s

Page 12: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

56 Vizualizacija I (LATEX + TkInter)

kojim se onda lako izvode grananja (ako→ onda) u programu.Rezultat pokretanja programa bit ce:

Slika 4.4: Radiobutton

Na slican nacin moguce je ugraditi složene izborne ponude (menu-e) u vizualno suceljekorisnickog programa:

Program 4.11 Tkinter program koji opisuje Menu funkciju

1 from Tkinter import *2 def donothing():3 filewin = Toplevel(root)4 button = Button(filewin, text="Do nothing button")5 button.pack()6

7 root = Tk()8 menubar = Menu(root)9 filemenu = Menu(menubar, tearoff=0)

10 filemenu.add_command(label="New", command=donothing)11 filemenu.add_command(label="Open", command=donothing)12 filemenu.add_command(label="Save", command=donothing)13 filemenu.add_command(label="Save as...", command=donothing)14 filemenu.add_command(label="Close", command=donothing)15

16 filemenu.add_separator()17

18 filemenu.add_command(label="Exit", command=root.quit)19 menubar.add_cascade(label="File", menu=filemenu)20 editmenu = Menu(menubar, tearoff=0)21 editmenu.add_command(label="Undo", command=donothing)22

23 editmenu.add_separator()24

25 editmenu.add_command(label="Cut", command=donothing)26 editmenu.add_command(label="Copy", command=donothing)27 editmenu.add_command(label="Paste", command=donothing)28 editmenu.add_command(label="Delete", command=donothing)29 editmenu.add_command(label="Select All", command=donothing)30

31 menubar.add_cascade(label="Edit", menu=editmenu)32 helpmenu = Menu(menubar, tearoff=0)33 helpmenu.add_command(label="Help Index", command=donothing)34 helpmenu.add_command(label="About...", command=donothing)35 menubar.add_cascade(label="Help", menu=helpmenu)36

37 root.config(menu=menubar)

Page 13: Vježba 4 — Vizualizacija I (LATEX + TkInter) · PDF file4.1 LATEX vizualizacija 47 Postoje tablice svih simbola koji se uopce mogu na´ ci u fonologijskim zapisima prirodnih´ jezika

4.2 Python vizualizacija 57

38 root.mainloop()

U ovom slucaju izvodi se bezlicna korisnicka funkcija (donothing)koja daje samo gumb nakojim se pritiskom ne dogada ništa. Dakako, svakoj mogucoj izbornoj ponudi u uobicajenomradu se pridružuje adekvatna funkcija, koja željeno izvodi.

Primjer grafickog sucelja gornjeg programskog odsjecka bio bi:

Slika 4.5: Tkinter menu