Re: 2ページにまたがる文字のカラー出力

名前: nide
日時: 2003-01-15 14:38:55
IPアドレス: 160.11.72.*

>>15121 SHIMAさん、角藤さん、いろいろ情報ありがとうございます。 とりあえず、dvi-text相互変換については、 角藤さんが >>15092 で紹介下さった dv2dt/dt2dvが 使えたので、これでやってみました。 >>15093 の日本語TeXでのDVIの唯一の拡張には もちろん?対応していませんでしたが、対処は簡単そうです。 で、これらと組み合わせて作る下のようなawkプログラムを 書いてみました。とりあえずtpic specialは保留して (私がよく知らないので)、color specialだけに着目します。 --dtlsep.awk-- /^special[1-4] [0-9]+ 'color push\y/{ color_stack[++color_sp] = $0 print; next } /^special[1-4] [0-9]+ 'color pop\y/{ --color_sp print; next } /^eop\y/{ for(i = color_sp; i; --i) print "special1 9 'color pop'" print; next } /^bop\y/{ print for(i = 1; i <= color_sp; ++i) print color_stack[i] next } { print } そして、上記のdv2dt/dt2dvをコンパイルしたもの(Cコンパイラが あれば容易です)と、UNIXでは下記のdvisepsh、DOSではdvisepsh.bat を用意します。 --dvisepsh-- #!/bin/sh dv2dt "$1" | awk -f dtlsep.awk | dt2dv /dev/stdin "$2" --dvisepsh.bat-- @echo off dv2dt "%1" | jgawk -f dtlsep.awk > tmp.dtl dt2dv tmp.dtl "%2" del tmp.dtl で、コマンドプロンプトで dvisepsh old.dvi new.dvi とすると、とりあえず手元の例では成功して、 SHIMAさんのdvisepで処理したのと同じ結果を得ました。 ただしdtlsep.awkは、非常に古いjgawkを使う場合は 4箇所の「\y」を全部除去しないとうまく動かないかもしれません。 今回の用途ではtfm/jfmを読む必要はないので、 dvi-text相互変換プログラムは自作も簡単にできそうです。 実際、perlで作りかけていたのですが、 dv2dt/dt2dvを知ったので、製作を続行するか、 作るとするとこれと仕様を揃えるかどうか、迷っています。 dv2dt/dt2dvにも微妙に気に入らない点はあるのですが…

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)