名前: ZR 日時: 2008-02-08 17:17:25 IPアドレス: 124.84.162.*
>>50903 dviout のヘルプによると、画像取り込みの special は XXXfile=<filename> hsize=<dim> vsize=<dim> (XXX は PS, eps, bmp, png 等; 多くのパラメタを省略) となっていて <dim> の部分は「bp 単位の数値(単位無)」か「単位付きの数値」 のいずれかを指定することになっています。 # 元々この形式の special は dvips の為のもので、そこでは XXX は PS に # 限られ、また長さ指定は前者の方法に限られていたのでしょう。さらに、 # rwi という単に hsize の 10 倍を表す値を与えるパラメタもあるので、 # もしかすると指定は整数値に限られていたのかも知れません。 ところが、この <dim> の部分を解釈している関数 get_pt() は、「単位無の 数値」を pt 単位だと思っています。 %<epsbox.c; 抜粋> static float get_pt(char *sf) { SCALED_PT sp; if (length_to_sp(sf, &sp) == 0) return((float)sp/65536.0); else return(atof(sf)); } %<END> だから、inch とのスケールに 72.0 を用いると、この「勘違い」は相殺されます が、単位有の数値を書いた場合は間違った結果になります。あくまで、get_pt() が返すものは pt 単位だとするなら、上のソースの "else" 節で bp から pt へ のスケールが必要でしょう。 # もっとも、何か理由があって故意にそうしているのかも知れないが…。 >>50863 >+ hsize=\the\Gin@req@width in\space% >+ vsize=\the\Gin@req@height in}}% "in" は余計です。\the は pt 単位の数値を "pt" を付けて出力するので。 (つまり上のままだと "hsize=65.2ptin" のようになってしまう。)
この書き込みへの返事: