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