名前: SHIMA 日時: 2003-02-23 19:34:58 IPアドレス: 61.121.16.*
>>16923 > [*1/2*][*3/49][85/67] > となっていれば製本印刷と同じになります。(最後の3ページがブランク) (勘違いで)出力順序が違っていたようです。 両面印刷プリンタ用中綴じは、それを選んで [Edit] を押して(p4n.pgm です) #j#両面印刷プリンタ用中綴じ :n 1 2 n-1 n-2 3 n-3 4 -> #4to1 :n 1 2 n-1 n-2 3 n-3 4 -> Mv-=z,v&=3,y+=v,z+=3,z/=4;x+=2,y-=2;y,x,x+1,y-1; と直して(3行目の最後、および上の2行のメッセージ部分)、上書き保存して 終了すればよいでしょう。 同様に、両面印刷プリンタ用中綴じ* の方も #j#両面印刷プリンタ用中綴じ*:n * 1 n-1 2 n-2 2 n-3 3 -> #4to1* :n * 1 n-1 2 n-2 2 n-3 3 -> Mv-=z,v-=1,v&=3,y+=v,z+=4,z/=4;x+=2,y-=2;y,x-1,x,y-1; とすればよいでしょう。 ----- マクロを解説しておくと([Help] から、ページマクロを見れば詳しい説明があります)。 マクロは M で始まり M<initialize>;<difference>;<pages> の形をしていて、v, w, x, y, z の5つの変数が使用可能で、例えば C 言語で言えば v = w = 0; x = <start_page>; y = <end_page>; z = y - x + 1; for(<initialize>; z > 0; <difference>, z--) { <pages> の出力;} という形です。 pagesの「式」の値が指定範囲に入っていなければ、通常は空白ページが出力される。 ---- 最初の例は、以下の意味です。 { v = w = 0; x = <start_page>; y = <end_page>; z = y - x + 1; for( v-=z,v&=3,y+=v,z+=3,z/=4; z > 0; x+=2,y-=2, z--){ PRINT(y);PRINT(x-1);PRINT(x);PRINT(y-1); } } void PRINT(int page) { if(page >= <start_page> && page <= <end_page>) page ページを出力; else 空白ページ出力; }
この書き込みへの返事: