TeXでオートマトンを書く

Vaucanson を知らないとオートマトン界隈ではモグリ?

一昨年まで、形式的検証手法の研究をしていた学生だった。
形式的検証の表記をする上で、オートマトン(を構文的・意味論的・操作的に拡張した物)を使用するので、論文の1/3はオートマトンの図で占有されてしまう。
そんなオートマトンを図で書く時は、もっぱらInkscapeを使っていた。
あれだと、SVG形式であとから修正できるし、アンチエイリアスかかって結構綺麗にできるんだよねぇ。

と、思い出はここまでにして。

先日、こんなツイートを見かけた。

Vaucanson Project

え、こんな便利な物あったの?
ということで、早速使ってみることにした。

TexLive with Vaucanson

TeX Liveだと簡単に入っちゃうんです

最近のTeX環境は texlive とのことなので、まずはさくっと導入。

$ sudo apt-get install texlive-full

( -ω-) 気長に待つ...

その間にいろいろ検索していると、VaucansonはTeX Liveのパッケージマネージャで導入可能との記載を見つけた。
ほぉ、こんな便利な物が・・・

tlmgr - TeX Live - TeX Users Group

tlmgrでコケる

TeX Liveの導入が終わったので、さっそくtlmgrを使ってみる。

$ tlmgr update --self
(running on Debian, switching to user mode!)
cannot setup TLPDB in /home/USER/texmf at /usr/bin/tlmgr line 5308.

セットアップに失敗した...
次のコマンドで、対処できた。

$ tlmgr init-usertree

そして、再度実行すると...

$ tlmgr update --self
/usr/bin/tlmgr: Initialization failed (in setup_unix_one):
/usr/bin/tlmgr: could not find a usable xzdec.
/usr/bin/tlmgr: Please install xzdec and try again.

どうやら、xzdecというコマンドが無いようなので、さくっと導入。

$ sudo apt-get install xzdec

これでOK。

あとは、次のコマンドでVaucansonを導入する。
(sudoでやる意味はなかったかも?)

$ sudo tlmgr install vaucanson-g

Vaucansonでオートマトン

本家サイトにあるサンプルで、オートマトンを描いてみた。

\documentclass[dvips]{jsarticle}
\usepackage{vaucanson-g}

\begin{document}
\begin{VCPicture}{(-1, 1)(4, 1)} 
  \State[p]{(0,0)}{A}
  \State[q]{(9,0)}{B}
  \Initial{A}
  \Final{B}
  \EdgeL{A}{B}{a}
\end{VCPicture}
\end{document}

Vaucansonのドキュメントによると、

  • Vaucansonはpdflatexと互換性が無い
  • DVI viewer だと上手く表示されない (Postscript形式にしてくれ)

とのこと。

なので、dvi -> ps -> pdf で表示することに。

$ platex vaucanson.tex
$ dvips vaucanson.dvi
$ ps2pdf vaucanson.ps
$ evince vaucanson.pdf

これで、見事サンプルのオートマトンを描けました。

・・・にしても、これ、設定値が多いなぁ。
LuaTexとかで、スリムに出来ないだろうか?