LaTeX/PGF/TikZ

Izvor: Викикњиге

LaTeX

Početak
  1. Uvod100% završen  Dec 13, 2015
  2. Instalacija100% završen  Dec 13, 2015
  3. Instalacija dodatnih paketa 100% završen  Dec 13, 2015
  4. Osnove 100% završen  Dec 13, 2015
  5. Kako pronaći pomoć 100% završen  Dec 13, 2015

Zajednički elementi

  1. Struktura dokumenta 100% završen  Dec 28, 2015
  2. Formatiranje teksta 100% završen  Dec 27, 2015
  3. Formatiranje paragrafa 100% završen  Jan 02, 2016
  4. Boje 100% završen  Jan 10, 2016
  5. Slova100% završen  Jan 10, 2016
  6. Struktura listi 100% završen  Jan 10, 2016
  7. Posebni znakovi 100% završen  Jan 10, 2016
  8. Internacionalizacija 100% završen  Jan 10, 2016
  9. Rotacija 100% završen  Jan 10, 2016
  10. Tabele 100% završen  Jan 10, 2016
  11. Stvaranje naslova 100% završen  Jan 10, 2016
  12. Raspored strane 100% završen  Jan 10, 2016
  13. Uvoz grafike 100% završen  Jan 10, 2016
  14. Figure i natpisi100% završen  Jan 10, 2016
  15. Fusnote i Margine100% završen  Jan 10, 2016
  16. Hiperlinkovi 100% završen  Jan 10, 2016
  17. Oznake i referenciranje100% završen  Jan 10, 2016

Mehanika

  1. Greške i upozorenja 75% završen  Jan 02, 2016
  2. Dužine 100% završen  Jan 02, 2016
  3. Brojači 100% završen  Jan 02, 2016
  4. Kutije 100% završen  Jan 02, 2016
  5. Pravila i nosači 100% završen  Jan 02, 2016

Tehnički tekstovi

  1. Matematika100% završen  Jan 10, 2016
  2. Naprednija matematika 75% završen  Jan 10, 2016
  3. Teoreme
  4. Hemijska grafika 75% završen  Jan 02, 2016
  5. Algoritmi 75% završen  Jan 02, 2016
  6. Listiranje izvornog koda 100% završen  Jan 02, 2016
  7. Lingvistika 75% završen  Jan 02, 2016

Posebne strane

  1. Indeksiranje 75% završen  Jan 02, 2016
  2. Rečnik 75% završen  Jan 02, 2016
  3. Upravljanje bibliografijom‎ 75% završen  Jan 10, 2016
  4. Više bibliografije

Posebni dokumenti

  1. Pisma 50% završen  Jan 02, 2016
  2. Prezentacije 75% završen  Jan 02, 2016
  3. Učiteljski deo 75% završen  Jan 10, 2016
  4. Kratka biografija 50% završen  Jan 02, 2016

Kreiranje grafika

  1. Predstavljanje proceduralnih grafika 100% završen  Jan 02, 2016
  2. MetaPostovi 0% završen  Jan 02, 2016
  3. Slika 50% završen  Jan 02, 2016
  4. PGF/TikZ 25% završen  Jan 02, 2016
  5. PSTricks 50% završen  Jan 02, 2016
  6. Xy-pic 25% završen  Jan 02, 2016
  7. Pravljenje 3D grafika 75% završen  Jan 02, 2016

Programiranje

  1. Makroi 100% završen  Jan 10, 2016
  2. Običan TeH‎ 100% završen  Jan 10, 2016
  3. Kreiranje paketa 100% završen  Jan 10, 2016
  4. Teme 75% završen  Jan 10, 2016

Razno

  1. Modularni Dokumenti 100% završen  Jan 10, 2016
  2. Zajedničko pisanje LaTeX dokumenata 75% završen  Jan 10, 2016
  3. Otpremanje u druge formate 100% završen  Jan 10, 2016

Pomoć i preporuke

  1. Najčešće postavljana pitanja 100% završen  Jan 10, 2016
  2. Saveti i trikovi 75% završen  Jan 10, 2016

Dodaci

  1. Autori 0% završen  Jan 10, 2016
  2. Linkovi 0% završen  Jan 10, 2016
  3. Oznake paketa 0% završen  Jan 10, 2016
  4. Primeri LaTeX dokumenata 0% završen  Jan 10, 2016
  5. Indeks 0% završen  Jan 10, 2016
  6. Rečnik naredbi 0% završen  Jan 10, 2016
Example of graphics done with Tikz. Note the slightly translucent top layer.

Jedan način da crtate grafiku direktno sa TeX komandama je PGF/TikZ. TikZ može da produkuje grafiku u PDF i PostScript formatu koristeći običan (pdf)TEX, (pdf)Latex ili ConTEXt. Dolazi sa veoma dobrom dokumentacijom i obimnom kolekcijom primera: http://www.texample.net/tikz/

PGF ("portable graphics format") je osnovni sloj, koji pruža set komandi za pravljenje grafike, i TikZ ("TikZ ist kein Zeichenprogramm") je prednji kraj sloja sa specijalnom sintaksom, koja omogućava olakšano korišćenje PGF-a . TikZ komande su pretežno slične Metafont komandama, opcioni mehanizam je sličan PsTricks sintaksi.

Dok se prethodni sistem (picture, epic, pstricks ili metapost) fokusirao na to kako da crta, TikZ se fokusira na to šta se crta. Može se reći da ono što je TikZ za crtanje u LaTeX-u, to je LaTeX za digitalni typesetting. Preporučuje se njegovo korišćenje ako ga Vaša LaTeX distribucija podržava.

drugi paketi rađeni po TikZ (na primer za crtanje električnih kola) mogu se pronaći ovde: http://ftp.dante.de/tex-archive/help/Catalogue/bytopic.html#pgftikzsection

U sledećeim odeljcima neke osnove TikZ su prikazane.

Učitavanje paketa, Biblioteke - tikzpicture okruženje[uredi]

Za korišćenje TikZ u LaTeX-u dokumentu neophodno je učitavanje tikz paketa:

\usepackage{tikz}

negde u preambuli. Ovo će automatski učitati pgf paket. Da biste učitali dalje korišćenje biblioteke

\usetikzlibrary{⟨листа библиотека одвојених зарезима⟩}

Primeri biblioteka su "arrows", "automata", "backgrounds", "calendar", "chains", "matrix", "mindmap", "patterns", "petri", "shadows", "shapes.geometric", "shapes.misc", "spy", "trees".

Komande crtanja moraju da budu zatvorene u okviru tikzpicture okruženja

\begin{tikzpicture}[⟨options⟩] 
  ⟨tikz commands⟩
\end{tikzpicture}

ili alternativno

\tikz[⟨options⟩]{⟨tikz commands⟩}

Jedna moguća opcija korisna za uređenu grafiku je

baseline=⟨dimension⟩

Bez te opcije donji kraj slike postavljen je na osnovnu liniju teksta koji je okružuje. Korišćenjem ove opcije, možete precizirati koji deo slike treba da bude spušten ili podignut tako da visina ⟨dimenzija⟩ bude na osnovnoj liniji.

Još jedna opcija za skaliranje cele slike je

scale=⟨factor⟩

ili drugačije za visinu i širinu, na primer:

xscale=2.5, yscale=0.5

Preciziranje koordinata[uredi]

Koordinate se preciziraju u okruglim zagradama u uobičajenim TEX dimenzijama koristeći Cartesian koordinate (odvojene zagradama), na primer 1cm u x pravcu i 2pt u y pravcu

(1cm,2pt)

ili korišćenjem polarnih koordinata (dvotačkom odvojene), na primer 1cm u 30 stepeni pravcu

(30:1cm)

Bez preciziranja mernih jedinica (1,2), standardno su cm (1cm,2cm).

Relativne koordinate za prethodno zadatu tačku dodeljuu se tako što se stavljaju jedan ili dva znaka plus ispred koordinata. Sa "++" poslednja tačka puta postaje trenutna pozicija, sa "+" prethodna tačka ostaje trenutna tačka puta. Primer: 2 standardne mere desno od poslednje korišćene tačke:

++(2,0)

Sintaksa za puteve[uredi]

Put je niz pravih i krivih linija (uprošćeno objašnjenje). Instrukcija mora da se završi sa tačkomzarez.

\path[<options>]⟨specification⟩;

Jedna instrukcija može da se proteže kroz više linija, ili se više instrukcija može provući kroz jednu liniju.

Opcije za akcije puta su na primer: "draw", "fill", "pattern", "shade" (fil, u kom se boja lagano menja od jedne do druge), "clip" (svi sledeći nacrti sve do kraja of trenutnog polja podsečeni protivno trenutnom putu i veličina sledećih puteva neće biti važna za veličinu slike), "use as bounding box".

"\path" команда са овим опцијама може се повезати са: "\draw", "\fill", "\filldraw", "\pattern", "\shade", "\shadedraw", "\clip", "\useasboundingbox" .

Geometrijska opcija puta: "rotate=<angle in degree>", "xshift=<length>", "yshift=<length>", "scaling=<factor>", "xscale=<factor>", "yscale=<factor>".

Opcija za bojenje puta: "color=<color name>", "draw=<line color>", "opacity=<factor>". Following colors are predefined: red, green, blue, cyan , magenta, yellow, black, gray, darkgray, lightgray, brown, lime, olive, orange, pink, purple, teal, violet and white.

Opcija za debljinu linije: "line width=<dimension>", and abbreviations "ultra thin" for 0.1pt, "very thin" for 0.2pt, "thin" for 0.4pt (the default width), "semithick" for 0.6pt, "thick" for 0.8pt, "very thick" for 1.2pt, "ultra thick" for 1.6pt.

Opcija za kraj linije i opcija za spajanje linija: "line cap=<type: round, rect, or butt>", "arrows=<start arrow kind>-<end arrow kind>", "rounded corners", "rounded corners=<size>", "line join=<type: round, bevel, or miter>".

Opcija za šablon linije: "dash pattern=<dash pattern>" (e.g. "dash pattern=on 2pt off 3pt on 4pt off 4pt"), "dash phase=⟨dash phase⟩", "solid", "dashed", "dotted", "dashdotted", "densely dotted", "loosely dotted", "double".

Opcije za fil puta su na primer. "fill=<fill color>", "pattern=<name>", "pattern color=<color>"

Prave linije se dodeljuju sa koordinatama odvojenim sa dva minusa,

\draw (1,0) -- (0,0) -- (0,1);

Prva koordinata predstavlja move-to operaciju . Koja je ispraćena nizom “path extension operacija”, kao "-- (coordinates)".

Isti put sa nešto opcija za crtanje:

\draw[red, dashed, very thick, rotate=30] (1,0) -- (0,0) -- (0,1);

Povezani put može se zatvoriti sa "--cycle" operacijom:

\draw (1,0) -- (0,0) -- (0,1) -- cycle;

Dalja move-to operacija u postojećem putu započinje novi deo puta, koji nije povezan sa prethodnim delom puta. Obde: Pomeri do (0,0) pravu liniju do (2,0), pomeri do (0,1) pravu liniju do (2,1):

\draw (0,0) -- (2,0) (0,1) -- (2,1);

Povezivanje dve tačke sa dve prave linije koje su samo horizontalne ili vertikalne, korišćenje za horizontalnu pa za vertikalnu

\draw (0,0) -| (1,1);

ili prvo za vertikalnu pa za horizontalnu

\draw (0,0) |- (1,1);

Zakrivljeni putevi mogu da se prave pomoću Bezijerovih krivih, koje se mogu napraviti pomoću "..controls() ..()" komande, sa jednom ili dve kontrolne tačke.

\draw (0,0) .. controls (1,1) .. (4,0)
      (5,0) .. controls (6,0) and (6,1) .. (5,2);

Puteve koje korisnik definiše mogu se napraviti pomoću "to" operacije. Bez opcije korespondira sa pravom linijom, baš kao komanda sa duplim minusom. korišćenjem "out" i "in" opcije zakrivljeni put se može napraviti. Na primer "[out=135,in=45]" uzrukuje da se put napusti pod uglom od 135 stepeni na prvoj koordinati i da stigne pod uglom od 45 steptni u sledećoj koordinati.

\draw (0,0) to (3,2);
\draw (0,0) to[out=90,in=180] (3,2);
\draw (0,0) to[bend right] (3,2);

Za pravougaonike postoji specijalna komanda. Koristite move-to operaciju za jedan ćošak a posle "rectangle" unesite koordinate za ćošak dijagonale. Poslednja postaje nova trenutna tačka.

\draw (0,0) rectangle (1,1);
\shade[top color=yellow, bottom color=black] (0,0) rectangle (2,-1);
\filldraw[fill=green!20!white, draw=green!40!black] (0,0) rectangle (2,1);

Za boju fila "green!20!white" ovo znači 20% zeleno i 80% belo pomešano.

Kružni i eliptični putevi se definišu počevši od njihovih centara a potom korišćenjem "circle command" ili sa jednom dužinom za poluprečnik kružnice ili sa dve dužine kao polu-osa elipse.

\draw (0,0) circle [radius=1.5];
\draw (0,0) circle (2cm); % old syntax
\draw (0,0) circle [x radius=1.5cm, y radius=10mm];
\draw (0,0) circle (1.2cm and 8mm); % old syntax
\draw (0,0) circle [x radius=1cm, y radius=5mm, rotate=30];
\draw[rotate=30] (0,0) ellipse (20pt and 10pt);  % old syntax

Komanda "arc" pravi deo kružnice ili elipse:

\draw (0,0) arc (0:270:8mm);
\draw (0,0) arc (0:315:1.75cm and 1cm);
\filldraw[fill=cyan, draw=blue] (0,0) -- (12mm,0mm) arc (0:30:12mm) -- (0,0);

Ili u alternativnoj sintaksi:

\draw (0,0)  arc[radius = 8mm, start angle= 0, end angle= 270];
\draw (0,0)  arc[x radius = 1.75cm, y radius = 1cm, start angle= 0, end angle= 315];


Postoje dosta predefinisanih komandi za specijalne puteve, kao "grid", "parabola", "sin", "cos" (sinusna i kocinusna kriva u intervalu [0,π/2]).

\draw[help lines] (0,0) grid (2,3);
\draw[step=0.5, gray, very thin] (-1.4,-1.4) grid (1.4,1.4);
\draw (0,0) parabola (1,1.5) parabola[bend at end] (2,0);
\draw (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0) sin (5,1);

Opcija "help lines" označava "fine gray".

Da dodate strličaste vrhove postoje jednostavne opcije:

\draw [->] (0,0) -- (30:20pt); 
\draw [<->] (1,0) arc (180:30:10pt); 
\draw [<<->] (2,0) -- ++(0.5,10pt) -- ++(0.5,-10pt) -- ++(0.5,10pt);

Petlja se može realizovati sa "\foreach ⟨variable⟩ in {⟨list of values⟩} ⟨commands⟩".

\foreach \x in {0,...,9} 
  \draw (\x,0) circle (0.4);

PGF ima i matematičke sisteme koji omogućavaju crtanje grafika funkcija:

\draw [domain=<xmin>:<xmax>] plot (\x, {function});

mnoge funkcije su moguće, ovo je selekcija: factorial(\x), sqrt(\x), pow(\x,y), exp(\x), ln(\x), log10(\x), log2(\x), abs(\x), mod(\x,y), round(\x), floor(\x), ceil(\x), sin(\x), cos(\x), tan(x), min(\x,y,), max(\x,y). Trigonometrijske funkcije pretpostavljaju da je x koordinata u stepenima; ako je x u radijanima na primer sin(\x r). Dve konstante nogu biti od koristi: e, koje je jendako 2.718281828, i pi, koje je jednako 3.141592654.

Primer sa dve funkcije:

\draw [help lines] (-2,0) grid (2,4); 
\draw [->] (-2.2,0) -- (2.2,0); 
\draw [->] (0,0) -- (0,4.2); 
\draw [green, thick, domain=-2:2] plot (\x, {4-\x*\x}); 
\draw [domain=-2:2, samples=50] plot (\x, {1+cos(pi*\x r});

Čvorovi[uredi]

Čvor je obično pravougaonik ili kružić ili neki drugi jednostavni oblik koji ima tekst na sebi. u najprostijem slučaju čvor je samo neki tekst koji se nalaži na nekoj koordinati. Čvorovi nisu deo samog puta, dodaju se slici nakon što je ona nacrtana

Unutar operacije puta koristite sledeću sintaksu posle unetih koordinata:

node[<options>](<name>){<text>}
"(<name>)" је име за касније референцирање и оно је опционо. 

Ako želite da nazovete određenu poziciju bez unošenja teksta postoje dve opcije:

node[<options>](<name>){}
coordinate[<options>](<name>)

Pisanje teksta duž unetog puta korišćenjem node komande prikazano je u jednostavnom primeru ispod :

\draw[dotted]
    (0,0) node {1st node}
 -- (1,1) node {2nd node}
 -- (0,2) node {3rd node}
 -- cycle;

moguće opcije za node komadnu su "inner sep=<dimension>", "outer sep=<dimension>", "minimum size=<dimension>", "shape aspect=<aspect ratio>", "text=<color>", "font=", "align=<left_right_center>".

Čvor je centriran u trenutnoj koordinati u osnovnom slučaju. Često je bolje da čvor bude izvan samih koordinata: Desno ("right" ili "anchor=west"), levo ("left" ili "anchor=east"), iznad ("above" ili "anchor=south"), ispod ("below" ili "anchor=north"). Kombinacije su takođe moguće, kao "anchor=north east" ili "below left".

\fill[fill=yellow]
    (0,0) node {1st node}
 -- (1,1) node[circle,inner sep=0pt,draw] {2nd node}
 -- (0,2) node[fill=red!20,draw,double,rounded corners] {3rd node};

Da stavite čvorove unutar linije ili krive koristite "pos=<fraction>" opciju, gde je razlomak floating point broj između 0 koja predstavlja prethodnu koordinatu i 1 koja predstavlja trenutnu koordinatu.

\draw (0,0) -- (3,1)
  node[pos=0]{0} node[pos=0.5]{1/2} node[pos=0.9]{9/10};

Postoje neke obzervacije: "at start" za "pos=0", "very near start" za "pos=0.125", "near start" za "pos=0.25", "midway" za "pos=0.5", "near end" za "pos=0.75", "very near end" za "pos=0.875", "at end" za "pos=1".

"sloped" opcija uzrokuje rotaciju čvora i on postaje tangenta krive.

Kako su čvorovi jedine operacije naputevima, postoje specijalne komande za kreiranje puteva koji sadrže samo čvorove, prvi sa izlaznim tesktom, drugi bez:

\node[<options>](<name>) at (<coordinate>){<text>};
\coordinate[<options>](<name>) at (<coordinate>);

Možete spajati čvorove preko njihovih koordinata i oznaka. Imajući "\path(0,0) node(x) {} (3,1) node(y) {};" definicane, čvor na (0,0) ima ime "(x)" i ovaj na (3,1) ima oznaku "(y)".

\path (0,0) node(x) {} 
      (3,1) node(y) {};
\draw (x) -- (y);

Ekvivalentno sa

\coordinate (x) at (0,0); 
\coordinate (y) at (3,1);
\draw (x) -- (y);

Višelinijski tekst može biti uključen unutur čvora. Novi red se unusi sa dve kose crte "\\", ali dodatno morate naglasiti poravnanja koristeći opciju čvora "align=". Evo primera:

\filldraw 
(0,0) circle (2pt) node[align=left,   below] {test 1\\is aligned left} --
(4,0) circle (2pt) node[align=center, below] {test 2\\is centered}     -- 
(8,0) circle (2pt) node[align=right,  below] {test 3\\is right aligned};

Operacije za kreiranje puteva pokučavaju da budu pametne, tako što put počinje na granici oblika čvora, a ne od njegovog centra.

\path (0,0) node(x) {Hello World!}
(3,1) node[circle,draw](y) {$\int_1^2 x \mathrm d x$};
\draw[->,blue] (x) -- (y);
\draw[->,red] (x) -| node[near start,below] {label} (y);
\draw[->,orange] (x) .. controls +(up:1cm) and +(left:1cm) .. node[above,sloped] {label} (y);

Kada je čvor x definisan, možete koristiti utočišta kao što je gore definisano relativna u odnosu na (x) kao "(x.<anchor>)", kao "(x.north)".

Primeri[uredi]

Primer 1

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
  \draw[thick,rounded corners=8pt] (0,0) -- (0,2) -- (1,3.25) 
   -- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0) -- (2,0);
  \end{tikzpicture}
\end{document}

Primer 2

\documentclass{article}
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}[scale=3]
 \draw[step=.5cm, gray, very thin] (-1.2,-1.2) grid (1.2,1.2); 
 \filldraw[fill=green!20,draw=green!50!black] (0,0) -- (3mm,0mm) arc (0:30:3mm) -- cycle; 
 \draw[->] (-1.25,0) -- (1.25,0) coordinate (x axis);
 \draw[->] (0,-1.25) -- (0,1.25) coordinate (y axis);
 \draw (0,0) circle (1cm);
 \draw[very thick,red] (30:1cm) -- node[left,fill=white] {$\sin \alpha$} (30:1cm |- x axis);
 \draw[very thick,blue] (30:1cm |- x axis) -- node[below=2pt,fill=white] {$\cos \alpha$} (0,0);
 \draw (0,0) -- (30:1cm);
 \foreach \x/\xtext in {-1, -0.5/-\frac{1}{2}, 1} 
   \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north,fill=white] {$\xtext$};
 \foreach \y/\ytext in {-1, -0.5/-\frac{1}{2}, 0.5/\frac{1}{2}, 1} 
   \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east,fill=white] {$\ytext$};
 \end{tikzpicture}
\end{document}

Primer 3: Torus

\documentclass{article}
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}
	
	\draw (-1,0) to[bend left] (1,0);
	\draw (-1.2,.1) to[bend right] (1.2,.1);
	\draw[rotate=0] (0,0) ellipse (100pt and 50pt);

\end{tikzpicture}
\end{document}

Primer 4: Neke funkcije

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}[domain=0:4] 
    \draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
    \draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$}; 
    \draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};
    \draw[color=red]    plot (\x,\x)             node[right] {$f(x) =x$}; 
    \draw[color=blue]   plot (\x,{sin(\x r)})    node[right] {$f(x) = \sin x$}; 
    \draw[color=orange] plot (\x,{0.05*exp(\x)}) node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
  \end{tikzpicture}
\end{document}


Prethodno: Slika Indeks Sledeće: PSTricks