TeXが出力するDVIファイルをパースして整形して表示するプログラムつくりました
pLaTeXとかが出力するDVIファイルをパースして整形して表示するプログラムつくりました。
バイナリ形式でちっとも読めやしないDVIファイルを分かりやすく表示することができます。
https://github.com/yayugu/ParseDVI
用途
出力されたPDFを見るだけでは飽きたらず、「この行がベタ組みになっているか確認したい」とか、「ここ2ptぐらいズレてる気がするんだけど」みたいに病的に組版を追究するTeXnicianにおすすめです。
DVIの仕様
DVIファイルの仕様についてはこのへんを参考に
http://ascii.asciimw.jp/pb/ptex/dvi/index.html
http://akagi.ms.u-tokyo.ac.jp/dvi.html
出力例
pre mag=1000 bop [1] right -72.269989013671875 down -72.269989013671875 xxx pdf:docview <</ViewerPreferences <</Direction /R2L>> >> down 3254.3131866455078125 down -3239.0255889892578125 down 393.75 right 19.3583831787109375 down -393.75 dir tate down -492.029998779296875 fnt_def brsgnmlminb-v 23.9400177001953125 fnt brsgnmlminb-v 23.9400177001953125 set こころ y 21.0 y0 21.0 right 348.75 fnt_def brsgnmlminr-v 11.25 fnt brsgnmlminr-v 11.25 set 夏目漱石 y0 21.0 set 上 先生と私 y0 21.0 set 一 y0 21.0 set down -5.625 right -16.875 down -2.8125 fnt_def brsgnmlminr-v 5.625 fnt brsgnmlminr-v 5.625 set わたくし down 5.625 right -11.25 fnt brsgnmlminr-v 11.25 set 私 right -11.25 set はその人を常に先生と呼んでいた。 right 11.25 set だからここでもただ先生と書くだけで y0 21.0 set 本名は打ち明けない。 w 11.25 set これは世間を down -5.625 right -11.25 down -2.8125 fnt brsgnmlminr-v 5.625 set はば down 5.625 right -11.25 fnt brsgnmlminr-v 11.25 set 憚 right -11.25 set かる遠慮というよりも、 w0 11.25 set その方が私にと y0 21.0 set って自然だからである。 w 11.25 set 私はその人の記憶を呼び起すごとに、 w0 11.25 set すぐ w 5.625 set 「先生」 w0 5.625 set と y0 21.0
こんなかんじ。連続するsetをつなげたり、push, popをインデントで表現することですごく見やすくなってるんじゃないでしょうか。
使い方
$ ruby parseDVI.rb input.dvi > output.txt