EN JA
GROFF_DIFF(7)
GROFF_DIFF(7) FreeBSD Miscellaneous Information Manual GROFF_DIFF(7)

名称

groff_diff - GNU troff と古典的な troff の間の差異

解説

このマニュアルページは、 groff、GNU roff テキスト処理システム、と、 OsannaKernighan によって Troff User's Manual (Troff ユーザーズマニュアル) で文書化されて、 1970 年代に自由に利用可能な Unix 7 の古典的な roff フォーマッタの間の言語の差異について記述します。これは、(troff 出力の) 中間の出力フォーマットと同様に roff 言語も含みます。

セクション 関連項目 に、古典的な roff と現代の groff 文書の両方へのポインタを示します。

GROFF 言語

このセクションでは、古典的な Unix 7 troff と比較される groff のすべての追加の機能が、詳細に説明されます。

長い名前

数レジスタ、フォント、文字列/マクロ/ディバージョン (配置転換)、特別の文字 (グリフ) および色の名前は任意の長さにすることができます。エスケープシーケンスでは、2 文字の名のための古典的な ( xx コンストラクション (構築) に加えて任意の長さの名のための [ xxx ] を使用することができます。訳注) グリフ:象形文字の記号。
\[ xxx ]
xxx と呼ばれる特別の文字 (グリフ) を印刷します。
\[ comp1 comp2 ... ]
複数の構成要素から成る複合グリフを印刷します。例: `\[A ho]' は最後にグリフ名 `u0041_0328' にマップされるオゴネクを使う大文字 A です。複合グリフのグリフ名はどのように構築されるかの詳細については、 groff info ファイル を参照してください。複合グリフ名が使用されたグリフ名の構成要素のリストのためには、 groff_char(7) を参照してください。訳注) オゴネク:ラテン文字の母音字の下に付いて発音の区別を表す小さなかぎ型の記号。
\f[ xxx ]
フォント xxx を設定します。さらに、 \f[] は、 \fP, と等しい新しいシンタックスです。すなわち、前のフォントに戻ります。
\*[ xxx arg1 arg2 ... ]
引数として arg1, arg2, ... をとって、文字列 xxx を挿入します。
\n[ xxx ]
数レジスタ xxx を挿入します。

小数ポイントサイズ

sizescaleDESC ファイル (デフォルトでは、1) で指定される場合、 スケール (基準) ポイント は、 1/sizescale ポイントと等しくなります。 sizescale によって増加する効果がある新しい単位指定子 z があります。 troff 中のリクエストとエスケープシーケンスは、スケールポイントのユニット (単位) としてポイントサイズを表わす引数を解釈します。しかし、それらは、 z のデフォルトの単位指定子を使用して、個別のそのような引数を評価します。このように扱われる引数は、 ps リクエストへの引数、 cs リクエストへの 3 番目の引数、 tkf リクエストへの 2 番目と 4 番目の引数、 \H エスケープシーケンスへの引数、およびそれらの引数として数式をとる \s エスケープシーケンスの変形です。

例えば、sizescale が 1000 であると仮定します。そのとき、スケールポイントはミリポイント (millipoint) と等価になります。 .ps 10.25 の呼び出しは、 .ps 10.25z と等価で、したがって、10.25 ポイントと等しい、10250 スケールポイントにポイントサイズを設定します。

数レジスタ \n[.s] は、10 進小数としてポイントでポイントサイズを返します。さらに、スケールポイントでポイントサイズを返す、新しい数レジスタ \n[.ps] があります。

デフォルトの単位指定子が u でも z でもない、数式の中で z 単位指定子を使用することは意味をなしません。したがって、 troff はこれを認めません。同様に、デフォルトの単位指定子が z だった、数式の中で z または u 以外の単位指定子を使用することは意味をなしません。したがって、 troff は同様にこれを認めません。

スケールポイントのユニット (単位) の数によって増加するさらに新しい単位指定子  s があります。そのように、例えば、 \n[.ps]s は、 1m と等しくなります。 sz 単位指定子を混同しないように気を付けてください。

数式

空白は括弧内の数式で許されます。

M は、em の 100 分の 1 のスケールを示します。 f は、 defcolor リクエストで色定義のための分数を提供する 65536 ユニットのスケールを示します。例えば、0.5f = 32768u。

e1 >? e2
e1e2 の最大値。
e1 <? e2
e1e2 の最小値。
( c ; e )
デフォルトの単位指定子として c を使用して e を評価する。 c が不足する場合、 e の評価で単位指定子を無視します。

新しいエスケープシーケンス

\A' anything '
これは、 anything が、文字列、マクロ、ディバージョン (分岐)、数レジスタ、環境、フォントまたは色の名前として受け付けられるかそうでないかに依存して、それぞれ 1 または 0 に展開します。 anything が空の場合、それは、 0 を返します。利用者が、ある種の連想テーブル中のユーザ入力を検索したい場合に便利です。
\B' anything '
これは、 anything が有効な数式かそうでないか依存して、それぞれ 1 または 0 に展開します。 anything が空の場合、それは、 0 を返します。
\C' xxx '
xxx で指定されるグリフを植字します。通常は、 \[ xxx ] を使用することはより便利です。しかし、 \C は、それは、 UNIX の最近のバージョンと互換性をもち、互換性モードで利用可能であるという利点があります。
\E
これはエスケープ文字と等価ですが、コピーモードで解釈されません。例えば、始めと終りのスーパスクリプト記述の文字列は次のように定義することができます。
$*
 
$*

\E の使用は、 \*{ が、 (例えばマクロ引数の中で使用されることによって) コピーモードで解釈されても、これらの定義が働くことを保証します。

\F f
 
\F( fm
 
\F[ fam ]
フォントファミリを変更します。これは、 fam リクエストと同じです。 \F[] は、前の色に切り替えます。 ( \FP は働かないことに注意してください。それは代わりにフォントファミリ `P' を選びます。)
\m x
 
\m( xx
 
\m[ xxx ]
描画する色を設定します。 \m[] は前の色に切り替えます。
\M x
 
\M( xx
 
\M[ xxx ]
\D' ... ' コマンドで描かれた塗りつぶしオブジェクトのための背景色を設定します。 \M[] は前の色に切り替えます。
\N' n '
現在のフォントのインデックス n でグリフを植字します。 n は任意の整数です。ほとんどのデバイスは、0 と 255 の間のインデックスでグリフを単に持っています。現在のフォントがそのコードのグリフを含んでいない場合、特別のフォントは、検索されません。 \N エスケープシーケンスは、 char リクエストと共に便利に使用することができます。例えば、
$*
各グリフのインデックスは、 charset コマンドの後で、フォント記述ファイルの第 4 のカラムで与えられます。 --- の名前の使用によりフォント記述ファイルに無名のグリフを含むことが可能です。 \N エスケープシーケンスはこれらを使用するただ一つの方法です。
\O n
 
\O[ n ]
troff の出力を抑制します。エスケープ \02, \O3, \O4, \O5 は、 grohtml によって内部使用のために意図されます。
\O0
エスケープが外部のレベル ( \O3\O4 を参照) に生じるならば、任意の ditroff グリフがデバイスドライバに発行しないように無効にします。
\O1
エスケープが外部のレベルに生じるならば、グリフの出力を可能にします。
\O0\O1 はさらにレジスタ \n[opminx], \n[opminy], \n[opmaxx], \n[opmaxy] を -1 にリセットします。これらの 4 つのレジスタは、すべての書き込みグリフを取り囲むボックスの角の左上と右下をマークします。
\O2
エスケープが外部のレベルに生じるならば、グリフの出力を可能にし、さらにページ数と \O への最後の呼び出し以来、以前に書き込まれたグリフを取り囲む 4 つのレジスタを stderr に書き込みます。
\O3
入れ子にするレベルを始めます。開始時では、 troff は外部のレベルにあります。これは、本当にイメージを生成する間に grohtml のための内部メカニズムです。それらは、PNG フォーマットでイメージを生成する postscript デバイスと ghostscript への troff を介して troff ソースを走らせることにより生成されます。 (ページ境界をまたがるイメージの可能性を減らすために) デバイスが html でない場合、 \O3 エスケープは新しいページを開始します。
\O4
入れ子にするレベルを終ります。
\O5[ Pfilename ]
このエスケープは、 grohtml 詳細です。このエスケープが外部の入れ子にするレベルに生じるならば、 filename を stderr に書き込みます。イメージの位置 P は指定されなければなりません。そして、l、r、c、i (左、右、中央、インライン) のうちの 1 つでなければなりません。 filename は、次のインラインのイメージの生成に関係しています。
\R' name ±n '
これは次と同じ効果があります。
.nr  name ±n
\s( nn
 
\s±( nn
nn ポイントにポイントサイズを設定します。 nn は正確に 2 桁でなければなりません。
\s[± n ]
 
\s±[ n ]
 
\s'± n '
 
\s±' n '
n スケールポイントにポイントサイズを設定します。 n は、 z のデフォルト単位指定子の数式です。
\V x
 
\V( xx
 
\V[ xxx ]
getenv(3) によって返されるように、環境変数 xxx の内容を改ざんします。 \V はコピーモードで解釈されます。
\Y x
 
\Y( xx
 
\Y[ xxx ]
これは、 \X'\*[ xxx ]' とほぼ等価です。しかしながら、文字列かマクロ xxx の内容は解釈されません。さらに、それは、 xxx がマクロとして定義されており、そしてそのため改行を含んでいることを許されます (それは、 \X への引数のために改行を含むことは許されません)。改行を含むことは、UNIX troff 出力フォーマットに対する拡張を要求し、この拡張のことを知らないドライバを混乱させます。
\Z' anything '
anything を印刷して、水平位置および垂直位置を復元します。 anything はタブまたはリーダ (先頭) を含めません。
\$0
現在のマクロが呼び出された名前。 als リクエストはマクロに 2 つ以上の名前を持つことができます。
\$*
マクロか文字列では、空白によって分離されたすべての引数の連結。
\$@
マクロか文字列では、各々ダブルクォートによって囲まれ、空白によって分離されたすべての引数の連結。
\$( nn
 
\$[ nnn ]
マクロか文字列では、これは、 nn-th か nnn-th 引数を与えます。マクロと文字列は無制限に多くの引数を持つことができます。
\? anything \?
ディバージョンで使用された時、これはディバージョン中の anything を透過的に埋め込みます。 anything はコピーモードで読み込まれます。ディバージョンが再読み込みされる時、 anything は解釈されます。 anything は改行を含めません。利用者がディバージョン中に改行を埋め込みたい場合は、 \! を使用してください。エスケープシーケンス \? はさらにコピーモードで認識され、1 つの内部コードに変えられます。 anything を終了するのはこのコードです。したがって

$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
$*
4 を印刷します。
\/
これは、次のグリフがローマン体のグリフである場合、そのグリフと次のグリフの間の間隔が正確となるように、前のグリフの幅を増加させます。間に入る空白のないローマン体のグリフが直ちにイタリック体のグリフに続く場合は常に、このエスケープシーケンスを使用することはよい考えです。
\,
これは、前のグリフがローマン体のグリフである場合、そのグリフと前のグリフの間の間隔を修正するように、次のグリフの間隔を修正します。間に入る空白のないイタリック体のグリフが直ちにローマン体のグリフに続く場合は常に、このエスケープシーケンスを使用することはよい考えです。
\)
文の終りを認識する目的のために透過的な cflags リクエストで宣言された文字のように振る舞うことを除いて \& に似ています。
\~
これは、行が調節される場合、正常な中間の単語間隔のように伸びる分割できない空白を生成します。
\:
これは、0 幅ブレーク (分割) ポイントの挿入となります。それは、単語内でソフトハイフン文字の挿入のない \% と等しくなります。
\#
次の改行を含んですべてが無視されます。これはコピーモードで解釈されます。それは、その \" が終了する改行を無視しないことを除いて、 \" に似ています。

新しいリクエスト

.aln  xx yy
yy と命名される数レジスタオブジェクトのための別名 xx 作成します。新しい名前と古い名前は正確に同等になります。 yy が未定義の場合、タイプ reg の警告が生成され、リクエストは無視されます。
.als  xx yy
リクエスト、文字列、マクロまたは yy と命名されるディバージョンオブジェクトのための別名 xx を作成します。新しい名前と古い名前は正確に同等 (それはソフトリンクではなくハードリンクに類似しています) になります。 yy が未定義の場合、タイプ mac の警告が生成され、リクエストが無視されます。 de, am, di, da, ds, as リクエストは、マクロ、ディバージョンまたは文字列ディバージョンの名前が現在未定の場合、あるいはそれがリクエストであると定義される場合、新しいオブジェクトを単に作成します。通常、それらは、既存のオブジェクトの値を修正します。
.am1  xx yy
.am に似ていますが、互換性モードは実行の間はスイッチを切られます。より正確に言えば、 `互換性保存' トークンはマクロの追加の始めに挿入され、そして 1 つの`互換性復元' トークンは終わりで挿入されます。結果として、リクエスト am, am1, dede1 は、互換性保存/復元トークンが .am1.ds1 によって定義されたマクロの部分のみに影響するので、自由に混ぜ合わせることができます。
.ami  xx yy
マクロを間接的に追加します。 dei リクエストのより詳細については下記を参照してくだい。
.ami1  xx yy
ami リクエストと同じですが、互換性モードは実行の間にオフに切り替えられます。
.as1  xx yy
.as に似ています。しかし、互換性モードは拡張中にスイッチを切られます。具体的には、`互換性保存' トークンは文字列の始めに挿入され、`互換性復元' トークンは終わりに挿入されます。結果として、互換性保存/回復トークンは、 as1ds1 によって定義された (部分) 文字列にのみ影響するので、リクエスト as, as1, ds, ds1 は、自由に混ぜ合わせることができます。
.asciify  xx
このリクエストは、 xx が再読み込みされる時、 xx へフォーマットされディバージョンされた ASCII と空白文字 (と、いくつかのエスケープシーケンス) が、通常の入力文字のように扱われるように、ディバージョン xx を `アンフォーマット' します。 .writem リクエストと関連するディバージョンに役立ちます。さらに、それはグロスハックのために使用することができます。例えば、これは

$*
$*
$*
$*
$*
$*
$*
$*
レジスタ n に 1 を設定します。グリフ情報 (フォント、フォントサイズなど) が保存されないことに注意してください。 .unformat を代わりに使用してください。
.backtrace
stderr に入力スタックのバック (逆) トレースを印刷します。
.blm  xx
xx に空白行マクロを設定します。空白行マクロがある場合、通常の troff 振る舞いの代わりに空白行に遭遇する時、それが呼び出されます。
.box  xx
 
.boxa  xx
これらのリクエストは、部分的に詰められたラインがディバージョン (すなわち、ディバージョンは、常に新しい行で始まります) の一部にならないという例外を除いて dida リクエストに似ています。しかし、ディバージョンからおそらく来る部分的に詰められた行を廃棄して、ディバージョンを終了した後に復元されます。
.break
while ループから抜け出ます。詳細につては、 whilecontinue リクエストを参照してください。 br リクエストとこれを混同しないように気を付けてください。
.brp
これは、 \p と同じです。
.cflags  n c1 c2...
文字 c1, c2,... は、 n によってプロパティ (特性) が決定されます。 n は次で論理和 (OR) されます。
1
文字は文 (最初に文字 .?! は、このプロパティを持っています) を終了します。
2
行は、文字 (最初に、文字はこのプロパティを持っていません) の前に分割 (ブレーク) することができます。もし双方の文字が両方とも 0 でないハイフンコードを持たなければ、行はこのプロパティで文字で分割 (ブレーク) しません。
4
行は、文字 (最初に、文字 -\[hy]\[em] はこのプロパティを持っています) の後に分割することができます。もし双方の文字が両方とも 0 でないハイフンコードを持たなければ、行はこのプロパティで文字を分割しません。
8
その文字は、水平に (最初に文字 \[ul]\[rn]\[ru]\[radicalex]\[sqrtex] はこのプロパティを持っています) オーバラップします。
16
その文字は、垂直に (最初に、文字 \[br] はこのプロパティを持っています) オーバラップします。
32
もし改行または 2 つの空白が続けば、このプロパティを備えたいくつもの文字が継続する文の終了の文字は、文の終りとして扱われます。言いかえれば、その文字は文の終りの認識には透過的です。これは、TeX (最初に文字 "')]*\(dg\(rq はこのプロパティを持っています) で 0 スペースファクタを持っているのと同じことです。
.char  c string
string となるグリフ c を定義します。グリフ c を印刷する必要があるごとに、 string は一時的環境の中で処理され、結果は単一のオブジェクトへ切り上げられます。互換性モードはオフにされ、 string が処理されている間に、エスケープ文字は、 \ に設定されます。エンボーディング、定数間隔またはトラックカーニングは、 string 中の個別のグリフにではなくこのオブジェクトに適用されます。訳注: カーニングは、lf のように幅が異なるフォントの文字間が一定になるように通常より詰めること。
このリクエストによって定義されたグリフは、ちょうど出力デバイスによって提供される正常なグリフのように使用できます。特に他の文字は、 tr リクエストでそれに変換することができます。それは、 lc リクエストによってリーダ文字になることができます。繰り返されたパターンは、 \l\L エスケープシーケンスを使用して、文字で描画することができます。 hcode リクエストが文字ハイフンコードを与えるために使用される場合、文字を含んでいる単語は正確にハイフンで結ぶことができます。
特別の反再帰機能があります: グリフの定義内のグリフの使用は、 char で定義されない正常なグリフのように扱われます。
グリフ定義は、 rchar リクエストで削除することができます。
.chop  xx
マクロ、文字列またはディバージョン xx から最後の要素を切り取ります。これは、文字列として挿入されるディバージョンの終りから改行を取り除くのに役立ちます。
.close  stream
stream;で指定されたストリームをクローズします。 stream はもはや write リクエストへの受け付け可能な引数になりません。 open リクエストを参照してください。
.composite  glyph1 glyph2
それが 2 つ以上のコンポーネントで \[ ... ] の中で使用される場合、グリフ名 glyph1 をグリフ名 glyph2 にマップします。
.continue
while ループの現在の反復を終了します。 whilebreak リクエストを参照してください。
.color  n
n が 0 でないか不足している場合、色 (これがデフォルトです) を有効にし、そうでなければそれらを無効にします。
.cp  n
n が 0 でないか不足している場合、互換性モードを有効にし、そうでなければそれを無効にします。互換性モードにおいて、長い名前は認識されません。また、長い名前によって引き起こされる非互換性は発生しません。
.defcolor  xxx scheme color_components
色を定義します。 scheme は次の値のうちの 1 つです: rgb (3 つのコンポーネント)、 cym (3 つのコンポーネント)、 cmyk (4 つのコンポーネント)、および graygrey (1 つのコンポーネント)。色コンポーネントは、16 進数の文字列として、あるいは範囲 0-65535 の正の 10 進整数として与えることができます。 16 進数の文字列は、連結した色コンポーネントをすべて含んでいます。それは、 ### のいずれかで始まらなければなりません。前者は、範囲 0-255 (それに 257 を内部で掛ける) で 16 進の値で指定します。後者は範囲 0-65535 で指定します。例: #FFC0CB (ピンク), ##ffff0000ffff (マゼンタ)。その値に 65536 を掛ける、新しい単位指定子 f が導入されました。範囲 0 から 1 で分数として色コンポーネントを指定するのに便利にします。例:
$*
 
fdefcolor リクエストのためのデフォルト単位指定子であることに注意してください。したがって、上記のステートメントは次と等価です。
$*
 
default で指定される色 (デバイスに特有である) は再定義することができません。 $* と $* のためのデフォルト色が同じでないことはありえます。
.de1  xx yy
.de に似ていますが、互換性モードのスイッチは実行の間に切られます。エントリにおいては、現在の互換性モードが出口で保存され復元されます。
.dei  xx yy
マクロを間接的に定義します。次の例

$*
$*
$*
は次と等価です。
$*
 
.dei1  xx yy
dei リクエストと同様ですが、互換性モードは実行の間にオフに切り換えられます。
.do  xxx
互換性モードを無効にした xxx を解釈します。例えば、
$*
 

は、互換性モードが有効になったとしても、それは作動することを除いて

$*
 

と同じ効果があります。 xxx によって読み込まれるどんなファイルも解釈される前に、前の互換性モードが復元されることに注意してください。

.ds1  xx yy
.ds に似ていますが、互換性モードのスイッチは展開中に切られます。具体的には、`互換性保存' トークンは文字列の始めに挿入され、そして、終りに `互換性復元' トークンが挿入されます。
.ecs
現在のエスケープ文字を保存します。
.ecr
ecs で保存されたエスケープ文字を復元します。 ecs への前の呼び出しがなければ、 ` \' が新しいエスケープ文字になります。
.evc  xx
環境 xx の内容を現在の環境にコピーします。環境のプッシュとポップは行われません。
.fam  xx
xx に現在のフォントファミリを設定します。現在のフォントファミリは現在の環境の一部です。 xx が見当たらない場合は、前のフォントファミリに切り替えます。開始時の値は、`T' です。フォントファミリについてのより多くの情報については、 sty リクエストの説明を参照してください。
.fchar  c string
string となる後退グリフ c を定義します。このリクエストのシンタックスは、 char リクエストと同じです。特別のグリフが現在のフォントで見つからない場合のみ、 fchar で定義されたグリフがチェックされるのに対して、ただ一つの違いは、 char で定義されたグリフが現在のフォント中の同じ名前でグリフを隠すことです。このテストは特別のフォントをチェックする前に発生します。
.fcolor  c
フィルカラー (埋め合わせの色) を c に設定します。 c がなければ、前のフィルカラーに切り替えます。
.fschar  f c string
string となるフォント f のための後退グリフ c を定義します。このリクエストのシンタックスは、(フォントを指定する追加引数がある) char リクエストと同じです。 fschar で定義されたグリフは、 fspecial リクエストで宣言されたフォントのリストの後で、 special で宣言されたフォントのリストの前で検索されます。
.fspecial  f s1 s2...
現在のフォントが f である場合、フォント s1, s2,... は特別です。すなわち、それらは現在のフォントではないグリフを検索します。 special リクエストで指定されたどんなフォントも、 fspecial リクエストで指定されたフォントの後で検索されます。引数がなければ、空となるグローバルな特別のフォントのリストをリセットします。
.ftr  f g
フォント fg に変換します。フォント名 f\f エスケープシーケンスの中で、 FS 条件付きのオペレータの中で、または ft, ul, bd, cs, tkf, special, fspecial, fp, sty リクエストの中で参照される場合は常に、フォント g が使われます。 g が見当たらないか、 f と等しい場合、フォント f は変換されません。
.gcolor  c
グリフ色を c に設定します。 c がなければ、前のグリフ色に切り替えます。
.hcode  c1 code1 c2 code2...
文字 c1 のハイフンコードを code1 に、文字 c2 のハイフンコードを code2 に設定します。ハイフンコードは数字または空白以外の (特別の文字でない) 単一の入力文字でなければなりません。最初に、各小文字 a-z は、それ自体であるハイフンコードを持っています。また、各大文字 A-Z は、それ自体の小文字バージョンであるハイフンコードを持っています。 hpf リクエストを参照してください。
.hla  lang
現在のハイフン言語を lang に設定します。 hw リクエストで指定されたハイフン例外と、 hpf リクエストで指定されたハイフンパターンは両方とも現在のハイフン言語に関連しています。 hla リクエストは、通常 troffrc ファイルによって呼び出されます。
.hlm  n
連続するハイフン行の最大の数を n に設定します。 n が負の場合、最大数はありません。デフォルト値は -1 です。この値は現在の環境に関連しています。環境からの行出力だけがその環境と関連する最大数のために数えます。 \% に起因するハイフンが数えられます。明白なハイフンは数えられません。
.hpf  file
file からハイフンパターンを読み込みます。これは、 -m name オプションが指定される場合、 name .tmac が検索されるのと同じ方法で検索されます。それは、(単純な) TeX パターンファイルと同じフォーマットを持っているべきです。より具体的に、次のスキャン規則が実装されます。
バックスラッシュによって先導されても、パーセント記号はコメント (行の終了までの) を始めます。
\$ のような `ダイグラフ' (連字) のサポートはありません。
^^ xx ( x は、0-9 または a-f です) および ^^ x (範囲 0-127 の x の文字コード) が認識されます。 ^ の他の使用はエラーとなります。
マクロ展開はありません。
(おそらく中括弧の前と後ろに空白類がある) \patterns{...} 表現のための hpf チェックです。中括弧の間のすべてはハイフンパターンとして得られます。したがって、 {} はパターンの中で許可されません。
同様に、 \hyphenation{...} は、ハイフン例外のリストを与えます。
さらに \endinput も認識されます。
後方互換性のために、 \patterns が見当たらない場合、全体のファイルはハイフンパターンの ( % 文字はコメントの始めと単に解釈されて) リストとして扱われます。
ハイフンの中で使用される符号化をマップする hpfcode リクエストの使用は、 groff の入力された符号化へのファイルをパターン化します。
ハイフンパターンの集合は、 hla リクエストによって設定された現在の言語に関連しています。 hpf リクエストは、 troffrc ファイルによって通常呼び出されます。 2 つ目の呼び出しは古いパターンを新しいものに置き換えます。
.hpfa  file
file からのハイフンパターンが現在の言語で既にロードされたパターンに追加されることを除いて hpf と同じです。
.hpfcode  a b c d ...
hpfhpfa リクエストでハイフンパターンファイルを読み込んだ後、最近読み込んだパターン中の文字コード a ですべての文字を文字コード b、文字コード c から d その他へ変換します。最初に、すべての文字コードはそれら自身にマップします。 hpfcode の引数は範囲 0 〜 255 の整数でなければなりません。 groff そのほかでは無効の文字コードを使用することが可能であることに注意してください。
.hym  n
ハイフンマージンn に設定します。現在の調整モードが b でない場合、行が n 以内で短い場合、行はハイフンで結ばれません。デフォルトハイフンマージンは、0 です。このリクエストのためのデフォルトの単位指定子は、 m です。ハイフンマージンは現在の環境に関連しています。現在のハイフンマージンは、 \n[.hym] レジスタで利用可能です。
.hys  n
ハイフンスペースn に設定します。現在の調整モードが b である場合、行が各単語スペースに n 以内の余分な空白を加えることにより位置調整することができる場合、行をハイフンで結びません。デフォルトハイフンスペースは、0 です。このリクエストのためのデフォルトの単位指定子は、 m です。ハイフンスペースは現在の環境に関連しています。現在のハイフンスペースは、 \n[.hys] レジスタで利用可能です。
.itc  n macro
行が \c で中断した .it の変形は、1 行の入力ラインと見なされます。
.kern  n
n が 0 でないか不足する場合、ペアのカーニングを有効にして、そうでなければそれを無効にします。
.length  xx string
string の長さを計算して、(必ずしも以前に定義されない) 数レジスタ xx の中にそれを返します。
.linetabs  n
n が 0 でないか不足している場合、行タブモードを有効にして、そうでなければそれを (それはデフォルトです) 無効にします。行タブモードでは、タブの距離は、(現在の) 出力行と相対的に計算されます。そうでなければ、それらは入力行と相対的に得られます。例えば、次の

$*
$*
$*
$*
$*
$*
$*
は、
a b c
をもたらします。行タブモードでは、同じコードが
a b c
となります。行タブモードは現在の環境に関連しています。読み込み専用の数レジスタ \n[.linetabs] は行タブモードなら 1 に設定され、そうでなければ 0 に設定されます。
.mso  file
file-m コマンドラインオプションでマクロファイルと同じディレクトリで検索されることを除いて so リクエストと同じです。含められるファイル名がフォーム (形式) name .tmac を持っており、それが見つからない場合、 mso はそれどころか反対に tmac. name を含もうと試みます。
.nop  anything
何でも 実行します。これは、`.if 1' に似ています。
.nroff
n ビルトイン条件を真に、 t ビルトイン条件を偽にします。これは、 troff リクエストを使用して逆にすることができます。
.open  stream filename
書き込み用に filename をオープンし、ストリーム名 stream にそれを関連させます。 closewrite リクエストを参照してください。
.opena  stream filename
open に似ていますが、しかし filename が存在する場合、それを切り詰める代わりに、それに追加します。
.output  string
中間出力に (コピーモード解釈に従って) string を直接放出します。これはトップレベルで使用される \! に似ています。 string 中の初期のダブルクォート (二重引用符) は初期の空白を許可するために取り除かれます。
.pnr
stderr にすべての現在定義された数レジスタの名前および内容を印刷します。
.psbb  filename
PostScript イメージ filename のバインディングボックスを取得します。このファイルは、 Adobe's Document Structuring Conventions に適合していなければなりません。コマンドはバインディングボックス値を抽出するために %%BoundingBox コメントを捜します。呼び出しが成功した後、下左角と上右角の (PostScript ユニットでの) 座標は、それぞれ、レジスタ \n[llx], \n[lly], \n[urx], \n[ury] で見つけることができます。いくつかのエラーが生じた場合、4 つのレジスタは、0 に設定されます。
.pso  command
入力が command コマンドの標準出力から来ることを除いて、この振る舞いは、 so リクエストに似ています。
.ptr
stderr に (入力行トラップとディバージョントラップを含まない) すべてのトラップの名前と位置を印刷します。それらが続いて設けられたトラップのプライオリティに影響することができるので、ページトラップリスト中の空のスロットは同様に印刷されます。
.pvs  ±n
ポスト垂直行スペースを n に設定します。デフォルトの単位指定子は、 p です。出力された後、この値は各行に加えられます。引数がなければ、ポスト垂直行スペースはその前の値に設定されます。
垂直行間隔は合計 4 つのコンポーネントから成ります。負の値の .vs\x は行が出力される前に適用され、正の値の .pvs\x は行が出力された後に適用されます。
.rchar  c1 c2...
グリフ c1, c2,... の定義を削除します。これは、 char リクエストの効果を取消します。
.return
マクロ内では、直ちに返ります。引数付きで呼び出されるなら、二度返ります、すなわち、現在のマクロからと、1 つ高いレベルのマクロからです。そうでなければ、効果はありません。
.rfschar  c1 c2...
グリフ c1, c2,... のフォントに特有の定義を削除します。これは、 fschar リクエストの効果を取消します。
.rj
 
.rj  n
次の n 入力行を右揃えします。引数がなければ、次の入力行を右揃えします。右揃えする行の数は、 \n[.rj] レジスタで得られます。これは暗黙に .ce 0 を行います。 ce リクエストは暗黙に .rj 0 を行います。
.rnn  xx yy
yy への数レジスタ xxyy に名前を変えます。
.schar  c string
string となるグローバルな後退グリフ c を定義します。このリクエストのシンタックスは、 char リクエストと同じです。 schar で定義されたグリフは、 special リクエストで宣言されたフォントのリストの後で、マウントされた特別のフォントの前で検索されます。
.shc  c
ソフトハイフン文字を c に設定します。 c が省略される場合、ソフトハイフン文字はデフォルト \(hy に設定されます。ソフトハイフン文字は単語が改行でハイフンで結ばれる時、挿入されるグリフです。ソフトハイフン文字が、起こり得るブレークポイント (改行地点) に直ちに先行するグリフのフォントに存在しない場合、行はその地点で中断 (改行) されないでしょう。ソフトハイフン文字が見つかった時、 ( char リクエストで指定された) 定義も ( tr リクエストで指定された) 変換も考慮されません。
.shift  n
マクロでは、 n 位置だけ引数をシフトします。引数 i は引数 i- n になります。引数 1 から n はもはや利用できません。 n が不足した場合、引数は、1 つシフトされます。負の量によるシフトは現在定義されていません。
.sizes  s1 s2...sn  [0]
このコマンドは、 DESC ファイルの sizes コマンドに似ています。現在のフォントのための利用可能なフォントサイズを s1, s2,...,  sn スケールポイントに設定します。サイズのリストはオプションの 0 によって終了することができます。各 si はさらにサイズ m- n の範囲でありえます。フォントファイルコマンドに反して、リストは、1 つの行を越えて拡大できません。
.special  s1 s2...
フォント s1, s2 は特別で、現在のフォントにないグリフを検索します。引数がなければ、特別のフォントのリストを空にリセットします。
.spreadwarn  limit
出力行中の単語の間の各空間に挿入された追加空白が、 limit より大きいか等しい場合、 troff は警告を出します。負の値は、0 に変更されます。引数がなければ、 limit を変更せずに、警告を出すか、出さないかを切り替えます。デフォルトの単位指定子は、 m です。起動時では、 spreadwarn が非活性化され、 limit は、3m に設定されます。例えば、 troff が 1 行中の各中間の単語に対して 0.2m 以上を追加しなければならない場合、 .spreadwarn 0.2m は警告が生じます。テキストの両方のマージン ( .ad b を使用して) が位置調整される場合のみ、このリクエストはアクティブ (活性) です。
.sty  n f
フォント位置 n にスタイル f を関連させます。フォント位置はフォントかスタイルのいずれかに関連されることができます。現在のフォントはフォント位置のインデックスで、さらにフォントまたはスタイルのいずれかです。スタイルである場合、実際に使用されるフォントは現在のファミリの名前と現在のスタイルの名前を連結した名前のフォントです。例えば、現在のフォントが 1 で、フォント位置 1 がスタイル R に関連していて、現在のフォントファミリが T である場合、フォント TR が使用されます。現在のフォントがスタイルでない場合、現在のファミリが無視されます。リクエスト cs, bd, tkf, uf, fspecial が、スタイルに適用される時、それらは代りにそのスタイルに対応する現在のファミリのメンバに適用されます。デフォルトのファミリは、 -f オプションで設定することができます。 DESC ファイル中の styles コマンドは、どのフォント位置が (もしあれば) 最初にフォントではなくスタイルに関連するか制御します。
.substring  xx n1  [ n2 ]
指定された文字列 xx を、インデックス n1n2 によって定義された部分文字列に置き換えます。文字列の最初の文字はインデックス 0 になります。 n2 が省略される場合、文字列の長さと等しいものが得られます。インデックス値 n1 または n2 が負の場合、後ろに戻って、文字列の終りから数えられるでしょう。最後の文字はインデックス -1 になり、最後の文字の前の文字はインデックス -2 になります。
.tkf  f s1 n1 s2 n2
フォント f のためのカーニングの追跡を可能にします。現在のフォントが f である場合、すべてのグリフの幅は、 n1n2 の間の量ずつで増加させられます。現在のポイントサイズが s1 以下の場合、幅は、 n1 ずつ増加させられます。それが s2 以上の場合、幅は、 n2 ずつ増加させられます。ポイントサイズが s1 以上で s2 以下である場合、幅はポイントサイズの一次関数的に増加します。
.tm1  string
tm リクエストに似ているので、 string はコピーモードで読み込まれ、標準エラーに書き込まれます。しかし、 string 中の最初のダブルクォート (二重引用符) は最初の空白を認めるために取り除かれます。
.tmc  string
最後に改行を書き込みませんが、 tm1 に似ています。
.trf  filename
ファイル filename の内容を透過的に出力します。各行はあたかも \! で先行されるかのように出力されます。しかしながら、行はコピーモードの解釈に従いません。ファイルが改行で終わらないなら、改行が加えられます。例えば、次を使用して、ファイル  f の内容を含んでいるマクロ  x を定義することができます。

$*
$*
$*
cf リクエストと違っているので、ファイルは、正しい troff 入力文字でない NUL のような文字を含むことができません。
.trin  abcd
asciify リクエストが文字変換の前に (もしあれば) 文字コードを使用することを除いて、これは、 tr リクエストと同じです。例:

$*
$*
$*
$*
$*
$*
$*
$*
$*
結果は、 x a です。 tr の使用で、結果は、 x x になるでしょう。
.trnt  abcd
変換が、 \! があるディバージョンへ透過的スループットであるテキストに適用しないことを除いて、これは、 tr リクエストと同じです。例えば、

$*
$*
$*
$*
$*
は、 b を印刷します。 trnttr の代わりに使用されるなら、それは、 a を印刷します。
.troff
n ビルトイン条件を偽にして、 t ビルトイン条件を真にします。これは、 nroff リクエストの効果を取り消します。
.unformat  xx
このリクエストはディバージョン xx を `アンフォーマット' します。できるだけ入力トークンにディバージョンのフォーマットされた要素を変換しようとする .asciify リクエストに反して、 .unformat は、通常、入力での空白か改行によって分けられる単語の間のタブと空白のみを特に扱います。前者はあたかもそれらが入力されたトークンのように扱われます。また、後者は再び伸縮可能です。行の垂直のサイズは保存されないことに注意してください。グリフ情報 (フォント、フォントサイズ、空白幅など) が保持されます。 .box.boxa リクエストの併用は有用です。
.vpt  n
n が 0 でない場合は、垂直位置トラップを有効とします。そうでなければ無効にします。垂直位置トラップは、 wh または dt リクエストによって設定されたトラップです。 it リクエストによって設定されたトラップは、垂直位置トラップでありません。垂直位置トラップが有効になるかどうか制御するパラメータはグローバルです。最初に垂直位置トラップは有効になります。
.warn  n
警告を制御します。 n は有効になる警告ごとに関連する数の合計です。他のすべての警告は無効になります。各警告に関連する数は、 troff(1) にリストされます。例えば、 .warn 0 はすべての警告を無効にし、 .warn 1 は、グリフが不足することに関するそれ以外の警告をすべて無効します。 n が与えられない場合、すべての警告は有効になります。
.warnscale  si
警告の中で使用される単位指定子を si に設定します。 si に対する有効な値は、 u, i, c, p, P です。開始時には、それが i に設定されます。
.while  c anything
条件 c が真の間、入力として anything を受け入れます。 c は、 if リクエストに受け入れ可能な任意の条件でありえます。最初の行が \{ で始まり、最後の行が \} で終る場合、 anything は複数の行を含むことができます。 breakcontinue リクエストを参照してください。
.write  stream anything
anythingstream で指定されるストリームに書き込みます。 stream は以前に open リクエストで指定されたものでなければなりません。 anything はコピーモードで読み込まれます。先導する " は取り除かれます。
.writec  stream anything
最終に改行を書き込みませんが、 write に似ています。
.writem  stream xx
マクロか文字列 xx の内容を stream で指定されるストリームに書き込みます。 stream は以前に open リクエストで指定されたものでなければなりません。 xx はコピーモードで読み込まれます。

拡張エスケープシーケンス

\D' ... '
groff の中間出力のすべての描画コマンドは受け付けられます。より詳細には、下記の 描画コマンド サブセクションを参照してください。

拡張リクエスト

.cf  filename
ディバージョンで使用された時、これは、再読み込みされた時、 filename の内容を透過的に出力にコピーさせるオブジェクトをディバージョンに埋め込みます。 UNIX troff では、 filename の内容は、現在のディバージョンがあってもなくても出力に直ちにコピーされます。この振る舞いは非常に特異なので、それはバグと考えられます。
.de  xx yy
 
.am  xx yy
 
.ds  xx yy
 
.as  xx yy
互換性モードでは、これらのリクエストは、それぞれ .de1, .am1, .ds1.as1 と同様に振る舞います。互換性モードが実行の間に切り替える状態で、`compatibility save' トークンは、始めに挿入され、 `compatibility restore' トークンは終りに挿入されます。
.ev  xx
xx が数値でない場合、これは、 xx と呼ばれる指定された環境に切り替えます。環境はちょうど番号が付けられた環境について、引数のない一致する ev リクエストでポップされるべきです。指定された環境の数の制限はありません。それらはそれらが参照された最初の時に作成されます。
.ss  m n
2 つの引数が ss リクエストに与えられる場合、2 つ目の引数は、 sentence space size (文空間サイズ) を与えます。 2 つ目の引数が与えられない場合、文空間サイズは単語空間サイズと同じになります。単語空間サイズのように、文空間は、現在のフォント用の空間幅パラメータの 12 分の 1 のユニットとなります。最初に、単語空間サイズと文空間サイズの両方は、12 です。 UNIX troff に反して、GNU troff は、さらに nroff モードでこのリクエストを扱います。与えられた値は、最も近い 12 の倍数に丸められます。文空間サイズは、2 つの状況で使用されます。文の終りがフィルモードで行の終わりに生じる場合、単語の中間の空白と文の空白の両方が加えられます。 2 つの空白が行の中間にある文の終りに続く場合、2 つ目の空白は文空白になります。 2 つ目の引数が ss リクエストに与えられない場合、UNIX troff の振る舞いが GNU troff によって正確にそれを示すことに注意してください。 GNU troff では、UNIX troff でのように、常に改行または 2 つの空白のいずれかで文に続くべきです。
.ta  n1 n2...nn  T  r1 r2...rn
タブを位置 n1, n2,..., nn に設定し、タブを nn+ r1, nn+ r2,..., nn+ rnnn+ rn+ r1, nn+ rn+ r2,..., nn+ rn+ rn, などにも設定します。例えば、
$*
 

は、1/2 インチごとにタブを設定します。

新しい数レジスタ

次の読み込み専用のレジスタが利用可能です。
\n[.C]
互換性モードが有効である場合、1 です。そうでなければ、0 です。
\n[.cdp]
最後のグリフの深さは現在の環境に追加します。グリフが基線の下に拡張する場合、それは正です。
\n[.ce]
ce リクエストによって設定されるように、残りの行の数は中央に揃えます。
\n[.cht]
最後のグリフの高さは現在の環境に追加します。グリフが基線の上に拡張する場合、それは正です。
\n[.color]
カラー (色) が利用可能である場合、1 です。そうでなければ、0 です。
\n[.csk]
最後のグリフの skew は現在の環境に追加します。グリフの skew は、グリフの中心の右がグリフが置かなければならないアクセントの中心からどれくらい離れているかです。
\n[.ev]
現在の環境の名前または数です。これは文字列値のレジスタです。
\n[.fam]
現在のフォントファミリです。これは文字列値のレジスタです。
\n[.fn]
現在の (内部) 実際のフォント名です。これは文字列値のレジスタです。現在のフォントがスタイルである場合、 \n[.fn] の値はファミリおよびスタイル名を適切に連結したものです。
\n[.fp]
次の自由なフォント位置の数です。
\n[.g]
常に 1 です。マクロは、それらが GNU troff の下で走っているかどうか決定するためにこれを使用するべきです。
\n[.height]
\H で設定されるようなフォントの現在の高さです。
\n[.hla]
hla リクエストによって設定されるような現在のハイフン言語です。
\n[.hlc]
連続するハイフンで結んだ直前の行の数です。
\n[.hlm]
hlm リクエストによって設定されるように、連続するハイフンで結んだ行の数で許される最大値です。
\n[.hy]
( hy リクエストによって設定されるような) 現在のハイフンフラグです。
\n[.hym]
( hym リクエストによって設定されるような) 現在のハイフンマージンです。
\n[.hys]
( hys リクエストによって設定されるような) 現在のハイフン空間です。
\n[.in]
現在の出力行に適応される字下げ (インデント) です。
\n[.int]
最後の出力行が中断される場合 (つまりそれが \c を含んでいる場合)、正の値に設定します。
\n[.kern]
ペアのカーニングが利用可能である場合、1 となり、そうでなければ 0 になります。
\n[.lg]
( lg リクエストによって設定されるような) 現在のリガチャ (合字) モードです。
\n[.linetabs]
( linetabs リクエストによって設定されるような) 現在の行タブモードです。
\n[.ll]
現在の出力行に適応される行長です。
\n[.lt]
lt リクエストによって設定されるようなタイトル長です。
\n[.m]
色を描く現在のの名前。これは文字列値を持つのレジスタです。
\n[.M]
現在のバックグラウンド色の名前。これは文字列値を持つのレジスタです。
\n[.ne]
トラップを生じさせる、最後の ne リクエストに必要とされる空間の量です。 \n[.trunc] レジスタと併用することは有用です。
\n[.ns]
空間モードが活性でない場合、1 となり、そうでなければ 0 となります。
\n[.pe]
bp リクエストによって引き起こされたページ排出中ならば 1、そうでなければ 0 となります。
\n[.pn]
pn リクエストによって設定されるか、現在のページに 1 を加算した数のいずれかの、次のページの数です。
\n[.ps]
スケールポイントで現在のポイントサイズです。
\n[.psr]
スケールポイントで最後に要求されたポンイトサイズです。
\n[.pvs]
pvs リクエスト設定されるような現在の後の垂直行空間です。
\n[.rj]
rj リクエストによって設定されるような右揃えの行の数です。
\n[.slant]
\S で設定されるような現在のフォントの斜線です。
\n[.sr]
小数としてポイントで最後に要求されたポイントサイズです。これは文字列値のレジスタです。
\n[.ss]
 
\n[.sss]
これらは、 ss リクエストの 1 つ目と 2 つ目の引数によって設定されたパラメータの値を与えます。
\n[.sty]
現在のフォントスタイル。これは文字列値を持つのレジスタです。
\n[.tabs]
ta リクエストへの引数として使用するにふさわしい現在のタブ設定の文字列表現です。
\n[.trunc]
最も最近の垂直の位置トラップによって、または、 ne リクエストによって生産された垂直運動の量を引いて、トラップが ne リクエストによって生じた場合に、垂直の空白の量は切り詰められます。言いかえれば、ポイントでは、トラップが生じさせられます。それは、トラップのための垂直の位置が何だったか、また、垂直の位置が実際に何であるか、の違いを表わします。 \n[.ne] レジスタと併用することは有用です。
\n[.U]
より安全なモードなら、1 に設定し、 ( -U コマンドラインオプションで与える) 安全でないモードなら、1 に設定します。
\n[.vpt]
垂直の位置トラップが可能になる場合は、1 となり、そうでなければ 0 となります。
\n[.warn]
現在可能にされた警告の各々と関連する数の合計です。各警告に関連した数は、 troff(1) にリストされています。
\n[.x]
メジャーバージョン番号です。例えば、バージョン番号が 1.03 である場合、 \n[.x] は、1 を含みます。
\n[.y]
マイナバージョン番号です。例えば、バージョン番号が 1.03 である場合、 \n[.y] は、03 を含みます。
\n[.Y]
groff のリビジョン番号です。
\n[llx]
 
\n[lly]
 
\n[urx]
 
\n[ury]
これらの 4 つのレジスタは、 .psbb リクエストによって設定され、与えられた PostScript イメージの (PostScript ユニットで) バインディングボックスの値を含んでいます。

次の読み込み/書き込みレジスタは、 \w エスケープシーケンスによって設定されます。

\n[rst]
 
\n[rsb]
グリフの高さと深さを考慮に入れますが、 stsb レジスタに似ています。
\n[ssc]
下付き文字 (添え字) の前の最後のグリフに加えられるべき、水平の空白の (おそらく負の) 量です。
\n[skw]
\w 引数での最後のグリフの中心の右にどれくらい離れているかは、ローマンフォントからのアクセントの中心はそのグリフ上に置かれるべきです。

他の利用可能な読み込み/書き込み数レジスタは次のとおりです。

\n[c.]
現在の入力行番号です。 \n[.c] はこのレジスタの読み込み専用の別名です。
\n[hours]
真夜中を過ぎた時間の数です。開始時に初期化されます。
\n[hp]
入力行の現在の水平の位置です。
\n[minutes]
時間の後の分の数です。開始時に初期化されます。
\n[seconds]
分の後の秒の数です。開始時に初期化されます。
\n[systat]
最後の sy リクエストによって実行された system() 関数の返り値です。
\n[slimit]
0 を越える場合、入力スタック上のオブジェクトの最大の数です。 0 以下の場合、入力スタック上のオブジェクトの数に制限はありません。制限なしで、仮想メモリが使い果たされるまで、リカージョン (再帰呼び出し) は継続することができます。
\n[year]
現在の年です。従来の troff の数レジスタ \n[yr] は現在の年から 1900 を引くことに注意してください。

その他

troff は、1 つの (読み込み/書き込み) 文字列に基づいたレジスタ \*(.T をあらかじめ定義しています。それは、 -T コマンドラインオプション、すなわち現在の出力デバイス (例えば latin1ascii) に与えられた引数を含んでいます。これは、(読み込み専用) 数レジスタ \n[.T] と同じではないことに注意してください。それは、 troff-T コマンドラインオプションで呼び出された場合は、1 であり、そうでなければ 0 であると定義されます。この振る舞いは、UNIX troff とは異なります。

DESC ファイルにリストされないフォントは、それらが参照される場合、次の利用可能なフォント位置に自動的にマウントされます。フォントが未使用のフォント位置の fp リクエストで明示的にマウントされることになっている場合、それは、 \n[.fp] レジスタで見つけることができる、最初の未使用のフォント位置にマウントされるべきです。 troff はこれを厳密に強制しませんが、その数が任意の現在使われている位置の数よりはるかに大きな位置でフォントがマウントされることは許されません。

文字列の挿入は既存のマクロ引数を隠しません。したがって、マクロでは、

. xx  \\$@

を行うより効率的な方法は、

\\*[ xx ]\\ です。

フォント記述ファイルがペアのカーニング情報を含んでいる場合、そのフォントからのグリフは出っ張ります。 2 つのグリフの間のカーニングはそれらの間の \& を置くことにより抑制することができます。

条件中の文字列の比較では、1 つ目のデリミタ文字への異なる入力レベルに現われる文字は、2 つ目または 3 つ目のデリミタと認識されません。これはさらに tl リクエストに当てはまります。 \w エスケープシーケンスでは、開始デリミタ文字への異なる入力レベルに現われる文字は、終結デリミタ文字と認識されません。 \A, \b, \B, \C, \l, \L, \o, \X, \Z についても同じです。ダブルクォート (二重引用符) によって区切られたマクロか文字列引数を解読する時、開始デリミタ文字への異なる入力レベルに現われる文字は、終結デリミタ文字と認識されません。 \$@ の実装は、引数を囲むダブルクォート (二重引用符) が同じ入力レベルに現れることを保証します。同じ入力レベルは、引数自体の入力レベルとは異なっています。開始 ] として同じ入力レベルに生じることを除いて、長いエスケープ名 ] では、終結デリミタと認識されません。互換性モードにおいて、入力レベルに注意は払われません。

いくつかの新しいタイプの条件があります。

.if r xxx
指定された xxx 数レジスタがある場合、真です。
.if d xxx
文字列、マクロ、ディバージョンまたは指定された xxx リクエストがある場合、真です。
.if m xxx
指定された xxx 色がある場合、真です。
.if c ch
利用可能なグリフ ch がある場合、真です。 ch は、 ASCII 文字またはグリフ (特別の文字) \( xx または \[ xxx ] のいずれかです。条件はさらに、 chchar リクエストによって定義された場合、真になります。
.if F f
フォント f が存在するなら、真です。 f は、実際にそれをマウントせずに、まるでそれが ft リクエスト (これは、フォントの翻訳とスタイルが適用されます) でオープンされたかのように取り扱われます。
.if S s
スタイル s が登録されているなら、真です。フォント翻訳が適用されます。

tr リクエストは今は \~ の上に文字をマップすることができます。

今では、マクロの定義を終了するために 1 つ目と 2 つ目のドット (あるいは終了マクロの名前) の間に空白類を持つことができます。例:


$*
$*
$*
$*
$*

中間出力フォーマット

このセクションは、GNU troff によるフォーマット出力について記述します。 GNU troff によって使用される出力フォーマットは、Unix のデバイス独立 troff によって使用されるものに非常に似ています。違いだけがここで文書化されます。

ユニット

s コマンドへの引数はスケールポイント (ポイント/ n のユニット、ここで n は、DESC ファイル中の sizescale コマンドへの引数) です。さらに x Height コマンドへの引数はスケールポイントです。

テキストコマンド

N n
現在のフォントのインデックス n (負でない整数) でグリフを印刷します。

tcommand 行が DESC ファイルの中にある場合、troff は次の 2 つのコマンドを使用します。

t xxx
xxx は、空白または改行 (より正確に言えば、対応する文字でアクセスされるグリフのシーケンスです) によって終了した文字の任意のシーケンスです。最初の文字は現在の位置で印刷されるべきで、現在の水平の位置は各文字のために最初の文字の幅などによって増加させられるべきです。グリフの幅は、現在のポイントサイズのために適切に計られ、そして、それが水平の解像度の倍数であるように丸められて、フォントファイルの中で与えられたものです。特別の文字はこのコマンドを使用して印刷することができません。
u n xxx
これは、各文字を印刷した後、その文字および n の幅の合計によって現在の水平の位置が増加させられることを除いて t コマンドと同じです。

単一文字は、フォントの名前や特別の文字にも、8 ビットセットを持つことができることに注意してください。

グリフとフォントの名前は任意の長さにすることができます。ドライバは、それらが長さが 2 文字のみになることを仮定すべきではありません。

グリフが印刷されることになっている時、そのグリフは常に現在のフォントになります。デバイス独立 troff と異なり、ドライバがグリフを見つけるために特別のフォントを検索する必要はありません。

色サポートのために、いくつかの新しいコマンドが加えられました。

$*
 
$*
 
$*
 
$*
 
$*
様々な色スキーム (枠組) を使用して、現在の描画色の構成要素を設定します。 md は、デフォルト値の描画色をリセットします。引数は範囲 0 〜 65536 の整数です。

x デバイスコントロールコマンドが拡張されました。

$*
n が 1 である場合は、空白の下線引きを始めます。 n が 0 である場合は、空白の下線引きを止めます。これは、nroff モードにおいて cu リクエストのために必要で、そうでなければ無視されます。

描画コマンド

D 描画コマンドが拡張されました。 -n オプションが与えられる場合、これらの拡張は、GNU pic では使用されません。
$*
n への単色のオブジェクトを埋めるために使用される灰色の陰を設定します。 n は、0 と 1000 の間の整数でなければなりません。ここで、0 は単色の白に対応し、1000 は単色の黒、中間の灰色の陰に対応する間の値です。これは、単色の円、単色の楕円および単色の多角形にのみ当てはまります。デフォルトでは、1000 のレベルが使用されます。単色のオブジェクトがどのような色を持っても、その下のすべてを完全に見えなくするべきです。 1000 を越えるか 0 未満の値も使用することができます。これは、行とテキストのために現在使用されている灰色の陰で満たすことを意味します。通常は、これは黒くなります。しかし、いくつかのドライバは、これを変更する方法を提供できます。
その引数が、驚きの結果を導くことができる水平の解決の整数の倍数を常に丸められるので、対応する \D'f ... ' コマンドは使用されてはなりません。
$*
現在の位置に左端のポイントで直径 d の単色の円を描画します。
$*
現在の位置に左端のポイントで水平の直径 dx そして、垂直の直径 dy の単色の楕円を描画します。 delim$$
$*
現在の位置に for $i = 1 ,..., n+1$ の i 番目の頂点で多角形を描画します。 $+ sum from j=1 to i-1 ( dx sub j , dy sub j )$。今のところ、GNU pic は、三角形と長方形を生成するこのコマンドのみを使用します。
$*
Dp に似ていますが、輪郭のある多角形ではなく単色で描画します。
$*
n マシンユニットに現在のライン厚さを設定します。伝統的な Unix troff ドライバは現在のポイントサイズに比例した行の厚さを使用します。 Dt コマンドが与えられていない場合、または Dt コマンドが負の値の n で与えられた場合、ドライバはこれを行ない続けるべきです。 n の値が 0 なら、最も小さな利用可能な行の厚さを選択します。

これらのコマンドの実行の後にどのように現在の位置を変更すべきかで困難が発生します。 GNU pic によって生成されたコードがこれに依存しないので、これは非常に重要ではありません。次の形式の描画コマンドを与えられます。

\D′ c $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ $x sub n$ $y sub n$′

cc, e, l, a, ~ のうちのいずれでもない場合、 Unix troff は垂直の量として $x sub i$ の各々、水平の量として $y sub i$ の各々を処理しません。描画されたオブジェクトの幅は、$sum from i=1 to n x sub i$ である、高さは、$sum from i=1 to n y sub i$ であると仮定します。 (高さに関する仮定は、\w エスケープシーケンスでそのような D コマンドを使用した後に stsb レジスタを検査することにより分かります)。この規則は、さらに De を例外としてすべてのオリジナルの描画コマンドに適用できます。互換性のある GNU troff のために、たとえそれが DtDf およびより少ない範囲で DE コマンドの場合のひどい結果を生成しても、さらにこの規則に従います。したがって次の形式の D コマンドを実行した後に

D c $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ $x sub n$ $y sub n$\n

現在の位置は $( sum from i=1 to n x sub i , sum from i=1 to n y sub i )$ によって増加させられるべきです。

別の拡張セットは次のとおりです。

$*
 
$*
 
$*
 
$*
 
$*
上記の m コマンドに似てフィリング (充てん) する色の色の構成要素を設定します。

現在の位置は、 ( Df と反対に) それらの色コマンドによって変更されません。

デバイス制御コマンド

x X コマンドへの引数が改行を含むことを認める継続仕様があります。 x X コマンドへ引数を出力する時、 GNU troff が、(通常では、それは改行ですべての引数を終了する) a + 文字についての引数での各改行に続きます。したがって、 x X コマンドを含んでいる行の後の行が + で開始する場合、 x X コマンドを含んでいる行を終了する改行が、 x X コマンドへの引数の一部として処理されるべきです。 + は無視されるべきです。また、 + に続く行の一部は、 x X コマンドに続く行の一部のように処理されるべきです。

最初の 3 つの出力コマンドは次のようであることを保証されます。

x T  device
 
x res  n h v
 
x init

非互換性

多くの拡張にもかかわらず、groff は大きな度合で古典的な troff への互換性を保持しています。拡張で衝突が起こる場合については、制限された特別の互換性モードで古い機能性が groff のために作成されました。

Groff 言語

groff は、一貫した方法で古典的な troff のために、または roff の他の実装のために書かれた roff コードを処理することを可能にする 互換性モード を提供します。

互換性モードは、コマンドラインオプションで切り替えることができ、 $* リクエストでオン/オフします。数レジスタ $* は互換性モードがオンの場合 1 です、そうでなければ 0 です。

長い名前のための GNU コンセプト (概念) がいくつかの非互換性を引き起こすので、これは必要になりました。 古典的 troff は、内容 cd で文字列 ab を定義するように

$*

を解釈します。 groff モードにおいて、これは、指定された $* マクロの呼び出しと見なされます。

さらに、 古典的 troff は、 groff が長い名前の開始としてこれを解釈する一方、 $* を呼び出す文字列または数レジスタへの参照のように $* または $* を解釈します

互換性モードにおいて、groff は従来の方法でこれらのものを解釈します。それで、長い名前は認識されません。

他方では、 GNU ネイティブモード における groff は、文字列、マクロ、ディバージョン、数レジスタ、フォントまたは環境の名前の中で、単一文字エスケープ $* (バックスラッシュ), $* (垂直の棒) $* (キャレット), $* (アンパサンド), $* (左中括弧), $* (右中括弧), $* (空白), $* (シングルクォート, 一重引用符), $* (バッククォート), $* (マイナス), $* (下線), $* (バング), $* (パーセント), and $* (文字 c) 使用することを許可しません。ところが、 古典的 troff は行います。

$* エスケープシーケンスは名前中のこれらのエスケープシーケンスを回避するのに便利です。

端数のポイントサイズは、1 つの注目すべき非互換性を引き起こします。古典的 troff では、 $* リクエストが単位指定子を無視します。したがって、

.ps 10u

は、ポイントサイズを 10 ポイントに設定します。ところが、groff ネイティブモードにおいては、ポイントサイズを 10 スケールポイントに設定します。

groff においては、フォーマットされていない入力文字とフォーマットされた出力文字 (グリフ) の間に基本的な違いがあります。グリフがどのように出力されるかの影響はすべてグリフで保存されます。いったんグリフが構築されたならば、それは、 $* $* $* $* $* リクエストを含めて、実行されるすべての後のリクエストに影響されません。

通常は、グリフが現在の出力ラインへ加えられる直前に、グリフは入力文字から構築されます。マクロ、ディバージョンと文字列は、実際にすべて同じタイプのオブジェクトです。それらは、任意の組み合わせで入力文字とグリフのリストを含んでいます。

特別の文字は両方でありえます。出力に加えられる前に、それらは、入力されたかのように振る舞い、その後、それらはグリフを表示します。

グリフはマクロの処理のための入力文字のように振る舞いません。それは、それが構築された入力文字が持っていかもしれない特別の特性のどれも引き継ぎません。次の例はそれらをより明らかにします。


$*
$*
$*
$*
$*

GNU troff と共に、これは、 $* として印刷されます。したがって、各ペアの入力バックスラッシュ $* は単一の出力バックスラッシュグリフ $* に変えられ、また、それらが再読み込みされる場合、結果の出力バックスラッシュは、エスケープ文字として解釈されません。

それらが再読み込みされた時、 古典的 troff はエスケープ文字としてそれらを解釈し、結局単一のバックスラッシュ $* を印刷することになります。

GNU では、バックスラッシュ文字 $* の印刷可能なバージョンを得る正確な方法は、 $* エスケープシーケンスです。しかし、古典的 troff は構文的でないバックスラッシュを得るためのきれいな特性を提供しません。近い方法は、 $* エスケープシーケンスを使用する現在のエスケープ文字の印刷可能なバージョンです。現在のエスケープ文字が再定義されない場合、これは働きます。それは、GNU モードと互換性モードの両方で働きます。一方、複数のバックスラッシュのシーケンスを指定するような汚いトリックは確実に働きません。ディバージョン中の異なる取り扱いについては、マクロの定義またはテキストモードが直ちにバックスラッシュの必要な数に関する混乱の原因となります。

ディバージョンが再読み込みされる時、解釈されるディバージョン中のエスケープシーケンスを格納するために、従来の $* 透過的な出力機能または新しい $* エスケープシーケンスのいずれかを使用することができます。

中間出力

groff の中間出力フォーマットは発展中です。これまでのところ、それはいくつかの非互換性がありますが、古典的 troff 出力フォーマットへの十分な互換性を確立するように意図されます。現実に、次の非互換性が存在します。
$*
多角形の描画の後の位置決めは古典的定義と矛盾します。
$*
古典的な "デバイス独立の" troff が行ったように、中間の出力は他のデバイスに再スケールすることができません。

作者

Copyright (C) 1989, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.

この文書は、FDL (GNU Free Documentation License) バージョン 1.1 以降の条項に従って配布されます。利用者のシステムには、FDL のコピーがあるはずです。それは、でオンラインでも入手可能です。この文書は、James Clark によって書かれ、とによって修正されています。

この文書は、 groff、GNU roff 配布の一部です。以前は、この文書の内容は、マニュアルページ troff(1) の中で維持されていました。異なる roff システムの言語の側面を処理する部分だけが、この文書へ繰り越されました。 troff コマンドラインオプションと警告は、いまでも troff(1) で文書化されています。

関連項目

groff info ファイル は、 info(1) 参照、1 つの文書内の groff 文書をすべて表示します。
groff(1)
groff に関連するすべての文書のリスト。
groff(7)
groff 言語の解説です。平易な groff のあらかじめ定義されたクエスト、レジスタおよびエスケープのすべての短いが完全な参照を含んでいます。コマンドラインから、これは次のように呼び出して使用します。
 
shell# $*/
roff(7)
さらなる歴史上の文書を指し示すポインタを含む roff システムの概観です。
[ CSTR #54/]
1992年に Brian Kernighan の修正が行なわれた 1976年の J. F. Osanna による Nroff/Troff User's Manual。古典的な troff 文書は、にあります。
17 January 2014 Groff Version 1.19.2