« 期日前投票 | メイン | お祭り »

2005年09月10日(土曜日)

数式日記システムの改良計画 [ プログラミング ]

nDiaryの日記にTeXの数式を画像として埋め込むFilterは一応動いているのだが,数式に出会うたびに,TeX, dvips, convert が順番に呼ばれるため,最終結果までかなりの時間がかかる。特に過去の日記全体を変換するときなど,ゆっくりお茶が飲めるほどだ(大昔のコンパイラーの時代に戻ったと思えば良いのだが)。

さすがに遅いので,速度改善のためにアルゴリズムを変更することにした。プロファイラーで調べたわけじゃないので確かなことは分からないが,おそらくは,毎回tmp.texというファイルを作り,それをlatexでdviにコンパイルする部分で時間がかかっていると思う。大体,latexのたびに,いろいろなスタイルファイルを読み込んでいるのだから,オーバーヘッドは相当なものだ。次のようにして,latexの処理を1回で済ませるようにプログラムを書き換えようと思う。

nDiaryから数式への変換Filterが呼ばれると,数式画像へのリンク情報(つまりURIというかPATH)と数式ソース(つまりlatexコード)をペアにして保存する。そして,日記本体の方は,今までと同じ要領で,数式部分を画像へのリンクで置き換えて作成する。日記が作成された後に数式を画像に変換する処理を一括して行う。例えば数式を30個作らなくてはならないとすると,数式のあとに \vfil\eject などと書くことにより,30ページからなるtex文書を作る。これを latex でコンパイルすると,30ページからなる dviファイルができる。dvips は,特定のページだけを取り出して処理することができるので,dvips と convert を30回呼び出せば良い。最後の部分も一括してできればその方が良いのは明らかなのだが,今のところどうしていいか分からないので,妥協した。

こんな感じだが,LaTeXが1回で済むというのは大きい。dvips と convert の処理は比較的軽いので,それほどの時間はかからない。

投稿者 sukarabe : 2005年09月10日 14:09

トラックバック

このエントリーのトラックバックURL:
http://njet.oops.jp/cgi/mt/mt-tb-alt.cgi/780

コメント

コメントしてください

comment spam対策のため,名前とメールの入力が必須になっていますが,メールアドレスは公開されません。Web SiteのURLは任意です。Type Key IDをお持ちの方はType Keyをサイン・インしてくださってもいいです。




保存しますか?