名称


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 をサポートしていることに注意してください。

次のコマンドラインオプションを理解します:
-Tdev プリンタ dev 用の出力を用意します。 デフォルトのデバイスは ps です。受け付け可能なデバイスについては groff(1) を参照してください。
-Mdir dir を、 gremlin ファイルのデフォルト検索パスの前に追加します。 デフォルトパスは (順番に)、現在のディレクトリ、ホームディレクトリ、 /usr/share/tmac, /usr/share/tmac, /usr/share/tmac (訳注: 重複していますが原文通りです) です。
-Fdir dir 中からサブディレクトリ devname (name はデバイス名です) を探し、通常の /usr/share/groff_font の前に読み込まれる DESC ファイルを探します。
-C たとえ空白や改行以外の文字が後に続いていても .GS および .GE (およびこれに相応する .GF) を認識します。
-v バージョン番号を表示します。

grn コマンド


.GS.GE にはさまれた入力行はそれぞれ 1 つずつ grn コマンドを持っています。 コマンドは、1 つの文字列か、空白で区切られた 2 つの文字列で できています。最初の文字列はコマンドであり、2 番目の文字列は オペランドです。 コマンドは大文字小文字どちらでも良く、1 文字までに縮めることもできます。

図の環境に影響を与えるコマンド (以降において default の前にリストされているもの) は、現在の図に対して のみ効果を持ちます。 次の図が始まると、環境はデフォルトで再初期化されます。 コマンドは次のとおりです:
1 N
2 N
3 N
4 N gremlin のテキストサイズ番号 1 (2, 3 または 4) を N ポイントに設定します。 デフォルトは 12 (16, 24, 36) です。
roman f
italics f
 
bold f
special f
 ローマン体 (イタリック体、ボールド体、あるいは特殊文字) の フォントを troff フォント f (フォント名あるいは番号) に設定します。 デフォルトは R (I, B, S) です。
l f
stipple f
 スティプル (stipple) フォントを troff のスティプルフォント f (フォント名あるいは番号) に設定します。 コマンド stipple は、‘st’ までになら省略できます ( special との混乱を避けるためです)。 スティプルフォントにはデフォルトは ありません (default コマンドで設定されていない限りは)。 スティプルフォントを指定しないまま、ポリゴンを含んだ gremlin 図を取り込むことは不正です。
x N
scale N (デフォルトの拡大処理に加えて) gremlin 図を N 倍に拡大します。ここで N は 0 より大きな浮動小数値です。 コマンド scale は、‘sc’ までになら省略できます。
narrow N
 
medium N
 
thick N 細線 (中間の太さの線、および太線) の太さを 0.15 ポイント (この値は、コンパイル時に変更できます) の N 倍に設定します。 デフォルトは 1.0 (3.0, 5.0) です。これは、0.15 ポイント (0.45 ポイントおよび 0.75 ポイント) に対応しています。 太さを表す値が 0 のときは、使用できる中で最も小さな値を 選択します。 負の値は、現在のポイントサイズに比例した、線の太さの指定になります。
pointscale <off/on>
 テキストを図に合うようにスケーリングします。 gremlin テキストは、通常、図のスケールファクタによらず、 コマンド 1, 2, 3, あるいは 4 で指定されるポイントサイズで表示されます。 pointscale を設定すると、ポイントサイズが図に合わせて変更されます (もちろん、 troff の制限内で)。 off 以外のオペランドは何であっても テキストのスケーリングを有効にします。
default
 デフォルトの図の環境を、現在の図の環境で、再設定します。 このオプションは、 troff 入力ファイルの先頭でグローバルパラメータを設定するメカニズムとして 使われることを意図していますが、デフォルト設定を再設定したいときは いつでも使うことができます。
width N 図を強制的に幅 N インチにします。 このオプションは、同じ図中に存在する他のスケールファクタに優先します。 ‘width 0’ は、無視されます。
height N
 他のスケールファクタに優先して、図を強制的に高さ N インチにします。 ‘width’ と ‘height’ 両方が指定されているときには、 図をより小さくする制約が図のスケールを決定します。 height および width コマンドは、 default コマンドでは保存はされません。 しかしながら、 ポイントサイズスケーリングが使用されている場合には、 これに対する影響はあります。
file name
 カレントディレクトリ (あるいはライブラリディレクトリ。前述の -M オプションを参照してください) に置かれた gremlin ファイル name から図を取得します。 file コマンドが 2 つ与えられた場合、2 つめのコマンドが最初のコマンドに優先します。 name が存在しない場合は、エラーメッセージが報告され、 .GE 行から処理が再開されます。

groff に関しての注意


grn はプリプロセッサですので、現在のインデントやポイントサイズ、 余白や番号レジスタなどについては分かりません。 そのため、 .GS リクエストと .GE リクエストの間には troff への入力を置くことができません。 しかしながら、 gremlin テキストは現在 troff で処理されます。そのため、 gremlin テキスト行にある troff への入力行はどれも正しいものになります (ただし、 行頭に ‘.’ ディレクティブを置くことは禁止されています)。 そのため、 gremlin ファイル中に 定義済みのデリミタ (例えば $$) で括った eqn 表記を埋め込むことによって、 gremlin 図の中に等式を書くことができます。

grn を他のプリプロセッサと一緒に使う場合、 tbl が仕事をしすぎないようにするために、 grn, pic, ideal よりも前に tbl を呼び出すのが最も良いやり方です。 eqn は必ず最後に起動させるべきです。

図はひとつのエンティティとみなされますが、 ページの末尾を越えてしまった場合、 troff は図を分割しようとしてしまいます。 -me マクロ中で図を ‘keeps’ 中に置くことで 適切な位置決めができるようになります。

grntroff の番号レジスタ g1 から g9 までを使い、そして .GS リクエストを処理する前にレジスタ g1 および g2gremlin 図の幅および高さ (デバイス単位) を設定します (これらのマクロを書き直したいと思っている人たちのために そうしています)。

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. ファイル例

o それぞれの gremlin ファイルの 1 行目は、 文字列 gremlinfile (AED バージョン) あるいは sungremlinfile (SUN/X11バージョン) のどちらかです。
o ファイルの 2 行目には点の位置を決めるための、方向、 x および y の値が含まれており、各値は空白で区切られています。 方向は、 0 あるいは 1 をとり、 SUN/X11 バージョンでは無視されます。 0 は、 gremlin 図が水平方向の形式で表示されることを意味しています (描画領域の幅が実際の図の高さよりも広くとられ、 上部にメニューがつきます)。 1 は、 gremlin 図が垂直方向の形式で表示されることを意味しています (描画領域の高さが実際の図の幅よりも高くとられ、 左側にメニューがつきます)。 x および y は浮動小数値であり、このファイルが他のファイルに読み込まれる 際に、位置決め点を与えるために使用されます。 この行の要素は、それほど重要なものではありません。 ‘‘1 0.00 0.00’’ という値を推奨します。
o このファイルの残りの部分は 0 個以上の要素を 記述したものになっています。 最後の要素を記述した後には、文字列 ‘‘-1’’ を持った行がきます。

要素の記述


o 各要素の最初の行には、要素タイプを与える 10 進数 (AED バージョンの場合) あるいは要素の ASCII 文字での名称 (SUN/X11 バージョンの場合) が 1 つ 含まれています。 表 2 を参照してください。

gremlin ファイルフォーマット - オブジェクトタイプの仕様
AED 番号SUN/X11 名称解説
0BOTLEFT左下揃えのテキスト
1BOTRIGHT右下揃えのテキスト
2CENTCENT中央揃えのテキスト
3VECTORベクトル
4ARC円弧
5CURVE曲線
6POLYGONポリゴン
10TOPLEFT左上揃えのテキスト
11TOPCENT中央上揃えのテキスト
12TOPRIGHT右上揃えのテキスト
13CENTLEFT左中央揃えのテキスト
14CENTRIGHT右中央揃えのテキスト
15BOTCENT中央下揃えのテキスト
表 2.
gremlin ファイルにおける要素タイプの仕様

o オブジェクトタイプの後には、可変数の行がきます。 各行は、オブジェクトの要素を表示するのに使われる点を指定します。 各行には、x 座標および y 座標が浮動小数値で入っており、 それぞれは空白文字で区切られています。 点のリストは、文字列 ‘‘-1.0 -1.0’’ を含んだ行 (AED バージョンの場合) あるいはアスタリスク ‘‘*’’ 1 個 (SUN/X11 バージョンの場合) で終わります。
o 点の後には、10 進数 2 個を含んだ行がきます。これは、 要素に対するブラシとサイズを与えます。 ブラシは、オブジェクトが描かれる際のスタイルを決定します。 ベクトル、円弧、および曲線については、ブラシの値として 6 個の正当な値があります:

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 進数です。 これは、テキストが描画されるフォントサイズを選択します。 ポリゴンに対しては、このサイズフィールドはポリゴン内部を 埋めるために使われるスティプル番号と解釈されます。 この番号は、表示する際にスティプルフォントに置き換える インデックスとして使われます。

o 各要素の最終行には、10 進数と文字列が空白文字 1 つで 区切られて入っています。 10 進数は、文字列中の文字数をカウントしたものです。 この情報はテキスト要素に対してのみ使われ、 テキスト文字列が情報の中に含まれています。 テキスト内部には空白文字が入っていても良いです。 円弧、曲線、およびベクトルについては、それぞれの要素が対応する行には 文字列 ‘‘0’’ が入っています。

座標についての注意


gremlinAED 用に設計され、その座標系は AED の座標空間を反映したものになっています。 垂直方向の図に対しては、x 値は 116 から 511 までをとり、 y 値は 0 から 483 までをとります。 水平方向の図に対しては、 x 値は 0 から 511 までをとり、 y 値は 0 から 367 までをとります。 この範囲に必ずしもこだわることはありませんが、 少なくともこの近傍にとどめておけば最良の結果が 得られるでしょう。 さらに、点のリストは (-1, -1) で終わりますので、 負の座標を使うことはできません。 gremlin 図は、‘‘%f1.2’’ という形式を使って座標を出力します。 ですので、 grn コードを変更したい場合には同じ形式を用いるのが おそらくは良い考えでしょう。

SUN/X11 バージョンの座標についての注意


SUN/X11 バージョンの gremlin 図では、オブジェクト生成に用いられる座標の範囲に 制限はもうありません。 しかし、負の座標を持ったファイルでは、 AED 上で表示させようとすると問題が 発生するでしょう

関連ファイル


/usr/share/groff_font/devname/DESC
 デバイス name 用のデバイス定義ファイル

関連項目


gremlin(1), groff(1), pic(1), ideal(1)

歴史


David Slattengren と Barry Roitblat がオリジナルの Berkeley 版 grn を書きました。

Daniel Senderowicz と Werner Lemberg が groff 用に書き直しました。

openSUSE Logo

コンテンツ