GRN(1) | General Commands Manual | GRN(1) |
grn - gremlin ファイル用 groff プリプロセッサ
grn [ -Cv ] [ -Tdev ] [ -Mdir ] [ -Fdir ] [ file... ]
コマンドラインオプションとパラメータの間に空白を含めることが可能です。
grn は、 groff の入力中に gremlin 図を入れるためのプリプロセッサです。 grn は、 .GS と .GE の間にはさまれた入力行のみを処理し、標準出力に書き出します。 処理される行には grn コマンド (後述) が含まれていなくてはなりません。 これらのコマンドは、 gremlin ファイルを要求し、そのファイル中の図を変換し troff の入力ストリームに置きます。 .GS リクエストは、続けて C, L, R をとることができ、 gremlin 図全体を中央揃え、左揃え、あるいは右揃えにすることができます (デフォルトは中央揃えです)。 file が指定されていない場合は、標準入力が読み込まれます。 図の最後では、ページ内での位置は gremlin 図の下になります。 grn エントリが .GE ではなく .GF で終わっている場合は、ページ内での位置は図の左上になります。
現在のところ、-me マクロパッケージだけが .GS, .GE, .GF をサポートしていることに注意してください。
次のコマンドラインオプションを理解します:
.GS と .GE にはさまれた入力行はそれぞれ 1 つずつ grn コマンドを持っています。 コマンドは、1 つの文字列か、空白で区切られた 2 つの文字列で できています。最初の文字列はコマンドであり、2 番目の文字列は オペランドです。 コマンドは大文字小文字どちらでも良く、1 文字までに縮めることもできます。
図の環境に影響を与えるコマンド (以降において default の前にリストされているもの) は、現在の図に対して のみ効果を持ちます。 次の図が始まると、環境はデフォルトで再初期化されます。 コマンドは次のとおりです:
grn はプリプロセッサですので、現在のインデントやポイントサイズ、 余白や番号レジスタなどについては分かりません。 そのため、 .GS リクエストと .GE リクエストの間には troff への入力を置くことができません。 しかしながら、 gremlin テキストは現在 troff で処理されます。そのため、 gremlin テキスト行にある troff への入力行はどれも正しいものになります (ただし、 行頭に `.' ディレクティブを置くことは禁止されています)。 そのため、 gremlin ファイル中に 定義済みのデリミタ (例えば $$) で括った eqn 表記を埋め込むことによって、 gremlin 図の中に等式を書くことができます。
grn を他のプリプロセッサと一緒に使う場合、 tbl が仕事をしすぎないようにするために、 grn, pic, ideal よりも前に tbl を呼び出すのが最も良いやり方です。 eqn は必ず最後に起動させるべきです。
図はひとつのエンティティとみなされますが、 ページの末尾を越えてしまった場合、 troff は図を分割しようとしてしまいます。 -me マクロ中で図を `keeps' 中に置くことで 適切な位置決めができるようになります。
grn は troff の番号レジスタ g1 から g9 までを使い、そして .GS リクエストを処理する前にレジスタ g1 および g2 に gremlin 図の幅および高さ (デバイス単位) を設定します (これらのマクロを書き直したいと思っている人たちのために そうしています)。
gremlin ファイル形式には 2 つの異なった形式があります。 AED グラフィック端末用バージョン由来のオリジナルの形式と SUN および X11 バージョンの形式です。 負の座標を用いた参照点を容認する SUN/X11 バージョンの拡張機能は、 AED バージョンとは互換性が ありません 。 gremlin ファイルに負の座標が含まれていない限りは、どちらの形式のファイルも gremlin あるいは grn で読み込むことができます。 他に SUN/X11 の形式が異なる点は、図のオブジェクトに対して番号を 使うのではなく、名前 (例えば、POLYGON, CURVE) を使うことです。 同じ図を表すファイルを、それぞれの形式について 表 1 に示します。
sungremlinfile | gremlinfile | |
0 240.00 128.00 | 0 240.00 128.00 | |
CENTCENT | 2 | |
240.00 128.00 | 240.00 128.00 | |
185.00 120.00 | 185.00 120.00 | |
240.00 120.00 | 240.00 120.00 | |
296.00 120.00 | 296.00 120.00 | |
* | -1.00 -1.00 | |
2 3 | 2 3 | |
10 A Triangle | 10 A Triangle | |
POLYGON | 6 | |
224.00 416.00 | 224.00 416.00 | |
96.00 160.00 | 96.00 160.00 | |
384.00 160.00 | 384.00 160.00 | |
* | -1.00 -1.00 | |
5 1 | 5 1 | |
0 | 0 | |
-1 | -1 | |
表 1. ファイル例 |
gremlin ファイルフォーマット − オブジェクトタイプの仕様 | ||
AED 番号 | SUN/X11 名称 | 解説 |
0 | BOTLEFT | 左下揃えのテキスト |
1 | BOTRIGHT | 右下揃えのテキスト |
2 | CENTCENT | 中央揃えのテキスト |
3 | VECTOR | ベクトル |
4 | ARC | 円弧 |
5 | CURVE | 曲線 |
6 | POLYGON | ポリゴン |
10 | TOPLEFT | 左上揃えのテキスト |
11 | TOPCENT | 中央上揃えのテキスト |
12 | TOPRIGHT | 右上揃えのテキスト |
13 | CENTLEFT | 左中央揃えのテキスト |
14 | CENTRIGHT | 右中央揃えのテキスト |
15 | BOTCENT | 中央下揃えのテキスト |
表 2. | ||
gremlin ファイルにおける要素タイプの仕様 |
1 − | 細い点線 | |
2 − | 細い一点鎖線 | |
3 − | 太い直線 | |
4 − | 細い破線 | |
5 − | 細い直線 | |
6 − | 通常の直線 |
ポリゴンに対しては、さらに 0 も正当な値となります。 この値は、境界線の見えないポリゴンを指定するものです。 テキストに対しては、ブラシは次のようにフォントを選択します:
1 − | ローマン体 (groff での R フォント) | |
2 − | イタリック体 (groff での I フォント) | |
3 − | ボールド体 (groff での B フォント) | |
4 − | 特殊文字 (groff での S フォント) |
図を groff に通すために grn を使っている場合は、 ここでのフォントはただ開始時のフォントになるだけです: テキスト文字列には、 ``\fI'' や ``\d'' のような、フォントを変更し得る (他のこともする) フォーマット用シーケンスを含んでも構いません。 テキストでは、サイズフィールドは 1 から 4 までの 10 進数です。 これは、テキストが描画されるフォントサイズを選択します。 ポリゴンに対しては、このサイズフィールドはポリゴン内部を 埋めるために使われるスティプル番号と解釈されます。 この番号は、表示する際にスティプルフォントに置き換える インデックスとして使われます。
gremlin は AED 用に設計され、その座標系は AED の座標空間を反映したものになっています。 垂直方向の図に対しては、x 値は 116 から 511 までをとり、 y 値は 0 から 483 までをとります。 水平方向の図に対しては、 x 値は 0 から 511 までをとり、 y 値は 0 から 367 までをとります。 この範囲に必ずしもこだわることはありませんが、 少なくともこの近傍にとどめておけば最良の結果が 得られるでしょう。 さらに、点のリストは (-1, -1) で終わりますので、 負の座標を使うことはできません。 gremlin 図は、``%f1.2'' という形式を使って座標を出力します。 ですので、 grn コードを変更したい場合には同じ形式を用いるのが おそらくは良い考えでしょう。
SUN/X11 バージョンの gremlin 図では、オブジェクト生成に用いられる座標の範囲に 制限はもうありません。 しかし、負の座標を持ったファイルでは、 AED 上で表示させようとすると問題が 発生するでしょう 。
David Slattengren と Barry Roitblat がオリジナルの Berkeley 版 grn を書きました。
Daniel Senderowicz と Werner Lemberg が groff 用に書き直しました。
6 August 2001 | Groff Version 1.17.2 |