dvi2ps出力をEPSとして使う方法
- dvi2psでPSファイルをつくる
- 先頭行を "%!PS-Adobe-2.0 EPSF-2.0" とする
- 必要なら BoundingBox: を修正する
- 全ての"TeXDict"を別の名前に変える
- 全ての"@"を別の名前に変える
#!/usr/local/bin/perl
#
# dvi2psなどの出力するPSファイルをEPSに変換する。
#
# dvi2psの吐く@beginspecialはinitgraphicsなどを含んで
# いるので-sでスケールを指定する必要がある
#
require 'getopts.pl';
&Getopts('s:');
if($opt_s){ $ws = $hs = $opt_s; }
$prologue = 1;
while(<>){
if(/^%%EndProlog/){
$prologue = 0;
}
if(/^%%Pages?:/){
next;
}
if(/^%!PS-Adobe/ && $prologue){
$_ = "%!PS-Adobe-2.0 EPSF-2.0\n";
}
if($ws && $hs){
if(/^(\d+(\.\d*)?)\s+(@+hsize)$/){
$_ = sprintf("%f $3\n",$1 * $hs);
}
elsif(/^(\d+(\.\d*)?)\s+(@+vsize)$/){
$_ = sprintf("%f $3\n",$1 * $ws);
}
}
# TeXDictと@で始まる名前を変更する
s/TeXDict/$&X/g;
if($prologue){
s/@[^@]/@$&/g;
}
else {
if(s/^@[^@]/@$&/){}
elsif(s/ (@[^@])/ @$1/){}
}
print;
}