TeXでオートマトンを書く
Vaucanson を知らないとオートマトン界隈ではモグリ?
一昨年まで、形式的検証手法の研究をしていた学生だった。
形式的検証の表記をする上で、オートマトン(を構文的・意味論的・操作的に拡張した物)を使用するので、論文の1/3はオートマトンの図で占有されてしまう。
そんなオートマトンを図で書く時は、もっぱらInkscapeを使っていた。
あれだと、SVG形式であとから修正できるし、アンチエイリアスかかって結構綺麗にできるんだよねぇ。
と、思い出はここまでにして。
先日、こんなツイートを見かけた。
ちなみに記事中の図は論文のものなんだけど,VaucaonsonというTeXの作図ツール使ってます.
http://t.co/PkY2tSXhzu
綺麗なオートマトンがかけるのでお気に入り.Sakarovitch大先生携わってるしね. pic.twitter.com/tTZXAHjLpr
— Ryoma Sin'ya (@sinya8282) 2014, 5月 3
え、こんな便利な物あったの?
ということで、早速使ってみることにした。
TexLive with Vaucanson
TeX Liveだと簡単に入っちゃうんです
最近のTeX環境は texlive とのことなので、まずはさくっと導入。
$ sudo apt-get install texlive-full
( -ω-) 気長に待つ...
その間にいろいろ検索していると、VaucansonはTeX Liveのパッケージマネージャで導入可能との記載を見つけた。
ほぉ、こんな便利な物が・・・
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とかで、スリムに出来ないだろうか?