TikZ-dependency で 係り受け木を描く

f:id:tetsuok:20120630035011j:plain

自然言語処理の本や論文を読んでいると, 綺麗な曲線で係り受け木を描いてあるものがあります. 一体どうやって書いているんだろうとずっと以前から思っていたところ, 先日 tikz-dependency という LaTeX のパッケージを見つけました. これは PGF/Tikz (以下 tikz) のラッパーとなっていて, 係り受け木を描くために特化したものとなっています. 論より証拠ということで, 日本語の文の係り受け木を描く例のコードを示します.

係り受け木を描く機能は dependency 環境を使います. オプションとして "theme = simple" というのがありますが,これは係り受け木の見栄えを変えるものです. 続いて入力となる文を deptext 環境内に書きます.コードの例では,文節単位の日本語の係り受けを考えているため,文節単位で区切っています.  そして, 各文節間の係り受け関係を \depedge 命令で指定します. \depedge は "係り元文節ID", "係り先文節ID", "ラベル" の 3つの引数が必要です. この文節 ID は 先の deptext 環境内に書いた各文節のインデックスです. インデックスは 1 から始まるようになっており, tikz-dependency 側で勝手に割り当てられるようになっています. 上のコードを XeLaTeX でコンパイルすると記事の最初にあるような図が出来上がります. 個人的には power point や Keynote で頑張って曲線を描いていたときよりもずっと楽に書けると思います (卓越したマウスやトラックパッドによる微調整も不要です).