pslib for dcl-5							-*- text -*-

初版: 94/03/31(numaguti) 沼口 敦
改訂: 03/02/05(kagimoto) 鍵本 崇

概要: DCL (dcl-5 以降のバージョン) が出力する PostScript ファイル
      dcl.ps を編集するためのツール

インストール:
      TOP で

         # make install

      することで dcl 本体と一緒に自動的に BINDIR にインストールされる.
      この時, TOP の Mkinclude で AWK, SED の値が適切に設定されている
      必要がある. これらの値は TOP で configure を実行したときに設定さ
      れるが, インストールするプラットフォームに sed が存在しない場合
      にはインストールができず, また awk が存在しない場合にはツールそ
      のものを利用することができない.

注意: SunOS に付属の awk では動作しない. これは引数の数を ARGC によっ
      て, 引数文字列を ARGV によって受け取ることが出来ないからである.
      また nawk ではこれらを受け取ることができるが, - (ハイフン)から始
      まる文字列を引数として受け取ることが出来ない.

      以下で登場する dclps2kdraw および dclpsfix は kdraw を用いて
      dcl.ps を編集したり, またその後処理のために用いられるものである
      が, kdraw が開発環境にないため, 今後利用頻度が少ないと判断された
      段階でパッケージから削除される可能性がある.

簡単なドキュメント:
       各コマンドのヘルプは, 引数を help あるいは -help として起動する
       ことにより出力される. ただし -help は GNU awk のみ指定可能なオ
       プションである.

・dclps2kdraw : kdraw に変換
    usage : % dclps2kdraw <file>

    kdraw で編集可能な形に変換する.
    kdraw は特殊なPSファイル(コメントとしてkdraw独自の命令が入っている)
    を入出力として使っており, その形に合わせておけば, kdraw により編集
    が可能となる. dclpsfont によって PS に変換された文字列は変換されな
    い.

・dclpscat : 複数のファイルを1つのファイルに
    usage : % dclpscat <file>...

    複数のファイルからなる一連の図を1つのファイルの複数ページの出力の
    形にする. 2ページめ以降のヘッダを削除し, 連接する.

・ dclpsfix : コメント削除, kdraw の後処理 
    usage : % dclpsfix <file>

    TeX に組み込んだ時のプリンタのバグに対処するため, BoundigBox 以外
    の %% コメントを削除. また, kdraw で編集した dcl.ps由来のファイル
    で, そのままだとトーンが汚くなるので後処理を行う.

・dclpsfont : PS フォント変換                   
    usage : % dclpsfont [f=<font id>..] [<option>=<value>...] <file>
   *** Options are:
   +        f : font id (((idx,ifont),idx=1,imax),ifont=1,..) [ccCChhHHHttTT]
   +       ai : SymbolMT font is used for Adobe Illustrator 9.x or later [0]
   +      fht : text hight scale factor [1]
   +      fwt : text width scale factor [1]
   +     fact : scale factor [7500]
   +     fhnc : hight scale factor for non-standard char [1]
   +     fwnc : width scale factor for non-standard char [1]
   +     imax : max. of index [4]
   +     irst : end sub(super)script ["]
   +     isub : begin subscript [_]
   +     isup : begin superscript [|]
   +    lcntl : 1/0 : sub(super)script on/off [0]
   +    shift : shift of sub(super)script [0.3]
   +    small : ratio of sub(super)script [0.7]
   +** Font id are:
   - a :   AvantGarde-Book
   - A ::  AvantGarde-Demi
   - b :   Bookman-Light
   - B ::  Bookman-Demi
   - c :   Courier
   - C ::  Courier-Bold
   - h :   Helvetica
   - H ::  Helvetica-Bold
   - i :   Times-Italic
   - I ::  Times-BoldItalic
   - n :   NewCenturySchlbk-Roman
   - N ::  NewCenturySchlbk-Bold
   - o :   Courier-Oblique
   - O ::  Courier-BoldOblique
   - p :   Palatino-Roman
   - P ::  Palatino-Bold
   - s :   Helvetica-Oblique
   - S ::  Helvetica-BoldOblique
   - t :   Times-Roman
   - T ::  Times-Bold
   - z :   ZapfChancery
   - Z ::  ZapfChancery-Bold

    dcl で書かれた文字を PS フォントに変換する. たくさんオプションがあ
    り, フォントが選択できる. オプションにより, 上付き, 下付き文字にも
    対応可. ギリシャ文字も出力される. 文字の向きは紙が縦向き
    (Portrait) か横向き (Landscape) かによって自動判別する. 

    ※sgtx[uvr], sgtxz[uvr] で書かれた文字列において, 文字コード 0 ～
    127 の文字と文字コード 128 ～ 255 の文字を混ぜた複合文字列を用いた
    場合には変換されない.

    ※Adobe Illustrator 9.x 以降で用いる場合には Symbol フォントを
    SymbolMT フォントに変更する必要がある(オプション ai=1).

・dclpsline : 線のスタイル(join,cap)変更
    usage : % dclpsline [lc=<0,1,2,b,r,p] [lj=<0,1,2,m,r,b>] [ml=<num>] <file>
   Options:
   +       lj : 0|m: miter join, 1|r: round join, 2|b: bevel join [0]
   +       ml : miterlimit for lj=0|m [10]
   +       lc : 0|b: butt cap,   1|r: round cap,  2|p: proj. square cap [0]

    線のスタイルは, 数字または頭文字で指定.

・dclpsmargin : PostScript の余白の調節と BoundingBox の再設定
    Usage: dclpsmargin [options]
      [options]
       -m margin        : ratio of border to real figure size (default: 0.05)
       -i infile[.ps]   : input file created by dcl. If not specified, the
                         standard input is used
       -o outfile[.eps] : output file. If not specified, the standard output
                         is used
       -h               : print this message

    TeX に dcl.ps を取り込む際に, 余分な余白を取り除くときに有効である.
    たとえば dclpsrmcm でバックグラウンドの白い長方形とコーナーマーク
    を取り除き, その後 dclpsmargin で余白のサイズを指定すると, その分
    の余白を確保して残りは削除され, この作業に応じて BoundingBox の再
    設定を行う. したがって TeX の graphics (あるいは graphicx) パッケー
    ジにおいて BoundingBox の設定を trial and error で行う必要がなくな
    る.

・dclpsmerge : 複数ページの図を1ページに重ねる  
    usage : % dclpsmerge <file>..

   複数のファイルまたは1つのファイルの中の一連の図を重ね合わせて1枚の
   図にする.

・dclpsnup : 1枚の紙に複数のページの PostScript を配置

   GNU awk 版
     usage : % dclpsnup -nup [-c] [-r] [-l] [-p] <file>...
         -nup: number of pages on one sheet
         -c:   column-major layout
         -r:   row-major layout
         -l:   landscape orientation
         -p:   portrait orientation

    nawk 版
     usage : % dclpsnup nup=<number> [cmajor=1] [rmajor=1] 
                                     [landscape=1] [portrait=1] <file>...
         nup:       number of pages on one sheet
         cmajor:    if the value is 1, column-major layout
         rmajor:    if the value is 1, row-major layout
         landscape: if the value is 1, landscape orientation
         portrait:  if the value is 1, portrait orientation

    psutils の psnup とほぼ同じ働きをするスクリプトである. 現在までの
    ところ, 2-up(2x1), 4-up(2x2), 8-up(2x4), 9-up(3x3), 16-up(4x4),
    25-up(5x5) まで対応済み.

・dclpsrmcm : バックグラウンド, 外枠の除去      
    usage : % dclpsrmcm <file>

    バックグラウンド(通常は白)と, 四隅のコーナーマークを削除する.

・dclpsrot : 90度回転                        
    usage : % dclpsrot <file>

    TeX に取り込むなどのために, 図を 90度回転する.

・dclpsselect : ページの選択               
    usage : % dclpsselect [p=<page>,<page>...] [from=<page>] [to=<page>] <file>
   Options:
   +     from : select range of page from: [0]
   +       to : select range of page to: [0]
   +        p : select pages [0]

    1つのファイルの中に複数ページのPSが入っている場合, それからある特
    定の複数のページ, またはある範囲のページを選択する. p オプションで
    指定する複数のページリストは昇順でなければならない.

・dclpsseparate : ページ毎のファイルに分割      
    usage : % dclpsseparate <file>

    1つのファイルの中に複数ページのPSが入っている場合, それを1ページか
    らなる複数のファイルに分割する. 出力は, ファイル名が XXX.ps の場合,
    XXX_001, XXX_002, ... となる. 

・dclpsunrot : 90度回転undo                  
    usage : % dclpsunrot <file>

    dclpsrot で90度回転した図を元に戻す.
