GRN(1)

名前
grn - gremlin ファイル用の groff プリプロセッサ

書式
grn [ -Cv ] [ -Tdev ] [ -Mdir ] [ -Fdir ] [ file... ]

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

説明
grn は、 gremlin 画像を含んでいる groff ソース用のプリプロセッサである。 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 ファイルがカレントディレクトリに見つからない場合、 dir をファイル名に前置して再検索する。 デフォルトのライブラリディレクトリは /usr/local/share/groff/tmac である。

-Fdir
    DESC ファイルにおける devname (name はデバイス名) サブディレクトリの検索を、通常の /usr/local/share/groff/font ディレクトリより先に dir から行う。

-C  スペースや改行以外の文字が後に続く .GS と .GE (および .GF) を認識する。

-v  バージョン番号を出力する。

grn コマンド
.GS と .GE に挟まれたそれぞれの行は grn コマンドを含んでいる。 コマンドは、ひとつの文字列、または空白で区切られたふたつの文字列からなる。 最初の文字列がコマンドであり、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 に設定する (f は名前または番号)。 デフォルトは R (およびそれぞれ I, B, S) である。

l f
stipple f
    塗り潰し (stipple) フォントを troff の stipple フォント f に設定する (f は名前または番号)。 コマンド stipple の省略形は `st' となる (special との混同を避けるため)。 default コマンドによってひとつを指定しないかぎり、stipple フォントの デフォルトは無い。また、stipple フォントを指定しなければポリゴンの gremlin 画像を含めることはできない。

x N
scale N
    デフォルトの拡大率にさらに追加して、画像を N 倍に拡大する。 N は 0 より大きい浮動小数点実数である。 コマンド scale の省略形は `sc' となる。

narrow N
medium N
thick N
    gremlin の細線 (narrow)、および普通線 (medium)、太線 (thick) の太さを 0.15 ポイントの 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
    カレントディレクトリにある name という gremlin ファイルから画像を取得する (または、ライブラリディレクトリから取得する; 前述の -M オプションを参照)。 file コマンドがふたつ指定された場合は、2 番目のものが優先される。 name が存在しない場合は、エラーメッセージが出力され、処理は .GE 行から継続される。

groff についての注意
grn はプリプロセッサであるので、現在のインデント量やポイントサイズ、 マージン量、数値レジスタなどは取得できない。 したがって、 .GS と .GE リクエストの間には troff ソースは配置できない。 しかし、現在は gremlin テキストは troff で処理されるので、 troff ソースとして正しい 1 行は gremlin テキストとしても正しいものとなる (行頭に `.' ディレクティブがない場合)。 よって、 gremlin ファイルの gremlin 図形中に数式を含めることができる。 数式 eqn は、あらかじめ定義した区切り文字で括られる (たとえば $$ など)。

ほかのプリプロセッサと一緒に grn を用いるときは、 grn や pic より先に tbl を実行して、 tbl の余計な仕事を避けることが望ましい。 eqn は常に最後に実行すべきである。

画像がページの終りからはみだしたときは、画像はひとつであると見なされて いるのだが troff が分割してしまうことを止めることができない。 -me マクロにある `keeps' の間に画像を配置することによって、 本来の画像位置を保証できる。

grn は troff の数値レジスタのうち g1 から g9 までを使用し、このうち g1 と g2 には .GS リクエストを実行する前にそれぞれ gremlin 図形の幅と高さが (デバイス単位) で設定される。 これらのマクロを書き換えたいときに使用できる。

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 ファイルの最初の行は、文字列 gremlinfile (AED 形式) または sungremlinfile (SUN/X11) となる。

•   2 行目は、画像方向および座標位置の x と y の値をそれぞれ空白で区切って指定する。 画像方向 (0または1の値をとる) は SUN/X11 バージョンでは無視される。 0 は gremlin を横方向に表示する (表示領域は、幅が高さより長くなり、メニューは上部にくる)。 1 は gremlin を縦方向に表示する (表示領域は、高さが幅より長くなり、メニューは左側にくる)。 x と y は浮動小数点実数で、このファイルが別のファイルから読み込まれたときに使用される 座標位置を指定する。 この行の要素はどれもさほど重要ではないので、 ``1 0.00 0.00'' という値にしておけばよい。

•   ファイルの残りは要素仕様が記述される。 最後の要素仕様の次は、文字列 ``-1'' という行になる。

要素仕様

•   それぞれの要素の最初の行は、要素のタイプを意味する数値 (AED 形式) またはその名前 (SUN/X11 形式) となる。 表 2 を参照。

    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 ファイルのタイプ指定

•   オブジェクトタイプのあとには、要素が表示される座標を指定する行が続く。 それぞれの行には X 座標と Y 座標が浮動小数点実数形式で、 空白で区切られて指定される。 座標のリストの終端は、文字列 ``-1.0 -1.0'' (AED 形式) という行か、単一のアスタリスク ``*'' (SUN/X11 形式) の行となる。

•   座標の次には、ふたつの 10 進数値を含む行がくる。 これらは、要素のブラシとサイズを指定している。 ブラシはオブジェクトが描画されるときのスタイルを決定する。 ベクトル、弧、曲線は次の 6 種類のブラシの値をとることができる:

    1 - |  | 細い点線 (dotted lines)
    2 - |  | 細い一点破線 (dot-dashed lines)
    3 - |  | 太い実線 (solid lines)
    4 - |  | 太い破線 (dashed lines)
    5 - |  | 太い実線 (solid lines)
    6 - |  | 普通の実線 (solid lines)

    ポリゴンでは、ひとつ追加されて 0 という値が有効である。 これは、不可視の境界を意味する。 テキストでは、ブラシの選択は以下のフォントを意味する:

    1 - |  | ローマン体 (groff の R フォント)
    2 - |  | イタリック体 (groff の I フォント)
    3 - |  | ボールド体 (groff の B フォント)
    4 - |  | スペシャル体 (groff の S フォント)

    groff を通して grn で画像を処理している場合は、フォント指定は初期状態の指定となる: テキスト文字列には、``\fI'' や ``\d'' といったフォントを変更する フォーマットシーケンスを含めることができる (他のものも同様)。 テキストでは、サイズの指定は 1 から 4 までの 10 進数値である。 これは、テキストが描画されるときのフォントサイズを意味する。 ポリゴンでは、このサイズ指定はポリゴンの塗り潰し方法を指定する値として 扱われる。 数値は出力時の stipple フォントのインデックスが使用される。

•   それぞれの要素の最後の行は、ひとつの空白で区切られた 10 進数値と文字列となる。 数値は文字列中の文字数を示す。 この情報はテキスト要素とテキスト文字列を含む要素だけに使われる。 テキスト中には空白を含めることができる。 弧や曲線、ベクトルでは、この行には文字列 ``0'' が指定される。

座標に関する注意
gremlin は AED 用に設計されたので、その座標は 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/local/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 用に修正した。