……のはずなのですが,いくらかクセがあるようで思うような出力が得られま せんでしたので,諸設定を試してみました.
以下のような留意点があるようです.
# A4 幅 set width 1177 set height 831 canvas .c -width $width -height $height -background white pack .c; update .c postscript -file foo0.ps -pagex 1 -pagey 1 -pageanchor nw -rotate 1横置きとしたかったので「-rotate 1」を指定しています.出力位置の指定の 「-pagex 1 -pagey 1 -pageanchor nw」は本来必要ないはずですが,そのまま PostScript へ出力すると用紙の端と描いた矩形の端にズレが生じてしまう ためこれを合わせるために指定しています.
これにより用紙サイズが 1177x831 ピクセルと算出されました.
この矩形へ加えて,さらにたすき掛けに×を描き,領域出力が希望どおりに行 なわれているかを確認します.A4 用紙上に次のように線を描きます.
「-pageanchor」はキャンバスの他のアイテムと同様「n,e,w,s,c」の引数を受 けますが,ここで中央「c」を指定してみます.中央座標は (x1,y1) なので, これを指定すると次のようになります.
.c postscript -file foo5.ps -pagex $y1 -pagey $x1 -pageanchor c -rotate 1「-rotate」を有効にしているので x と y 座標の指定が入れ替わっています.
先の左上をアンカーに指定したものと同様,A4 用紙いっぱいに出力されるは ずです.ところが,この出力はうまく紙面の中央へ配置することはできません. 実はキャンバス上の座標は PostScript 出力のときに 1/0.72 倍されているの です(この理由はよくわかりません).このため中央を表わすためには先の指 定座標を 0.72 倍しておく必要があります.次のようになります.
.c postscript -file foo5.ps -pagex [expr $y1*0.72] -pagey [expr $x1*0.72] -pageanchor c -rotate 1
set w2 [expr $width/2] set h2 [expr $height/2] foreach {x y fname} \ "$x0 $y0 foo1.ps $x1 $y1 foo2.ps $x1 $y0 foo3.ps $x0 $y1 foo4.ps" { .c postscript -file $fname \ -x $x -y $y -width $w2 -height $h2 \ -pagex [expr .72*$h2] -pagey [expr .72*$w2] -pageanchor center \ -pagewidth [expr .72*$width] \ -rotate 1 }「-rotate」によって -pagex, -pagey の指定が入れ替わるのであれば, -pagewidth の指定もキャンバスの縦幅を指定しそうなものですが,ここでは 横幅を指定するもののようです.
それぞれの切り出した結果 foo[1234].ps を下のリンクにおきます. ファイルを閲覧すると領域端がきっちり切り出されていることがわかります.