Pàgines

diumenge, 30 novembre de 2014

Mapes conceptuals amb tikz

El paquet tikz té una biblioteca especial (mindmap) per crear mapes conceptuals o mentals molt vistosos. En aquest article veurem com crear un d'aquesta mapes conceptuals, en concret un sobre el portafolis electrònic o eportafolis.



Comencem creant els estils dels nodes arrel i els dels altres conceptes que en sortiran. Per exemple definim l'estil de tots els nodes:
every node/.style={concept,%tipus de node=concept
                 font=\sffamily,% tipus de lletra 
                 circular drop shadow,%ombra},
evidencia/.style={%concepte evidència         
                 concept color=red,%color del node
                 faded/.style={concept color=red!50}},%definim una variant atenuada

Si volem redefinir o afegir característiques a un node tenim el comandament append style:
root concept/.append style={
                 concept color=black,
                   %fill=white, %omple de color blanc
                   line width=1ex,
           %text=black, %color del text
           text=white,
           font=\large\scshape},% família i tipus de lletra

També s'ha de definir com es distribuiran els conceptes fills en els diferents subnivells:
level 1/.append style={level distance=4.5cm,%distància de l'arrel al primer nivell
                     %sibling angle=90,% angle que formaran els fills entre sí. Aquí fixat a 90º
                     sibling angle=360/\the\tikznumberofchildren,%divideix 360 entre el nombre de fills perquè tots els angles siguin iguals
                     font=\scshape},%tipus de lletra

Un cop definits tots els estils comencem a dibuixar el mapa començant per l'arrel:
\node [root] (NomDelConcepte) {Contingut}

A Contingut hi podem posar un text curt, millor una paraula, o be incloure una imatge amb \includegraphics.
Del node arrel hi surten els fills i "néts":
child [EstilDeConcepte] { node [yshift=-1cm]  (NomDelConcepte) {Contingut fill 1}
                            child{ node(NomDelConcepte) {Contingut nét 1}}
                    child{ node(NomDelConcepte) {Contingut nét 2}}
                    child{ node(NomDelConcepte) {Contingut nét 3}}
}%tanca el fill 1

Val la pena estudiar el codi al fitxer mapamental.tex i veure com, un cop processat, en resulta el PDF mapamental.pdf tan impressionant.

Es pot trobar més informació sobre la biblioteca de mapes mentals i trucs al Manual de PGF-tikz i a l'etiqueta mindmaps de tex.stackexchange

diumenge, 16 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.

dijous, 1 maig de 2014

Caret: una extensió de Chrome que fa la competència a Sublimetext

Fart de no poder catalanitzar Sublimetext i veure els menús en anglès? Bé, comencen a sorgir alternatives de codi obert, una d'elles realment destacable. Es tracta de Caret, una extensió per a Chrome amb llicència GPL que es pot trobar al Chrome Web Store per instal·lar immediatament al nostre navegador i obtenir així tota la potència d'un editor de text professional.

Què fa Caret? Té una pila de característiques d'un editor de text avançat:

  • Acoloriment de la sintaxi. Si editem LaTeX, Markdown o un altre llenguatge el sistema el detecta i n'acoloreix la sintaxi facilitant així l'edició. Falta l'acoloriment per a reStructured Text però vull mirar com es creen els fitxers a veure si me'n surto. Es pot canviar el tipus d'acoloriment clicant al desplegable que apareix a la part inferior dreta de la pantalla.
  • Configuració personalitzable: allò que els usuaris volen de Sublimetext i no aconsegueixen: que els parli amb la seva llengua amb Caret es pot fer. Si us l'instal·leu i voleu que us parli en català només cal que copieu el contingut del fitxer menus.json al vostre i el sobreescriviu (Configuració -> Menús: menus.json).
  • L'editor ve amb diferents temes que es poden canviar fàcilment, només cal desplegar les opcions a la part inferior dreta de la pantalla.
  • Els fitxers s'obren en pestanyes de manera que es pot treballar amb diferents fitxers alhora. També es pot obrir tot un directori i anar editant els diferents fitxers del Projecte que es veuen en una barra a mà esquerra.
  • Es poden fer seleccions múltiple amb la combinació Ctrl+D.
  • Opció Vés a: amb Ctrl+P podem obrir una finestreta on al començar a escriure-hi una expressió ens apareix la llista de fitxers del projecte on es troba. Molt interessant.
  • Hi ha altres opcions que en treballar es van descobrint i que fan de Caret un excel·lent substitut de Sublimetext, que fa una mica de ràbia, què voleu que us digui.

 Es pot trobar la documentació del projecte a la wiki de github:  https://github.com/thomaswilburn/Caret/wiki

dimarts, 4 febrer de 2014

Sublime Text builds per LaTeX

Si sou afeccionats a l'editor Sublime Text i voleu utilitzar-lo per editar i processar els vostres fitxers LaTeX i amics, vet aquí uns quants Build Systems:

PDFLaTeX

Per processar amb pdflatex creeu un fitxer pdflatex.sublime-build amb aquest contingut:
{
  "shell_cmd": "pdflatex -interaction=nonstopmode $file"
}

ConTeXt

Per processar un fitxer ConTeXt i obtenir-ne un PDF creeu un fitxer context.sublime-build amb aquest contingut:

{
   "shell_cmd": "texexec --pdf --nonstopmode $file"
}

XeLaTeX

Si voleu aprofitar els tipus de lletra OpenType i TrueType precesseu els vostres fitxers LaTeX amb aquest xelatex.sublime-build :
{
   "shell_cmd": "xelatex -interaction=nonstopmode $file"
}

Ah! i Posats a modificar podeu personalitzar les vostres preferències a Preferences.sublime-settings:

// Settings in here override those in "Default/Preferences.sublime-settings",
// and are overridden in turn by file type specific settings.
{
    // Show folders in the side bar in bold
    "bold_folder_labels": true,
    // If enabled, will highlight any line with a caret
    "highlight_line": true,
    // Makes tabs with modified files more visible
    "highlight_modified_tabs": true,
    // Set to true to automatically save files when switching to a different file
    // or application
    "save_on_focus_lost": true,
}