Drawing graphs and automata in LaTeX
September 21st, 2006
I am currently enrolled in a class entitled “Automata, Computability, and Formal Languages” at UNO. It’s a neat class. The professor requires us to submit our homework in both hard and soft copies. Naturally, he suggests we use LaTeX to typeset our homework.
Given that this is a class on automata, I end up drawing a lot of state diagrams to represent the machines I have to design for the problems. I wanted a nice way to draw these and put them in to my LaTeX document. The first thing I did was check to see if OmniGraffle exported to EPS, and it did. LaTeX can read EPS, so I was okay if I couldn’t find anything better.
With a solution in hand, I started to look and see if there was anything I could use to typeset these graphs right in the LaTeX source itself. Preferably something designed for drawing finite state-machines, even. What I found was GasTeX. It is a decently cool package.
The following source code from their samples page:
\begin{center}
\unitlength=4pt
\begin{picture}(15, 28)(0,-10)
\gasset{Nw=5,Nh=5,Nmr=2.5,curvedepth=3}
\thinlines
\node(A0)(7.5,0){$0$}
\node[Nmarks=i,iangle=90](A1)(0,13){$1$}
\node[Nmarks=if,iangle=90,fangle=90](A2)(15,13){$2$}
\drawloop[loopangle=180](A1){$a$}
\drawloop[loopangle=0](A2){$b$}
\drawedge(A1,A2){$a$}
\drawedge(A2,A1){$b$}
\drawedge(A2,A0){$a$}
\gasset{curvedepth=-3}
\drawedge[ELside=r](A1,A0){$b$}
\drawloop[loopangle=270](A0){$a, b$}
\end{picture}
\end{center}
\caption{La complétion de l’automate.}
\end{figure}
Generates this graph (which I have scaled down):

One note about this snippet, though, is that I did not have to use the center environment to center the figures. Instead I used the \centering directive inside my figure environment, and that worked nicely.
It’s nice to use and it makes pretty graphs. I’ll be using it for the rest of the semester, that’s for sure!
September 21st, 2006 at 10:07 pm
Doo dooooo do doo doo!
October 20th, 2006 at 12:19 am
You know, I find it kind of funny that what my mind saw at first glance of that graph isn’t a nicely laid out graph, but the diagram for a uterus with some of the associated anatomy.
Tells you where my mind is normally, eh? Thinking about medical issues, of course….what were you thinking?? LOL!