Tegnekurs i TikZ. Veronika Heimsbakk veronahe@ulrik.uio.no. 6. oktober 2014



Like dokumenter
La oss gjøre nettsiden vår bedre med noen stiler. I denne og den neste leksjonen skal vi lære hvordan man endrer farge, tekst, størrelser og mer!

Kodetime for Nordstrand barneskole

CSS: Style nettsider. Introduksjon. Skrevet av: Arve Seljebu

"Dette skjer når jeg trykker på denne knappen" "Når jeg skriver i dette feltet, ser jeg at det andre forandrer seg"

Stjerner og galakser Nybegynner Python PDF

Den krever at vi henter ned Maples plottekommandoer fra arkivet. Det gjør vi ved kommandoen

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

CSS-formatering: stilark med kommentarer

CSS: Style nettsider Nybegynner

Institutt for informatikk Universitetet i Oslo

Skilpadder hele veien ned

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

Sprettende ball Introduksjon Processing PDF

Manual til. GeoGebra. Ungdomstrinnet. Ressurs til. Grunntall Bjørn Bakke og Inger Nygjelten Bakke ELEKTRONISK UNDERVISNINGSFORLAG AS

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

MAT1030 Forelesning 22

Geometri Verktøylinja i GeoGebra Konstruksjon / tegning Konstruksjonsforklaring Normaler, paralleller og vinkler Mangekant, areal og omkrets

ClearView + Zero Button Feature Pack. Brukerhåndbok

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Norsk informatikkolympiade runde

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

Start med å åpne programmet ved å trykke på ikonet GIMP 2 på skjermen eller under startmenyen.

Steg 1: Opprette app-pakke, app-klasse og FXML-fil

Skilpaddefraktaler Erfaren Python PDF

Norsk informatikkolympiade runde

le r ti l P T e Tegn Stryk Bruk!

Farger Introduksjon Processing PDF

CSS: Animasjon Nybegynner

Logo med FXML. Introduksjon. Skrevet av: Hallvard Trætteberg

Lyd og video på nettsider

Eksamen MAT1013 Matematikk 1T Våren 2013

Plotting av data. Kapittel Plott med plot-funksjonen

Geometri Mona Røsseland Nasjonalt senter for matematikk i Opplæringen Leder i LAMIS Lærebokforfatter, MULTI Geometri i skolen Geometri etter 4.

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Brukermanual for TrackGrabber

Lag flere kopier ved å holde ned Alt og speilvende i Kontroll-panelet.

Kanter, kanter, mange mangekanter

MAT1030 Forelesning 22

Eksempel: s d taylor sin x, x = 0, 9

Eksamen MAT1013 Matematikk 1T Våren 2013

Snake Expert Scratch PDF

Steg 1: Animasjons-attributtet

Del 1. Generelle tips

I denne oppgaven skal vi bruke funksjoner for å gjøre programmene vi skriver enklere og mer oversiktlige.

Enkel plotting i LibreOffice/OpenOffice og Excel

Vedlegg til veiledning til læreplan i engelsk. Se skolenettet.no/veiledninger

: subs x = 2, f n x end do

with plots plot sin x, x =KPi..Pi Pi 3 eval tan eval cos K1 1 > evalf sin 3 2 K 2 $Pi

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

Steg 1: Vi starter fra toppen

Norsk informatikkolympiade runde

OVERFLATE FRA A TIL Å

[36] Boiserie. Melamine and lacquered door handles. Optional metal handle. Standard ABS handle. Look _silver (J) Pop _silver (P) _chromed (K)

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Data Sheet for Joysticks

1 Introduksjon GeoGebra 2 Speiling, rotasjon og parallellforskyvning 3 Perspektivtegning 4 Symmetriakser

MAT1030 Diskret Matematikk

Obligatorisk oppgave 1

Forsvunnet katt webside

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Bildebehandling i GIMP

MAT Grublegruppen Uke 36

AUTOCAD Artikkelserie. Fra Color til Named og omvendt

Data Sheet for Joysticks

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2015

Bildebehandling med Python og EzGraphics

Tegnespillet. Introduksjon:

Grafer og funksjoner

REGLER Puslespill Japanske Puzzles

Pure Lash

Tegneprogram Journeyman Scratch PDF

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Løpende strekmann Erfaren Videregående Python PDF

Menylinje og de vanligste funksjonene. Her gjør du de tilpasningene du trenger.

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Roger Antonsen

AUTOCAD Artikkelserie. Isometrisk tegning

Farger. Introduksjon. Skrevet av: Sigmund Hansen

Skilpadder Introduksjon Python PDF

NORGES TRADISJONELLE SHOTOKANFORBUND TILKNYTTET NORGES TRADISJONELLE KARATEFORBUND - NTKF. International Traditional Karate Federation ITKF

Øvingshefte. Geometri

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Eksempel

Hvordan du kommer i gang med LOGO.

HØGSKOLEN I SØR-TRØNDELAG

Minimum spenntrær. Lars Vidar Magnusson Kapittel 23. Kruskal Prim

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

Styling og formatering av tekst

Grafisk profilhåndbok Retningslinjer for grafisk profil

z = f x, y for x, y 2 D (kartesiske koordinater) Maplekommando: plot3d f x, y, x = a..b, y = c..d.

1 Adobe Photoshopkurs høsten del 1 - Gøy med Photoshop

Trigonometri, regulære mangekanter og stjerner

I denne oppgaven skal vi gi en enkel innføring til klasser og objekter (ordene forklares senere i teksten).

Noen MATLAB-koder. 1 Plotte en vanlig funksjon. Fredrik Meyer. 23. april 2013

Transkript:

Tegnekurs i TikZ Veronika Heimsbakk veronahe@ulrik.uio.no 6. oktober 2014 Innhold 1 The Basics 3 1.1 tikzpicture........................... 3 1.2 Linjer............................... 3 1.3 Kurver............................... 3 1.4 Kvadrat.............................. 4 1.5 Sirkel............................... 4 1.6 Ellipse............................... 4 1.7 Buer................................ 4 1.8 Pynte litt.............................. 5 1.9 Tykkelser............................. 5 1.10 Farger............................... 5 1.11 Fylle med farge.......................... 6 1.11.1 Gradient.......................... 6 1.11.2 Blande farger....................... 6 1.12 Plotte funksjoner......................... 7 1.12.1 plot............................ 7 2 Koordinatsystem 8 2.1 Akser............................... 8 2.2 Noder............................... 9 2.3 Løkker............................... 9 2.4 Hele koden for koordinatsystemet................ 10 3 Trær 11 3.1 Bygge treet............................ 11 3.2 Justere avstand mellom noder................. 12 3.3 Fasonger som noder kan ha................... 13 3.4 Eksempel på et tre med avstander............... 14 3.5 Rød-svarte trær.......................... 15 3.6 Bygge det rød-svarte treet.................... 16 1

4 Grafer 17 4.1 Tegne grafen........................... 18 4.2 Noder............................... 18 4.3 Kanter............................... 18 5 Automater 19 5.1 Automatens tilstander...................... 19 5.2 Stien gjennom automaten.................... 20 6 Forskjellige TikZ biblioteker 21 6.1 mindmap.............................. 21 6.2 calendar............................. 22 7 Circuitikz 23 7.1 Eksempel på en liten krets.................... 23 7.2 Oversikt over forskjellige porter i Circuitikz........... 24 8 Ressurser 25 8.1 Nyttige lenker........................... 25 Figurer 1 Farger i TikZ............................ 5 2 Piler i TikZ............................. 7 3 Fasonger på noder......................... 13 4 Forskjellige porter i Circuitikz.................. 24 Introduksjon Dette er et «kompendie», eller et sammendrag av «Tegnekurs i TeX» arrangert av studentforeningen {ProgNett 6. oktober 2014 ved Institutt for informatikk, Universitetet i Oslo. Dokumentet du nå leser er lagt opp slik at du skal kjenne til T E X/L A T E Xfra før, men ikke nødvendigvis pakken TikZ. Per dags dato, 6. oktober 2014, så fins ingen engelsk versjon av dette dokumentet. Men det er underveis. Hvis du har spørsmål, finner feil, eller har andre tilbakemeldinger. Send dette til forfatteren Veronika Heimsbakk, veronahe@ulrik.uio.no. 2

1 The Basics For å kunne bruke pakken TikZ må man først inkludere pakken i dokumentet. \usepackage{tikz 1.1 tikzpicture Alle illustrasjoner som skal tegnes ved hjelp av pakken TikZ krever et miljø som heter tikzpicture. \begin{tikzpicture <kode her> \end{tikzpicture 1.2 Linjer En av de mest brukte TikZ kommandoene er \draw. For å tegne ei rett linje sier man hvor man vil tegne fra og til: \draw (0,2) -- (4,2); \draw (0cm,1.5cm) -- (4cm,1.5cm); \draw (0em, 1cm) -- (4em, 1cm); \draw (0pt, 0.5cm) -- (4pt, 0.5cm); Koordinatene (0,2) sier at vi skal starte linjen i x = 0 og y = 2. 1.3 Kurver Vi bruker kontrollpunkter for å lage en kurvet linje. I eksempelet her, så starter vi i koordinatene (-2,2) og så tegner vi en kurve til første kontrollpunkt som er (-1,0), så videre til (1,0), og til slutt ender kurven opp i slutt-punktet som er (2,2). \draw (-2,2).. controls (-1,0) and (1,0).. (2,2); 3

1.4 Kvadrat Vi kan bygge på linjen vår og lage et kvadrat: \draw (0,0) -- (1.5,0) -- (1.5,1,5) -- (0,1.5) -- (0,0); Vi kan også bruke nøkkelordet rectangle, og lage en kortversjon som gjør akkurat det samme: \draw (0,0) rectangle (1.5,1.5); 1.5 Sirkel Den første koordinaten er sirkelens sentrum, og lengden vi oppgir til slutt er sirkelens radius. \draw (0,0) circle (1cm); Utfordring Hvordan tegnes figurene og? 1.6 Ellipse Ellipser tegnes ved at vi oppgir radiusen i x- og y-retningene: \draw (0,0) ellipse (2cm and 0.5cm); 1.7 Buer Buer (arc) skriver man på formen \draw (0,0) arc (0:180:1); Hvor (0,0) er posisjonen. Og (0:180:1) betyr at vi skal tegne en bue fra 0 til 180 grader på en sirkel med radius 1. 4

1.8 Pynte litt For å pynte litt på sirkelen vår, kan vi legge til noen ekstra argumenter på \draw-kommandoen. For eksempel slik: \draw[red, thick, dashed] (2,2) circle (1cm); \draw[green, thick] (6,2) circle (1cm); 1.9 Tykkelser ultra thick very thick thick thin very thin ultra thin Man kan også definere egne tykkelser ved å bruke line width. \draw[line width=10pt] (0,0) -- (2,0); 1.10 Farger red violet purple magenta pink white green lime olive orange yellow brown blue cyan teal lightgray gray darkgray black Figur 1: Farger i TikZ. 5

1.11 Fylle med farge Vi kan også fylle formene våre med farger ved å bruke kommandoen \fill. Ønsker vi å legge til en kant rundt kvadratet, kan vi bruke kommandoen \filldraw. \fill[orange] (0,0) rectangle (2,2); \filldraw[orange, draw=black, very thick] (3,0) rectangle (5,2); 1.11.1 Gradient Vi har også gradient i TikZ, og det kan se slik ut: \shade[left color=orange, right color=yellow] (0,0) rectangle (2,2); \shade[top color=orange, bottom color=yellow] (3,0) rectangle (5,2); \shade[inner color=orange, outer color=yellow] (6,0) rectangle (8,2); Utfordring Hvordan tegner vi dette? 1.11.2 Blande farger Vi kan også blande farger i TikZ. Her blander vi 50% blå og 50% oransje med hverandre. + = \fill[blue!50!orange] (0,0) rectangle (2,2); Når vi skriver \fill[blue!50] (0,0) rectangle (2,2); så blander vi 50% blå med 50% hvit. 6

1.12 Plotte funksjoner Man kan også plotte funksjoner i TikZ. Da er det kjekt å kjenne til de forskjellige typer piler. Figur 2: Piler i TikZ. \draw[<->] (0,1.5) -- (4,1.5); \draw[ ->] (0,1) -- (4,1); \draw[<-] (0,0.5) -- (4,0.5); \draw[->] (0,0) -- (4,0); 1.12.1 plot \begin{tikzpicture \draw[<->] (0,3.5) -- (0,0) -- (5,0); \draw[red, thick, domain=0:1.2] plot (\x, {0.25+\x+\x*\x); \end{tikzpicture domain er rekkevidden av x som blir plottet. I dette tilfellet plotter vi funksjonen 0.25 + x + x 2. Legg merke til at det er parenteser rundt funksjonen som vi skal plotte plot (\x, {function). Utfordring Hvordan kan vi plotte dette? 7

2 Koordinatsystem Dette eksempelet krever et rutenett, piler, noder og plassering av tall og bokstaver. Vi starter med et rutenett: \draw[step=1cm,gray!80,very thin] (-1.9,-1.9) grid (5.9,5.9); 2.1 Akser Videre trenger vi x-aksen og y-aksen. Dette er to linjer med piler i enden. \draw[thick, ->] (0,0) -- (4.5,0); \draw[thick, ->] (0,0) -- (0,4.5); 8

2.2 Noder Vi kan legge på tekst (label) ved å bruke nøkkelordet node. Vi plasserer teksten ved linjene vi har tegnet ved å fortelle noden hvor vi vil ha den. y axis x axis \draw[thick, ->] (0,0) -- (4.5,0) node[below right] {x axis; \draw[thick, ->] (0,0) -- (0,4.5) node[above left] {y axis; 2.3 Løkker Vi kan fortsette med tallene som skal gå langs aksene ved å bruke løkker: y axis 4 3 2 1 0 0 1 2 3 4 x axis Denne løkken går over linjene vi allerede har tegnet, og setter en liten strek for hver centimeter. Og ved siden av linjen skriver vi et tall. \foreach \x in {0,1,2,3,4 \draw (\x cm, 2pt) -- (\x cm, -2pt) node[below] {$\x$; \foreach \y in {0,1,2,3,4 \draw (2pt, \y cm) -- (-2pt, \y cm) node[left] {$\y$; Utfordring Hvordan kan vi bruke foreach til å tegne dette? 9

2.4 Hele koden for koordinatsystemet y axis 4 3 2 1 0 0 1 2 3 4 x axis \begin{tikzpicture \draw[step=1cm,gray!80,very thin] (-1.9,-1.9) grid (5.9,5.9); \draw[thick, ->] (0,0) -- (4.5,0) node[below right] {x axis; \draw[thick, ->] (0,0) -- (0,4.5) node[above left] {y axis; \foreach \x in {0,1,2,3,4 \draw (\x cm, 2pt) -- (\x cm, -2pt) node[below] {$\x$; \foreach \y in {0,1,2,3,4 \draw (2pt, \y cm) -- (-2pt, \y cm) node[left] {$\y$; \end{tikzpicture Utfordring Hvordan kan vi tegne dette? y axis 4 3 2 1 0 0 1 2 3 4 x axis 10

3 Trær Et tre består av en rekke noder. Når vi tegner trær i TikZ starter vi med å definere rot-noden. Legg merke til attributtene vi gir tikzpicture. Her sier vi at every node skal ha stilen (.style) sirkel med sort strek. 1 \begin{tikzpicture[every node/.style={circle, draw=black] \node {1; \end{tikzpicture 3.1 Bygge treet Treet bygger vi ved å legge til barna. Barna skrives på formen: child { node[opt.] {value 1 2 3 4 5 \node {1 child { node {2 child { node {4 child { node {5 child { node {3 ; [opt.] i definisjonen av node sier noe om hvordan noden skal se ut. Her kan vi for eksempel skrive node[red], så får vi at denne ene noden skal være rød. 11

3.2 Justere avstand mellom noder Når vi nå vil bygge videre og legge til tallet 6 under child {node {3 vil vi overlappe 5. Da trenger vi å justere avstanden mellom søsken-noder. Vi har: Vi vil ha: 1 1 2 3 2 3 4 5 6 4 5 6 Da legger vi på et attributt til i listen til tikzpicture som forteller noe om avstanden mellom nodene. \begin{tikzpicture[every node/.style={circle, draw=black, level 1/.style={sibling distance=20mm, level 2/.style={sibling distance=15mm] \node {1 child { node {2 child { node {4 child { node {5 child { node {3 child {node {6 ; \end{tikzpicture Her forteller vi at stilen til nodene på level 1 skal være at de har avstand til sine søsken med 20 mm, og 15 mm for level 2. Vi kunne også lagt til attributtet level distance for å få større eller mindre avstand mellom lagene. 12

3.3 Fasonger som noder kan ha Man kan få forskjellige fasonger på noder ved å inkludere \usetikzlibrary{shapes. Her er en oversikt over forskjellige fasonger en node kan ha. For å få ønsket fasong skriver man noden på denne formen: \node[rectangle] {Rectangle; \node[regular polygon, regular polygon sides=5] {n=5; \node[circle split] {Circle \nodepart{lower split; Plain node Rectangle Circle Ellipse Circle split Forbidden sign Diamond Cross out Strike out Polygon n = 7 n = 9 Star p = 7 p = 9 Figur 3: Fasonger på noder. 13

3.4 Eksempel på et tre med avstander S A A ( ) A ( A ) ( ) \begin{tikzpicture[every node/.style={, level 2/.style={sibling distance=20mm, level 3/.style={sibling distance=10mm, level distance=30pt] \node {S child { node{a child { node {A child { node {( child { node {) child { node {A child { node {( child { node {A child { node {( child { node {) child { node {) ; \end{tikzpicture 14

3.5 Rød-svarte trær 38 19 41 12 31 8 Å tegne trær på denne måten krever ingen tilleggsbiblioteker fra TikZ. Dette er et eksempel på tegning med egendefinerte noder. Dette gjør vi via tikzset, her kan vi gi stilen de forskjellige typene noder. \tikzset{ treenode/.style = {align=center, % Sorte noder node_black/.style = {treenode, circle, white, font=\bfseries, draw=black, fill=black, text width=0.8cm, % Røde noder node_red/.style = {treenode, circle, red, draw=red, text width=0.8cm, very thick, % Null-pekere node_null/.style = {treenode, rectangle, draw=black, minimum width=0.3cm, minimum height=0.3cm Starter med å definere treenode, som er felles for alle nodene. Røde og sorte noder tegnes som circle, hvor sorte noder har fill=black og tekstfarge white, mens røde noder har rødt omriss med draw=red, og tekstfarge red. Null-nodene sier vi skal være sorte rectangle. Tegnes som små kvadrater på 0.3 cm 0.3 cm. 15

3.6 Bygge det rød-svarte treet \begin{tikzpicture[->,level/.style={ sibling distance = 2cm, level distance = 1.5cm ] \node [node_black] {38 child { node [node_red] {19 child { node [node_black] {12 child { node [node_red] {8 child { node [node_null] { child { node [node_black] {31 child { node [node_black] {41 ; \end{tikzpicture Setter forskjellige opsjoner med: \begin{tikzpicture[->,level/.style={ sibling distance = 2cm, level distance = 1.5cm ] Her sier vi at treet skal tegnes med piler (->), og at stilen (.style) for distansen mellom søskennoder skal være 2 cm, og distansen mellom barn og foreldre skal være 1.5 cm. Videre så forteller vi barna i treet hva slags node de skal være. child { node [node_red] {x child { node [node_black] {y child { node [node_null] {z Utfordring Hvordan kan vi tegne dette treet? 1 2 3 4 16

4 Grafer 1 3 4 5 2 Det fins enklere måter å tegne grafer på enn dette, men jeg syns denne måten er fin. Den krever heller ingen andre biblioteker eller pakker enn TikZ selv. Vi starter med å definere de forskjellige elementene til en graf. \begin{tikzpicture \tikzstyle{vertex = [circle,fill=black!10] \tikzstyle{selected vertex = [vertex, fill=red!50] \tikzstyle{selected edge = [draw,line width=1pt,-,red!100] \tikzstyle{edge = [-,black,line width=1pt] \end{tikzpicture Her forteller vi at vertexer (eller noder), skal være sirkler. Markerte noder skal være fylt med rød farge. 1 2 Kanter skal tegnes som sorte linjer ([-, black... ]). Og markerte kanter skal være røde. 1 2 3 17

4.1 Tegne grafen For å plassere nodene rundt om på arket sier man hvor man vil de skal være ved hjelp av koordinater. \begin{tikzpicture \tikzstyle{vertex = [circle,fill=black!10] \tikzstyle{selected vertex = [vertex, fill=red!50] \tikzstyle{selected edge \tikzstyle{edge = [draw,line width=1pt,-,red!100] = [-,black,line width=1pt] \node[vertex] (v1) at (1.25,1.7) {1; \node[vertex] (v2) at (1.5,1.1) {2; \node[selected vertex] (v3) at (0.9,1.5) {3; \node[vertex] (v4) at (1.6,1.5) {4; \node[vertex] (v5) at (1,1.1) {5; \draw[edge] (v1)--(v2)--(v3)--(v4)--(v5)--(v1); \draw[selected edge] (v1)--(v2); \end{tikzpicture 4.2 Noder Nodene defineres ved å først bruke nøkkelordet node, så fortelle hvilken type node dette er. I dette tilfellet, så er det enten vertex eller selected vertex som vi har definert med tikzstyle. Nodens navn bruker man kun i egen kode, når vi skal tegne opp kantene trenger vi disse navnene. Koordinatene (x,y) forteller hvor vi vil plassere noden, og verdien er innholdet i noden. \node[type of node] (node name) at (x,y) {value; 4.3 Kanter Kantene tegnes likt som linjer fra seksjon 1. Men her gir vi nøkkelordet draw en av to stiler, som vi definerte med tikzstyle. Enten edge eller selected egde. \draw[type of edge] (from node) -- (to node); Utfordring Hvordan kan vi tegne denne? 18

5 Automater Denne måten å tegne automater på krever at man inkluderer et TikZ-bibliotek. \usetikzlibrary{automata b b b b,a q a start 1 q a 2 q a 3 q 4 \begin{tikzpicture[->,auto,node distance=3cm,line width=0.2mm] \node[initial,state] (A) {$q_1$; \node[state] (B) [right of=a] {$q_2$; \node[state] (C) [right of=b] {$q_3$; \node[state,accepting](d) [right of=c] {$q_4$; \path (A) edge [loop above] node {b (A) edge node {a (B) (B) edge [loop above] node {b (B) edge node {a (C) (C) edge [loop above] node {b (C) edge node {a (D) (D) edge [loop above] node {b,a (D); \end{tikzpicture For denne måten å tegne automater på, så settes alle attributter som beskriver automaten i definisjonen til tikzpicture. Her har automaten følgende egenskaper: {tikzpicture[->, auto, node distance=3cm, line width=0.2mm] Dette forteller oss at automaten skal tegnes med piler (->), nodene skal ha avstand på 3 cm, og linjene en tykkelse på 0,2 mm. auto stiller teksten over linjene, i stedet for på linjene. 5.1 Automatens tilstander En automat har tre typer tilstander: starttilstanden, vanlig tilstand(er), og akepterende tilstand(er). \node[state] (node name) {state name; I tillegg til [state], så kan man ha med opsjonen [initial, state] for starttilstanden, eller [state, accepting] for aksepterende tilstand. 19

5.2 Stien gjennom automaten Stien tegnes gjennom en path. Denne konstrueres på følgende vis: \path (from state) edge [opt.] node {weight (to state) Her kan [opt] være loop above/below, bend left/right. Flittig bever Her er en flittig 4-bever. Denne automaten dekker de fleste opsjoner. 0 1,R start 1 1,L 0 1,L 1 0,R 1 0,L 1 1,L 0 1,R H 0 1,R \begin{tikzpicture[->,auto,node distance=4cm,line width=0.2mm] \node[initial,state] (A) {; \node[state] (B) [below of=a] {; \node[state] (C) [right of=a] {; \node[state] (D) [below of=c] {; \node[state] (E) [right of=d] {H; \path (A) edge node {1 $\rightarrow$ 1,L (C) (A) edge [bend left] node {0 $\rightarrow$ 1,R (C) (C) edge [bend left] node {0 $\rightarrow$ 1,L (A) (B) edge node {1 $\rightarrow$ 0,R (A) (B) edge [loop below] node {0 $\rightarrow$ 1,R (B) (D) edge node {1 $\rightarrow$ 1,L (B) (C) edge node {1 $\rightarrow$ 0,L (D) (D) edge node {0 $\rightarrow$ 1,R (E); \end{tikzpicture 20

6 Forskjellige TikZ biblioteker Som med automatene, er det flere andre TikZ-biblioteker som kan inkluderes. Her kommer noen eksempler. 6.1 mindmap Fasonger Farger Grafer TikZ-kurs The Basics Automater Trær Noder Justere avstand Egendefinerte noder \path[mindmap,concept color=violet,text=white] node[concept] {TikZ-kurs [clockwise from=0] child[concept color=purple] { node[concept] {The Basics [clockwise from=90] child { node[concept] {Fasonger child { node[concept] {Farger child[concept color=cyan] { node[concept] {Trær [clockwise from=-20] child { node[concept] {Noder child { node[concept] {Egendefinerte noder child { node[concept] {Justere avstand child[concept color=red] { node[concept] {Automater child[concept color=orange] { node[concept] {Grafer ; 21

6.2 calendar October 2014 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \begin{tikzpicture \calendar (mycalendar) [dates=2014-10-01 to 2014-10-31,week list, month label above centered] month text=\textcolor{teal{\%mt \%y-] if (Sunday) [red] if (equals=2014-10-06) {\draw[red,thick] (0,0) circle (7pt);; \end{tikzpicture Attributter Attributter som vi gir kalenderen mycalendar er at den skal strekke seg fra 1. oktober 2014 til 31. oktober 2014. Den skal tegnes som lister av uker, og månedens navn skal skrives på toppen, sentrert. Vi sier også at tekstfargen til måneden skal være teal, og at vi skal legge på året. If-setninger på formen Her har vi også et eksempel på if-setninger i TikZ. Disse er if=(<condition>)<code or options> else<else code or options> I dette eksempelet sier vi at hvis dagen er en søndag, så skal teksten være rød. Og hvis datoen er 6. oktober 2014, så skal vi tegne en rød ring rundt denne. 22

7 Circuitikz Noe som er kjekt å vite om er også logiske porter i Circuitikz. Dette får du ved å inkludere pakken: \usepackage{circuitikz Siden dette ikke er TikZ jobber vi ikke i miljøet tikzpicture, men i miljøet circuitikz. \begin{circuitikz \draw <kode her> \end{circuitikz 7.1 Eksempel på en liten krets \begin{circuitikz \draw (-3,0.3) node[not port] (not) { (0,0) node[and port] (and) { (2,1) node[or port] (or) { (not.out) -- (and.in 1) (and.out) -- (or.in 2); \end{circuitikz Det fungerer på samme måte som når vi tegner noder i TikZ. Vi starter med koordinatene, så definerer vi hva slags node (port) vi vil ha, og til slutt en evt. merkelapp. (x,y) node [what kind of port] (name of port) {label Portens navn er valgfritt, og brukes kun i din egen kode. 23

7.2 Oversikt over forskjellige porter i Circuitikz [and port] [or port] [not port] [nand port] [nor port] [xor port] Figur 4: Forskjellige porter i Circuitikz 24

8 Ressurser Gøyale eksempler Enderman Dartboard India map 8.1 Nyttige lenker A TikZ tutorial: Generating graphics in the spirit of T E X TikZ & PGF Manual Graphics with TikZ TeXample.net T E XUsers Group (tug.org) Visste du at.. Roger Antonsens bok «Logiske Metoder» er full av TikZ/PGF? 25