jueves, 31 de mayo de 2018

Diagramas de estado en LaTeX (TikZ)

TikZ es una paquetería muy poderosa que permite construir graficos complejos en LaTeX. En esta entrada sólo veremos como crear diagramas de estados para FSM's (Finite State Machine). Primero importamos el paquete y las librerías que vamos a utilizar:

\usepackage{tikz}
\usetikzlibrary{automata, positioning, arrows}

La creación de un diagrama se describe a continuación.

Estados

\node[state,opciones,posición] (nombre) {etiqueta de texto};

Las opciones para el tipo de estado contexto de las FSM son:
  • initial : Estado inicial
  • accepting: Estado de aceptación
  • Vacío para un estado genérico 
 La posición puede establecerse de las siguientes maneras:
  •  of= estado : right, left, above, below (o una combinación, ejem: above right ). Ejemplo:
\node[state, right of=q1] (q2) {$q_2$};
  • xshift=x, yshift=y : Da control manual de la posición relativa a un estado. Ejemplo:
\node[state, right of=q1, xshift=1cm] (q2) {$q_2$};
  • at (x,y) : Coloca la figura del estado en una posición especifica en la figura. Ejemplo:
\node[state] (q) at (2, 3) {$q$};
Flechas de transición
\draw (nodo origen) edge[opciones] node{etiqueta de flecha} (nodo destino);
  • El nodo de origen debe llevar el nombre y no la etiqueta del estado.
  • Las flechas por defecto rectas. Se pueden curvar con la opción bend left/right.
  • Los loops se crean con la opción loop above/below/left/right. 
Ejemplo