Pàgines

diumenge, 16 de novembre de 2014

Diagrames de flux amb tikz

Un diagrama de flux és una figura que il·lustra un procés, que pot ser informàtic (un algorisme) o de qualsevol altra mena. Són molt útils per visualitzar la seqüència de les accions i què passa quan cal prendre algun tipus de decisió.

Amb tikz es pot fer tot tipus de figures i gràfics i, no podia ser d'altra manera, es poden construir diagrames de flux clars, entenedors i atractius. En aquest article veurem com es crea una figura amb tikz i com, en acabat, es pot incrustar en qualsevol document LaTeX.

Un diagrama de flux consta d'unes "caixes" de text connectades per línies. Aquestes "caixes" tenen diferent forma -i color- segons el que representin: l'entrada del procés, una acció, una decisió o la sortida. A  tikz  aquestes caixes se'n diuen nodes i es poden construir fàcilment amb l'ajut de biblioteques específiques simplement donant el nom de la figura que cal dibuixar. Per exemple, per dibuixar un node d'entrada al procés amb forma rectangular només cal definir el node amb les ordres: rectangle i draw, és a dir "dibuixa un rectangle". Naturalment podem donar un format més acurat al node, cosa que es fa abans de començar a dibuixar els nodes sota el comandament de configuració \tikzset. Vegem un exemple de definició de l'estil d'un node de decisió:

decisio/.style = {diamond,% forma geomètrica de romb 
                     draw, 
                     top color= white,% color de la part superior del degradat
                     bottom color=red,% color de la part inferior del degradat
                     drop shadow,% ombra
                     text width=8em, % ampla del text
                     text badly centered, % centrat del text
                     node distance=3cm, %distància al centre dels altres nodes
                     inner sep=0pt},%separació del text a la figura que el conté

Dins d'aquest comandament de configuració també es pot definir el format de les línies que uniran els nodes, per exemple amb forma de fletxes:

linia/.style = {draw, 
                     line width=1.5pt,%gruix de la línia
                     % per veure els estils de fletxa: http://tex.stackexchange.com/questions/42611/list-of-available-tikz-libraries-with-a-short-introduction/42679
                    -triangle 45},% la fletxa és un triangle de 45º

Un cop definits els estils dels nodes i de les línies passem a dibuixar el diagrama (\tikzpicture) tot posant els nodes un a sota dels altres. Comencem pel primer, un node d'entrada:

\node [entrada] (inici) {Text del node\\segona línia de text};

  • \node és el comandament que dibuixarà el node
  • [entrada] és el format del node que hem definit prèviament
  • (inici) és el nom que li donem al node i que l'identificarà dins la figura
  • {Text} és el text que apareix dins del node, dins del rectangle en aquest cas.
El segon bloc el volem situat sota el node inici, per això escrivim:
    \node [bloc, below=of inici] (divesquerra) {Text...};
  • la diferència respecte al primer node és a [bloc, below=of inici], on bloc és l'estil de node i below=of inici diu on s'ha de situar el bloc (sota d'inici).  Amb above=of, right=of i left=of el posaríem a sobre, a la dreta o a l'esquerra respectivament.
D'aquesta manera anem situant els diferents tipus de bloc. Quan ja estan tots dibuixem les línies amb punta de fletxa que els uneixen:
    \draw [linia] (inici) -- (divesquerra);
Podem dibuixar línies acodades amb |- ó amb -|:
    \draw [linia] (a1) |- (divesquerra); 
Finalment, podem dibuixar un doble colze si marquem un punt del diagrama, una coordenada, i hi fem arribar una línia sense punta i que en surti una altra amb punta:
    \coordinate[right=5cm of donau]   (a1);
  • Aquest punt de coordenades és 5cm a la dreta del node donau i l'anomenem a1.
Al fitxer tex diagramadeflux.tex podeu veure el codi comentat del diagrama complet. I al fitxer diagramadeflux.pdf  podeu veure'n el resultat. S'hi representa l'algorisme de la multiplicació russa, una manera molt interessant de fer multiplicacions.

Cap comentari:

Publica un comentari a l'entrada