GROPS(1)

名称
grops - groff 用 PostScript ドライバ

書式
grops [-glmv] [-b n] [-c n] [-w n] [-F dir] [ files... ]

コマンドラインオプションとパラメータの間に空白を含めることが可能です。

解説
grops は GNU troff の出力を PostScript に変換します。 通常 grops は groff コマンドを -Tps オプション付きで起動した時に起動されます。 (groff のデフォルトです。) ファイルを指定しないと、 grops は標準入力を読みます。 ファイル名 - を指定しても、 grops は標準入力を読みます。 PostScript 出力は標準出力に書きます。 grops を groff から起動する場合、 groff -P により、オプションを grops に渡せます。

オプション

-bn 不良なスプーラとプレビュアのための対処をします。 通常、 grops は Document Structuring Conventions version 3.0 を満たす出力を生成します。 値 n は、不良プログラムが受理可能な出力を grops が行うように制御します。 値 0 は grops に何も対処しないようにさせます。 %%BeginDocumentSetup と %%EndDocumentSetup のコメントを生成してはならない場合 1 を加えます; 初期バージョンの TranScript は %%EndProlog コメントと最初の %%Page コメントとの間で混乱させられましたので、これが必要です。 インクルードされたファイルで %! から始まる行を取り除かねばならない時には 2 を加えます; Sun の pageview プレビュアで必要です。 インクルードされたファイルから %%Page, %%Trailer, %%EndProlog コメントを取り除かねばならない時には 4 を加えます; %%BeginDocument と %%EndDocument のコメントを理解しないスプーラに対して必要です。 PostScript 出力の最初の行が %!PS-Adobe-3.0 ではなく %!PS-Adobe-2.0 でなければならない時には 8 を加えます; Sun の Newsprint をページ逆順を要求するプリンタと共に使用する時に必要です。 デフォルト値は

        broken n

    コマンドを DESC ファイルに記述することで指定可能です。 そうでない場合はデフォルト値は 0 です。

-cn 各ページを n 部ずつ印刷します。

-g  ページ長を予測します。 ページ長を予測する PostScript コードを生成します。 イメージ領域が垂直位置でページの中心に有る時のみ、予測は正しいはずです。 このオプションにより、変更無しで letter (8.5×11) と A4 の両方に印刷可能な文書を生成可能です。

-l  文書をランドスケープ形式にて印刷します。

-m  文書に対し手動フィードを有効にします。

-Fdir
    ディレクトリ dir/devname からフォントとデバイス記述ファイルを探します; name はデバイス名であり、通常 ps です。

-wn 線の太さを M の横幅 (em) の 1000 分の n にて描画します。

-v  バージョン番号を表示します。

使用法
R, I, B, BI と呼ばれるスタイルがフォント位置 1 から 4 までにマウントされます。 フォントはファミリ A, BM, C, H, HN, N, P, T にまとめられ、これらのスタイル中にメンバを持ちます:

AR  AvantGarde-Book

AI  AvantGarde-BookOblique

AB  AvantGarde-Demi

ABI AvantGarde-DemiOblique

BMR Bookman-Light

BMI Bookman-LightItalic

BMB Bookman-Demi

BMBI
    Bookman-DemiItalic

CR  Courier

CI  Courier-Oblique

CB  Courier-Bold

CBI Courier-BoldOblique

HR  Helvetica

HI  Helvetica-Oblique

HB  Helvetica-Bold

HBI Helvetica-BoldOblique

HNR Helvetica-Narrow

HNI Helvetica-Narrow-Oblique

HNB Helvetica-Narrow-Bold

HNBI
    Helvetica-Narrow-BoldOblique

NR  NewCenturySchlbk-Roman

NI  NewCenturySchlbk-Italic

NB  NewCenturySchlbk-Bold

NBI NewCenturySchlbk-BoldItalic

PR  Palatino-Roman

PI  Palatino-Italic

PB  Palatino-Bold

PBI Palatino-BoldItalic

TR  Times-Roman

TI  Times-Italic

TB  Times-Bold

TBI Times-BoldItalic

ファミリのメンバではない以下のフォントもあります:

ZCMI
    ZapfChancery-MediumItalic

SS および S と呼ばれる特別なフォントも有ります。 Zapf Dingbats は ZD として、逆バージョンの ZapfDingbats (シンボルが逆向き) は ZDR として使用可能です; これらのフォントのほとんどの文字は名前が無いので、 \N にてアクセスせねばなりません。

grops は \X エスケープシーケンスにより生成された様々な X コマンドを理解します; grops は ps: タグから始まるコマンドのみを翻訳します:

\X'ps: exec code'
    code 中の任意の PostScript コマンドを実行します。 code 実行前に PostScript の現在位置は \X の位置に設定されます。 原点はページの左上になり、y 座標はページを下ると増加します。 プロシジャ u は、groff の単位を有効な座標系のものに変更するように定義されます。 例えば、

        .nr x 1i
        \X'ps: exec \nx u 0 rlineto stroke'

    は 1 インチ長の水平線を描画します。 code はグラフィックステートを変更し得ますが、ページの終端までしか継続しません。 def と mdef により指定される定義を含む辞書は、辞書スタックの頭に有るでしょう。 あなたのコードがこの辞書に定義を付加するなら、 \X'ps mdef n' を使用して、そのための空間を割り当てる必要が有ります。 定義はページの終りまでしか継続しません。 \Y エスケープシーケンスをマクロを名付ける引数と共に使うと、 code を複数行に渡らせることが出来ます。 例えば、

        .nr x 1i
        .de y
        ps: exec
        \nx u 0 rlineto
        stroke
        ..
        \Yy

    は 1 インチ長の水平線を描画する別の方法です。

\X'ps: file name'
    exec コマンドと同様ですが、コードをファイル name から読みます。

\X'ps: def code'
    code の PostScript 定義をプロログ部に置きます。 \X コマンドに対し最大 1 定義までです。 長い定義は複数の \X コマンドに渡り分割できます; 全ての code 引数は、改行で区切られ、単純に連結されます。 定義は、 exec コマンド実行時に辞書スタックに自動的にプッシュされる辞書に置かれます。 \Y エスケープシーケンスをマクロを名付ける引数と共に使うと、 code を複数行に渡らせることが出来ます。

\X'ps: mdef n code'
    def と同様ですが、 code は n 個まで定義を保持し得ます。 grops は何個の定義を code が含むのかを知る必要が有るので、これらを含む適切な大きさの PostScript 辞書 を生成できます。

\X'ps: import file llx lly urx ury width [ height ]'
    PostScript グラフィックスを file からインポートします。 引数 llx, lly, urx, ury は、デフォルトの PostScript 座標系における グラフィックのバウンディングボックスを与えます; すべて整数である必要が有ります; llx と lly はグラフィックの左下の x y 座標です; urx と ury はグラフィックの右上の x y 座標です; width と height は整数であり、groff の単位でグラフィックの幅と高さを与えます。 グラフィックは延び縮みして、この幅と高さになり、 グラフィックの左下角は \X コマンドにて関連づけられた場所に位置します。 引数 height を省略すると、x y 方向が同等に縮尺され、 指定した幅になります。 \X コマンドの内容は troff が解釈しないことに注意して下さい; グラフィックのための垂直方向の空白は自動的に付加されず、 width と height の引数にスケーリングインジケータを付加することは許されません。 PostScript ファイルが Adobe Document Structuring Conventions から成り、 %%BoundingBox コメントを含む場合、 psbb リクエスト実行により、groff 中でバウンディングボックスを自動的に取得可能です。

    -mps マクロ ( grops が groff コマンドから起動された時には自動的にロードされます) は、 画像を容易にインポート出来るようにする PSPIC マクロをインクルードします。 フォーマットは以下です。

        .PSPIC [ -L | -R | -I n ] file [ width [ height ]]

    file は画像を含むファイル名; width と height は要求する画像の横幅と高さです。 引数 width と height にはスケーリングインジケータを付けても構いません; デフォルトのスケーリングインジケータは i です。 このマクロは、 画像の幅が width 以下および 画像の高さが height 以下の範囲において、画像を x y 方向同等で縮尺します。 デフォルトで、画像は水平的に中心に置かれます。 -L および -R はそれぞれ画像を左寄せおよび右寄せします。 -I オプションは、画像を n だけインデントします。

\X'ps: invis'

\X'ps: endinvis'
    これらの \X コマンドにて囲まれたテキストと描画コマンドは出力を生成しません。 このコマンドは、 troff の出力を grops で処理する前に見るために有ります; プレビュアがある文字または構造を表示できない時、 これらの \X コマンドで囲むことにより、 代わりの文字または構造をプレビュー用に使えます。

    例えば、標準の X11 フォントには含まれませんので、 gxditview は \(em 文字を正しく表示できません; この問題は以下のリクエストを実行することにより解決できます。

        .char \(em \X'ps: invis'\
        \Z'\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m''\
        \X'ps: endinvis'\(em

    この場合、 gxditview は \(em 文字を表示できず線を引きますが、 grops は \(em 文字を印刷し線を無視します。

grops への入力は troff (1) の出力形式である必要が有ります。 これは groff_out (5) に記載してあります。 また、使用するデバイスに関するデバイス及びフォントの記述ファイルは 仕様に合致する必要が有ります。 ps デバイスに対して提供されているデバイス及びフォントの記述ファイルは 完全にこの仕様に合致します。 afmtodit(1) を使って AFM ファイルからフォントファイルを生成可能です。 解像度は、整数値かつ sizescale の 72 倍の倍数である必要が有ります。 ps デバイスは解像度 72000 および sizescale 1000 を使用します。 デバイス記述ファイルはコマンド

    paperlength n

を含む必要が有ります。これは生成される出力が、ページ長 n マシン単位に適していることを意味します。 各フォント記述ファイルはコマンド

    internalname psname

を含む必要が有ります。これは PostScript におけるフォント名が psname であることを意味します。 また、コマンド

    encoding enc_file

を含む場合も有ります。これは PostScript フォントが enc_file に記載されたエンコード方式で再度エンコードする必要が有ることを意味します; このファイルは以下の形式の行のシーケンスから成ります:

    pschar code

ここで pschar は PostScript における文字名であり、 code はエンコードにおける位置を 10 進整数で表したものです。 フォントファイルにおいて与えられる各文字のコードは、 エンコードファイルにおける文字のコードに対応するか、 もしくは PostScript フォントが再度エンコードされていない場合は デフォルトエンコードにおけるコードに対応する必要が有ります。 このコードを \N エスケープシーケンスと共に troff 中で使うことにより文字を選択可能です。 これは、文字が groff での名前を持たなくても可能です。 フォントファイル中の全ての文字は PostScript フォント中に存在することが 必要であり、 フォントファイル中で与えられる幅は PostScript フォントで使用される幅に マッチする必要が有ります。 grops は、groff における名前が space である文字をブランク (ページ上に何も印を付けない) であるとしています; これにより、効率の良い小さな PostScript 出力が得られます。

grops は文書印刷に必要なダウンロード可能なフォントを自動的にインクルードします。 要求時に grops にインクルードされるダウンロード可能な全てのフォントは /usr/share/groff_font/devps/download に列挙する必要が有ります; これは以下の形式の複数の行から成ります。

    font filename

ここで font はフォントの PostScript における名前であり、 filename はフォントを含むファイルの名前です; # から始まる行と空行は無視されます; フィールドはタブもしくは空白により区切ります; filename の検索は、groff のフォントメトリックファイルの検索と同じ方式で行われます。 download ファイル自身も同じ方式で検索されます。

ダウンロード可能なフォントもしくはインポートされた文書を含むファイルが Adobe Document Structuring Conventions を満たす場合、 grops はファイル中のコメントを十分解釈し、出力もこれを満たすようにします。 また、 download ファイルに列挙された必要なフォントリソースおよびファイルリソースを提供します。 また、リソース間の依存関係を扱うことも可能です。 例えば、ダウンロード可能な Garamond フォントおよび ダウンロード可能な Garamond-Outline フォントが有り、 後者が前者に依存すると仮定すると (概して、後者は前者のフォント辞書をコピーして PaintType を変更したものと 定義されます)、PostScript 文書中で Garamond が Garamond-Outline より前に 現れる必要が有ります。 grops がこれを自動的に扱うためには、 Garamond-Outline 用のダウンロード可能なフォントファイルが Garamond に依存することを Document Structuring Conventions を使用して示します。 例えば以下のように始めることで示します。

    %!PS-Adobe-3.0 Resource-Font
    %%DocumentNeededResources: font Garamond
    %%EndComments
    %%IncludeResource: font Garamond

この場合、Garamond と Garamond-Outline を download ファイルに列挙する必要が有ります。 ダウンロード可能なフォントは、自身の名前を %%DocumentSuppliedResources コメントに含んではなりません。

grops は %%DocumentFonts コメントを解釈しません。 %%DocumentNeededResources, %%DocumentSuppliedResources, %%IncludeResource, %%BeginResource, %%EndResource コメント (もしくは古い %%DocumentNeededFonts, %%DocumentSuppliedFonts, %%IncludeFont, %%BeginFont, %%EndFont コメント) は使用されます。

関連ファイル
/usr/share/groff_font/devps/DESC デバイス記述ファイル。

/usr/share/groff_font/devps/F
    フォント F のフォント記述ファイル。

/usr/share/groff_font/devps/download
    ダウンロード可能なフォントのリスト。

/usr/share/groff_font/devps/text.enc
    テキストフォント用のエンコード方法。

/usr/share/tmac/tmac.ps
    grops が使用するマクロ; troffrc により自動的にロードされます。

/usr/share/tmac/tmac.pspic
    PSPIC マクロの定義。 tmac.ps から自動的にロードされます。

/usr/share/tmac/tmac.psold
    古い PostScript プリンタには存在しない文字の使用を禁止するマクロ; tmac.ps から自動的にロードされます。

/usr/share/tmac/tmac.psnew
    tmac.psold の効果を打ち消すマクロ。

/tmp/gropsXXXXXX
    一時ファイル。

関連項目
afmtodit(1), groff(1), troff(1), psbb(1), groff_out(5), groff_font(5), groff_char(7)