groff(7) FreeBSD 一般コマンドマニュアル

groff

前のページ 上に戻る 次のページ

groff



解説

       groff  とは、 GNU roff を表しており、roff 清書システムをフ
       リーで実装したものです。 groff システムの概観ならびに背 景
       については roff(7) を参照してください。

       このドキュメントでは、groff 内で使用される、あらかじめ定義
       された roff 言語要素を簡潔に説明しているだけです。古くから
       ある機能と groff 拡張機能についての両方とも扱っています。

       歴史的に、 roff 言語は troff と呼ばれています。 groff は、
       古くからあるシステムと互換性を持ちつつ、独自の拡張機能も提
       供 しています。そのため GNU 版では、 roff, troff, groff 言
       語という術語は同義として使うこともできるでしょう。しかし、
       troff は、どちらかと言えば古くからの機能に対して適用される
       という傾向があり、それに対して、 groff は GNU 拡張に重きを
       置 い ています。そして、 roff は、この言語の一般的な術語に
       なっています。

       このファイルは、 groff info(1) ファイルにある完全なド キュ
       メントの簡易版に過ぎません。 info ファイルの方がより詳細で
       実情に近く、正確な情報を含んでいます。

       groff ドキュメントを書くために使う一般的な文法は比較的やさ
       しいのですが、 roff 言語の拡張機能を書くのは少々骨が折れる
       かもしれません。

       roff 言語は、行指向の言語です。行には、制御行とテキスト 行
       の  2 種類しかありません。制御行は制御文字で始まります。制
       御文字は、デフォルトではピリオド "." あるいはシングル クォ
       ー ト "'" です。そのほかの文字で始まる行はすべてテキスト行
       です。

       B>制B>御B>行は、コマンドを表し、オプションで引数を取ることもあり
       ます。制御行は、次のような文法になります。先頭の制御文字の
       後には、コマンド名を続けることができます。引数は、もしあれ
       ば、コマンド名や他の引数と空白で分けられます。例えば、次の
       ようにします。

              .command_name arg1 arg2

       インデント用に、先頭の制御文字とコマンド名との間にはスペー
       スやタブ文字をいくつ入れても良いですが、制御文字は行の先頭
       になくてはなりません。

       B>テB>キB>スB>トB>行は、表示される部分のことです。テキスト行はエスケ
       ープシーケンスで変更することができます。エスケープシーケン
       スは先頭にバックスラッシュ `\' を置くことで認識されま す。
       これらは、行や単語の一部に含まれ、整形要素となったり関数と
       なったりします。シングルクォート "'" で区切られた引数を 取
       る も の もあります。また、開き括弧 `(' で始めたり、角括弧
       `[' と `]' で括ったりする符号化で長さが決まるシーケンス も
       あります。

       3.     テキスト行はすべて、スペースをとらない特殊文 字  \&
              で始めてください。

       このやり方は、一番効率の良いコードが生成できるというわけで
       はありませんが、最初の一歩としては使えるはずです。さらに良
       いやり方については groff info ファイルおよび groff_tmac(5)
       を参照してください。

       roff ソースファイルを読むのはこれよりは簡単です。すべて の
       マクロ定義部分で 2 重になっているバックスラッシュを 1 つに
       置き換えればよいだけです。


groff 要素

       roff 言語の要素は、テキストファイルに整形用情報を付加す る
       ものです。基本的な要素は、あらかじめ定義されたコマンドおよ
       び変数であり、この要素のおかげで roff は本格的なプログラミ
       ング言語になっているのです。

       roff コマンドには 2 種類あります。コマンドは引数を取ること
       もあります。 B>リB>クB>エB>スB>トは、ドット `.' あるいは "'" で始 ま
       る 行に書かれるものです。これに対して B>エB>スB>ケB>ーB>プB>シB>ーB>ケB>ンB>ス
       は、バックスラッシュ `\' で始まる、行埋め込み式の関数や 単
       語中の整形要素です。

       ユ ーザは独自の整形コマンドを .de リクエストを使って定義す
       ることができます。これらのコマンドは B>マB>クB>ロと呼ばれてい ま
       すが、実際にはリクエストとまったく同様に使われます。マクロ
       パッケージは groff 言語で書かれた定義済みのマクロセット で
       す。ユーザが独自にエスケープシーケンスを作成できる場合とい
       うのは非常に限られており、特殊文字のみマップすることができ
       ます。

       groff 言語は、インタフェースによってさまざまな種類の変数を
       提供しています。定義済みの変数もありますが、ユーザも同様に
       自分で変数を定義できます。

       B>文 B>字B>列変数は文字列を格納します。この変数は .ds リクエスト
       で設定され、値は \* エスケープシーケンスを使って取り出しま
       す。

       B>レB>ジB>スB>タ変数は数値、スケールファクタつき数字、場合によって
       は文字列に似たオブジェクトを格納できます。 .nr リクエス ト
       で設定され、値は \n エスケープシーケンスを使って取り出しま
       す。

       B>環B>境変数は、行の長さやフォントサイズなどのようなグローバル
       な整形パラメータをユーザが後で再利用するために一時的に格納
       できるようにする変数です。 .ev リクエストによって で き ま
       す。

       B>フB>ォB>ンB>トは、名前もしくは内部番号のどちらかで判別されます。
       何行目というような位置条件です。アクションの中には、条件が
       揃っ た ときに自動的に起動するように指示できるものがありま
       す。

       これより詳細な情報については、groff info ファイルに示さ れ
       ています。


制御文字

       ある条件下で特別な制御タスクをもつ文字がいくつかあります。

       .      ドットは、行の先頭あるいは .if, .ie, .el,  お よ び
              .while   リクエスト中の条件の後にある場合のみ特別で
              す。その位置では、リクエスト (あるいはマクロ) を 導
              入 する制御文字になります。 \. エスケープを使うと、
              この特別な動作を遅らせることができます。 .cc リクエ
              ス ト を 使うことで、この制御文字を別の文字に設定し
              て、ドット `.' を特殊文字でなくすることができます。

              他 の位置にドットがあるときは、ただのドット文字以上
              の意味はありません。テキスト段落の中では、文はそ れ
              ぞれ新しい行で始めるほうが有利です。

       '      シングルクォートには 2 つの制御機能があります。行の
              先頭および条件リクエスト内では、シングルクォート は
              非 ブレーク制御文字になります。これは、ドットのよう
              にリクエストを導入しますが、リクエストが行を折り 返
              さ ないような追加のプロパティをつけるものです。 .c2
              リクエストを用いると、非ブレーク制御文字を別の文 字
              に設定することができます。

              2  つめのタスクとして、シングルクォートは、いくつか
              の関数エスケープシーケンスの中で引数の区切り文字 と
              し てよく使用されます (引数に含まれない文字のペアな
              らどれでも良いのですが)。その他の場所にあれば、シン
              グ ルクォート文字あるいはアポストロフィ文字になりま
              す。 groff は、表示用の表記としてエスケープシーケン
              ス \(cq を提供しています。

       "       ダブルクォートはリクエストおよびマクロ中の引数を括
              るときに使用されます。 .ds および .as リクエスト 内
              で は、引数の先頭にくるダブルクォートは取り除かれ、
              その後に続くダブルクォート以外の文字を定義文字列 と
              し ます (先頭にホワイトスペースがくるのを有効にしま
              す)。エスケープされたダブルクォート \" はコメントの
              開 始になります。それ以外は、ダブルクォートには特別
              な機能はありません。 groff は、表示用の表記としてエ
              スケープシーケンス \(dq を提供しています。

       \       バックスラッシュは、通常エスケープシーケンスの開始
              を意味しています (この文字は、 ec リクエストに よっ
              て変更できます)。表示用のエスケープ文字は、エスケー
              プシーケンス \e で、バックスラッシュのグリフは \(rs
              特 別な意味を持ちます。これは、長いエスケープシーケ
              ンス名やエスケープシーケンスの引数を終わらせま す。
              それ以外の場合は、特別な意味はありません。

       space   空白文字は、機能的な働きしか持たない文字です。これ
              は、リクエストやマクロの引数の区切り文字、および テ
              キ スト行における単語の区切り文字です。また、空白文
              字は groff の単語間の水平方向の空白計算に作用 し ま
              す。定義された空白幅を得たい場合は、 `\ ' (エスケー
              プ文字とそれに続いた空白文字)、 \|, \^, あるいは \h
              のようなエスケープシーケンスを使う必要があります。

       newline
              テ キストの段落においては、改行は空白文字とほぼ同じ
              ような作用をします。連結された行は、エスケープし た
              改行で指定できます。つまり、行の最後の文字に `\' を
              指定するのです。

       tab    テキスト中にタブ文字があれば、インタプリタは次の 定
              義 済みのタブ位置へ水平方向にインデントを作ります。
              タブ位置の調整には洗練されたインタフェースが存在 し
              ます。


数式

       B>数B>値は、符号つき整数、符号なし整数、浮動小数点実数のいずれ
       か、およびそれに単位指定子を付加したものです。 B>単B>位B>指B>定 B>子
       は、 計測単位を表す 1 文字の略語です。単位指定子が後につい
       た数字は、サイズに関する値を意味しています。デフォル ト で
       は、数値は単位指定を持ちません。つまり、単なる数字にすぎま
       せん。

       roff 言語では、次の単位指定子を定義しています。

              c   センチメートル
              i   インチ
              P   パイカ = 1/6 インチ
              p   ポイント = 1/72 インチ
              m   em = ポイント値でのフォントサイズ (文字
                  `m' の幅)
              M   em の 100 倍
              n   en = em/2
              u   実際の出力デバイスでの基本単位
              v   基本単位での行送り幅
              z   スケールされたポイント数 = 1 ポイントの
                  1/sizescale 倍 (フォントの DESC ファイル
                  で定義)

       B>数B>式は、先で定義された数値と算術演算子 `+', `-', `*', `/',
       `%' (剰余), 比較演算子 `==' ( `=' と 同 じ),  `<=',  `>=',
       `<',  `>',  論理演算子 `&' (論理積), `:' (論理和), `!' (否
       定), および括弧 `(' と `)' との組み合わせです。

                     す。
          !N         N の値が 0 以下であれば真です。
          's1's2'    文字列 s1 が文字列 s2 と同一であれば真で
                     す。
          !'s1's2'   文字列 s1 が文字列 s2 と同一でなければ真
                     です。
          cch        文字 ch が利用可能であれば真です。
          dname      name という文字列、マクロ、ディバージョ
                     ン、リクエストが存在すれば真です。
          e          現在のページ番号が偶数なら真です。
          o          現在のページ番号が奇数なら真です。
          n          フォーマッタが nroff なら真です。
          rreg       reg というレジスタがあれば真です。
          t          フォーマッタが troff なら真です。



リクエスト

       このセクションでは、定義済みのリクエストについて短いリファ
       レ ンスを与えます。 groff では、リクエストとマクロの名前を
       任意の長さにすることできます。長い名前に対して括弧で括った
       りマークをつける必要はありません。

       た いていのリクエストは 1 つないし複数の引数をとります。引
       数は空白文字で区切られます (タブではありません!)  引数の長
       さや数について固有の制限はありません。引数はダブルクォート
       で括ることができます。引数に空白文字が含まれる場合にとても
       便 利です。例えば、 "arg with space" は 1 つの引数を表して
       います。

       リクエストの中には、引数を与えると、引数なしの場合と異なっ
       た動きをするものがあります。その詳細すべてについてはここで
       は説明しません。詳細は groff info ファイルを参照してくださ
       い。

       後に述べるリクエストの説明では、引数の名前の多くはその意味
       を表すように選ばれています。次にあげる表記についてだけは、
       意味を明らかにする必要があるでしょう。

          c          1 文字を表します。
          font       フォント名あるいはフォント番号で指定され
                     たフォント
          anything   行末までのすべての文字、あるいは \{\} に囲われた文字
          n          評価されると整数値を返す数式
          N          符号つきまたは符号なしの任意の数式
          +-N        符号によって 3 つの意味があります。次に
                     説明をします。

       +-N で定義された式が `+' 符号で始まる場合、この式の結果 の
       値は、関連するリクエストがすでに持っている固有値に加算され
       ます。例えば、数値レジスタに加算されます。式が `-' で始 ま
       る 場 合、この式の結果の値は、リクエストの値から減算されま
       .ad       現在の位置揃えモードで出力行の位置揃えを開始しま
                 す。
       .ad c      位 置 揃 え モード c で行の位置揃えを開始します
                 (c=l,r,b,n)。
       .af register c
                 フォーマット c をレジスタ register に割り当て ま
                 す (c=l,i,I,a,A)。
       .aln alias register
                 レジスタ register の別名 alias を作成します。
       .als alias object
                 リ ク エスト、文字列、マクロ、ディバージョン ob-
                 ject の別名 alias を作成します。
       .am macro .. が呼ばれるまでのものをマクロ macro に追加しま
                 す。
       .am macro end
                 .end が呼ばれるまでのものをマクロ macro に追加し
                 ます。
       .am1 macro
                 .am と同様ですが、マクロの展開中は互換モードは無
                 効になります。
       .am1 macro end
                 .am と同様ですが、マクロの展開中は互換モードは無
                 効になります。
       .as stringvar anything
                 文字列 anything を文字列変数 stringvar に追加 し
                 ます。
       .asciify diversion
                 ディバージョン diversion に含まれる ASCII 文字、
                 スペース、およびエスケープシーケンスのいくつかを
                 アンフォーマットします。
       .backtrace
                 入 力 のバックトレースを標準エラー出力に出力しま
                 す。
       .bd font N
                 フォント fontN-1 単位分強調します。
       .bd S font N
                 現在のフォントが font のときに特別なフォン ト  S
                 で強調します。
       .blm      空行マクロの設定を解除します。
       .blm macro
                 空白行を意味するマクロを macro に設定します。
       .box      現在のディバージョンを終了します。
       .box macro
                 macro へ転換します。その際、部分的に行詰めされた
                 行は取り除きます。
       .boxa     現在のディバージョンを終了します。
       .boxa macro
                 macro へ転換し、追加します。その際、部分的に行詰
                 めされた行は取り除きます。
       .bp       現在のページを終了して新しいページを開始します。
       .bp +-N   現在のページを終了します。次のページ番号 を  +-N
                 にします。

       .ch trap N
                 trap の場所を N に変更します。
       .char c anything
                 文字 c を文字列 anything と定義します。
       .chop object
                 マクロ、文字列、ディバージョン object の最後の 1
                 文字をとり除きます。
       .close stream
                 ストリーム stream をクローズします。
       .continue
                 while ループにおける現在の繰り返し処理を終了しま
                 す。
       .cp       互換モードを有効にします。
       .cp N     N  が 0 なら互換モードを無効にします。それ以外な
                 ら有効にします。
       .cs font N M
                 フォント font の固定ピッチ文字幅を N/36 em に 設
                 定します (em は値 M)。
       .cu N     nroff  の場合の連続アンダーライン。 troff のリク
                 エスト .ul に相当します。
       .da       現在のディバージョンを終了します。
       .da macro マクロ macro を転換・追加します。
       .de macro リクエスト .. が呼ばれるまでマクロ macro を定 義
                 (再定義) します。
       .de macro end
                 リ クエスト .end が呼ばれるまでマクロ macro を定
                 義 (再定義) します。
       .de1 macro
                 .de と同様ですが、マクロ展開中は互換性モードは無
                 効になります。
       .de1 macro end
                 .de と同様ですが、マクロ展開中は互換性モードは無
                 効になります。
       .dei macro
                 文字列レジスタ macro に名前が含まれるマクロを ..
                 が呼ばれるまで定義 (再定義) します。
       .dei macro end
                 間 接的にマクロを定義 (再定義) します。 macro お
                 よび end は文字列レジスタであり、この内容がそ れ
                 ぞれマクロ名と終了マクロに挿入されます。
       .di       現在のディバージョンを終了します。
       .di macro マクロ macro に転換します。
       .do name   リクエスト .name を互換モードを無効にして解釈し
                 ます。
       .ds stringvar anything
                 文字列変数 stringvar に文字列 anything を設定 し
                 ます。
       .dt N trap
                 ディ バージョンのトラップ位置を N に設定します (
                 デフォルトの単位指定子は vです)。
       .ec       エスケープ文字を `\' に戻します。
       .ec c     エスケープ文字を c に設定します。
       .fam name 現在のフォントファミリを name に設定します。
       .fc       フィールド機構を無効にします。
       .fc a      フィールド区切りを a に設定し、パディング文字を
                 空白にします。
       .fc a b   フィールド区切りを a に、パディング文字を b に設
                 定します。
       .fi       出力行を埋めます。
       .fl       出力バッファをフラッシュします。
       .fp n font
                 位置 n にフォント font をマウントします。
       .fp n internal external
                 長 い名前 external のフォントを短い名前 internal
                 のフォントとし、位置 n にマウントします。
       .fspecial font s1 s2...
                 現在のフォントが font の場合に、 s1, s2, ...  を
                 特別フォントにします。
       .ft        直前のフォントに戻します。リクエスト \fP と同じ
                 です。
       .ft font  フォント名または番号 font に変更します。エスケー
                 プシーケンス \f[font] と同じです。
       .ftr font1 font2
                 フォント font1 をフォント font2 に変換します。
       .hc       追加ハイフネーション指定文字を削除します。
       .hc c      追加ハイフネーション指定文字として c を設定しま
                 す。
       .hcode c1 code1 c2 code2 ...
                 文字 c1 のハイフネーションコードを code1 に、 文
                 字 c2 のコードを code2 のように設定します。
       .hla lang 現在のハイフネーション言語を lang に設定します。
       .hlm n    ハイフンされた行の最大連続数を n に設定します。
       .hpf file ハイフネーションのパターンをファイル file から読
                 み込みます。
       .hw words  例 外 的 なハイフネーションをする単語のリストを
                 words で指定します。
       .hy N     ハイフネーションモードを N に変更します。
       .hym n    ハイフネーションのマージンを n に設定します ( デ
                 フォルトの単位指定子は m です)。
       .hys n    ハイフネーションのスペースを n に設定します。
       .ie cond anything
                 条件式 cond が真ならば anything を処理します。偽
                 の場合はリクエスト .el へ移動します。
       .if cond anything
                 条件式 cond が真ならば anything を処理します。偽
                 の場合は何もしません。
       .ig        リ クエスト .. が呼ばれるまでテキストを無視しま
                 す。
       .ig end   リクエスト .end が呼ばれるまでテキストを無視しま
                 す。
       .in       インデント量を直前の値に戻します。
       .in +-N    引き数 +-N に従ってインデント量を変更します (デ
                 フォルトの単位指定子は mです)。
       .it N trap
                 以外の場合は、行タブモードを有効にします。
       .lf N file
                 入力する行数を N に、ファイル名を file に設定 し
                 ます。
       .lg N     引数 N が 0 より大きければリガチャ (合字) モード
                 にします。
       .ll       行幅を直前の値に戻します。
       .ll +-N   行幅を引数 +-N に従って設定します (デフォルト の
                 設定は 6.5i で、単位指定子は m です)。
       .ls       追加の行間スキップ量を直前の値に戻します。
       .ls N      追加の行間スキップ量を N に設定します。つまり、
                 テキストの出力行それぞれの後に N-1 行の空白行 を
                 挿入します。
       .lt +-N    タ イトルの長さです (デフォルトの単位指定子は m
                 です)。
       .mc       マージンの文字を無効にします。
       .mc c     それぞれのテキスト行の後と右側マージンの間に文字
                 c を出力します。
       .mc c N    マージン文字を c に、右側マージンからの距離を N
                 に設定します (デフォルトの単位指定子は m です)。
       .mk register
                 現在の垂直位置を register にマークします。
       .mso file リクエスト .so と同じですが、tmac ディレクトリに
                 ある file が検索される点が違います。
       .na       出力行の位置揃えを行いません。
       .ne       1 行分の行送りが必要です。
       .ne N     N 行分の行送りが必要です (デフォルトの単位指定子
                 は v です)。
       .nf       出力行に行詰めや位置揃えを行いません。
       .nh       ハイフネーションをしません。
       .nm       行番号モードを無効にします。
       .nm +-N M S I
                 行番号モードの、行番号、行番号出力間隔、空白、イ
                 ンデントを設定します。
       .nn       次の行に行番号をつけません。
       .nn N     次の N 行に行番号をつけません。
       .nop anything
                 anything を常に実行します。
       .nr register +-N M
                 レジスタの値を、インクリメント値 M+-N  に 設
                 定・変更します。
       .nroff    組み込み条件式 n を真に、 t を偽にします。
       .ns       空白なしモードにします。
       .nx filename
                 次のファイルを表します。
       .open stream filename
                 ファイル filename を書き込みモードでオープンし、
                 名前 stream を持つストリームに関連づけます。
       .opena stream filename
                 リクエスト .open と同じですが、追加モードで ファ
                 イルをオープンします。
       .os        リ ク エスト .sv で指定された行送り量を出力しま
       .pn +-N   次のページ番号を N に設定します。
       .pnr      現在定義されている数値レジスタの名前と内容を標準
                 エラー出力に出力します。
       .po       ページオフセットを直前の値に戻します。現在のペー
                 ジオフセットはレジスタ .o に格納されています。
       .po +-N   ページオフセットを N に設定します。
       .ps       ポイントサイズを直前の値に戻します。
       .ps +-N   ポイントサイズを指定します。エスケープシーケンス
                 \s[+-N] と同じです。
       .psbb filename
                 PostScript 画像 filename のための矩形領域を取 得
                 します。
       .pso command
                 リクエスト .so と同様ですが、 command の標準出力
                 から入力します。
       .ptr      すべてのトラップの名前と位置を標準エラー出力に出
                 力 し ます (入力行のトラップとディバージョンのト
                 ラップは含まれません)。
       .rchar c1 c2...
                 文字定義 c1, c2, ... を削除します。
       .rd prompt
                 挿入を読み込みます。
       .return   マクロから戻ります。
       .rj n     次の n 行の入力行を右寄せします。
       .rm name  name で指定されたリクエスト、マクロ、文字列を 削
                 除します。
       .rn old new
                 old で指定されたリクエスト、マクロ、文字列の名前
                 を new に変更します。
       .rnn reg1 reg2
                 レジスタ名 reg1reg2 に変更します。
       .rr register
                 レジスタ register を削除します。
       .rs       空白をもとに戻します。つまり空白なしモードを無効
                 にします。
       .rt +-N    マ ークしておいた垂直位置まで戻します (上方向の
                 み)。 (デフォルトの単位指定子は v です)。
       .shc      ソフトハイフン文字を \(hy に戻します。
       .shc c    ソフトハイフン文字を c に設定します。
       .shift n  マクロにおいて、引き数を位置 n にシフトします。
       .so filename
                 ソースファイルをインクルードします。
       .sp       1 行スキップします。
       .sp N     N の行送りを挿入します。 N の符号によって上下 方
                 向 が 決 まります (デフォルトの単位指定子は v で
                 す)。
       .special s1 s2 ...
                 フォント s1, s2, などを特別とします。現在の フォ
                 ントにない文字をこれらから検索します。
       .ss N     空白文字のサイズを N/12 に設定します。単位は現在
                 のフォントの空白幅です。
       .ss N M   空白文字のサイズを N/12 に、文の空白 サ イ ズ を
                 位指定子は m です)。
       .ta n1 n2 ... nn T r1 r2 ... rn
                 位置 n1, n2, ... , nn のタブ位 置 を そ れ ぞ れ
                 nn+r1,  nn+r2,  ...   nn+rn に、さらにそれ以降を
                 nn+rn+r1, nn+rn+r2, ...  nn+rn+rn のように設定し
                 ます。
       .tc       タブ繰り返し文字を削除します。
       .tc c     タブ繰り返し文字を c に設定します。
       .ti +-N   次の行を一時的にインデントします (デフォルトの単
                 位指定子は m です)。
       .tkf font s1 n1 s2 n2
                 フォント font のトラックカーニングを有効に し ま
                 す。
       .tl 'left'center'right'
                 3 つの部位をもつタイトルです。
       .tm anything
                 anything   を端末 (UNIX の標準的なメッセージ出力
                 先) に出力します。
       .tm1 anything
                 anything を端末 (UNIX の標準的なメッセージ 出 力
                 先)   に 出力します。その際、 anything" で始
                 まっている場合は、先頭をホワイトスペースで始める
                 ことができます ( " 自体は取り除かれます)。
       .tmc anything
                 .tm1 と似ていますが、末尾の改行を出力しません。
       .tr abcd....
                 出力で ab に、 cd のように変換します。
       .trf filename
                 ファイル filename の内容をそのまま出力します。
       .trnt abcd....
                 リ クエスト .tr と同じですが、 \! によってディバ
                 ージョンへと出力されるテキストは変換されません。
       .troff    組み込み条件式 t を真に、 n を偽に設定します。
       .uf font  アンダーラインフォントセットを font に設定します
                 (リクエスト .ul で切り替わります)。
       .ul N     入力行を N 行、アンダーライン付きにします (troff
                 では イタリック体になります)。
       .unformat diversion
                 diversion 内のフォント情報を保存しつつ、空白文字
                 およびタブ文字をアンフォーマットします。
       .vpt n    n が 0 でなければ垂直位置のトラップを有効にし ま
                 す。 0 ならば無効にします。
       .vs       行送り幅を直前の値に戻します。
       .vs N      行送りの基準線間隔を N に設定します。デフォルト
                 値は 12p です。
       .warn n   警告コードを n に設定します。
       .wh N trap
                 位置によるトラップを設定します。負の値の場合はペ
                 ージ末尾からになります。
       .while cond anything
                 条件式 cond が真ならば anything を入力として受理
                 します。

               |     grap      |    .G1     |    .G2     |
               |     grn       |    .GS     |    .GE     |
               |     pic       |    .PS     |    .PE     |
               |    refer      |    .R1     |    .R2     |
               |    soelim     |    なし    |    なし    |
               |     tbl       |    .TS     |    .TE     |
               +---------------+------------+------------+


エスケープシーケンス

       エ ス ケープシーケンスは、行中の要素であり、通常はバックス
       ラッシュ `\' とそれに続けてエスケープ名をつける形で導入 さ
       れます。場合によっては必要な引数をつけることもあります。入
       力処理は、エスケープ文字あるいはその引数の直後から再開され
       ま す。 引数には区切り文字がはさまっているわけではありませ
       ん。そのため、エスケープ名や引数の終わりを決定する方法が必
       要です。

       これは、名前 (エスケープ名、および変数名からなる引数) を角
       括弧 \[name] で囲い、定数引数 (数式および文字) をアポス ト
       ロフィ (ASCII 0x27) で 'constant' のように囲うことによって
       実現します。

       エスケープ名には短い名前の省略形があります。 2 文字のエ ス
       ケープ名は開き括弧で \(xy のように指定され、閉じ括弧は必要
       ありません。そして、特殊文字である `[' と `(' 以外の 1  文
       字の名前はすべて \c のようにマーカなしで指定することができ
       ます。

       長さ 1 の定数の引数もアポストロフィのマーカを省略できま す
       が、 2 文字の名前のときには省略できません。

       1 文字のエスケープシーケンスは主に行中での関数とシステムに
       関連したタスク用に使われるのに対して、 \( が続いた 2 文 字
       の名前は roff システムで定義済みの特殊文字用に使われます。
       2 文字より多い文字を持った名前 \[name] は、ほとんどユー ザ
       定義の文字を表しています ( リクエスト .char を参照してくだ
       さい)。

   1 B>文B>字B>のB>エB>スB>ケB>ーB>プB>シB>ーB>ケB>ンB>ス
       \"     コメントの開始です。行末までのものすべてが無視さ れ
              ます。
       \#      次 の 改行文字までのものすべてが無視されます。これ
              は、コピーモードで解釈されます。 \" と似て い ま す
              が、終端となる改行を無視する点が異なります。
       \*s    1 文字の名前 s を持った文字列変数に格納される文字列
              です。
       \*(st  2 文字の名前 st を持った文字列変数に格納される文 字
              列です。
       \*[stringvar]
              任意の長さの名前 stringvar を持った文字列変数に格納
              される文字列です。
       \$0    現在のマクロが呼び出されている名前。リクエスト .als
              です。表示可能なバックスラッシュには、 \e を使用 し
              てください。
       \'     揚音アクセント符号 ' 。 \(aa と同じです。エスケープ
              なし: アポストロフィ、右クォーテーション記号、シ ン
              グルクォート (ASCII 0x27)。
       \`     抑音アクセント符号 ` 。 \(ga と同じです。エスケープ
              なし: 左クォート、バッククォート (ASCII 0x60)。
       \-     現在のフォントでの - 符号。
       \.     解釈されないドット (ピリオド)。行頭にあってもそうな
              ります。
       \%     デフォルトでのオプションのハイフン文字。
       \!     透過行指定子。
       \?anything?
              ディ バージョンにおいて、そのまま anything を組み込
              みます。コピーモードで anything は読み込まれま す。
              エ スケープシーケンス \! および \? も参照してくださ
              い。
       \space 連結されない空白の大きさを持った空白文字 (改行も さ
              れません)。
       \0     数字の幅。
       \|     1/6 em の狭い空白文字。nroff では幅 0 です。
       \^     1/12 em やや狭い空白文字。nroff では幅 0 です。
       \&     表示されない、幅 0 の文字。
       \)     \&   と 同 様 で すが、文の終わりを認識する目的で、
              cflags リクエストを用いて透過になるように宣言された
              文字のように振る舞うという点で異なります。
       \/      次の文字がローマン体であるときには、それの前の文字
              の幅を増やして次の文字との間の余白が修正されるよ う
              にします。
       \,      前の文字がローマン体であるときには、次の文字の余白
              を変更して前の文字との間の余白が修正されるように し
              ます。
       \~      改行されない空白。行を調整するとき、通常の単語間の
              空白のように引き延ばされます。
       \:     幅 0 のブレークポイント ( \% と似ていますが、ソフト
              ハイフン文字は使いません)。
       \newline
              無視される改行。行を連続させるときのためです。
       \{     条件入力の開始。
       \}     条件入力の終了。
       \(st   2 文字の名前を持った特殊文字。セクション B>特B>殊B>文B>字を
              参照してください。
       \[name]
              任意の長さの名前 name を持った文字
       \a     解釈されないリーダ文字。
       \A'anything'
              anything が文字列、マクロ、ディバージョン、レ ジ ス
              タ、 環境、あるいはフォント名として受け付けられるも
              のの場合、 1 に展開します。そうでない場合 0 にな り
              ます。
       \b'abc...'
              角括弧を作る関数。

       \e     現在のエスケープ文字の表示できるバージョン。
       \E      エスケープ文字と等価ですが、コピーモードでは評価さ
              れません。
       \fF    1 文字の名前もしくは 1 個の数字 F を持つフォント に
              変更します。
       \f(fo  2 文字の名前もしくは 2 個の数字 fo を持つフォントに
              変更します。
       \f[font]
              任意の長さの名前もしくは数式 font で表されるフォ ン
              トに変更します。
       \g[reg]
              リ クエスト .af に適した、名前 reg を持ったレジスタ
              のフォーマットを返します。別の形式として \g(xy およ
              び \gx があります。
       \h'N'  局所的な水平移動。右側へ N だけ移動します (負の値の
              ときは左側へ移動します)。
       \H'N'  現在のフォントの高さを N に設定します。
       \k[reg]
              任意の長さの名前 reg を持つレジスタ中の水平入力位置
              をマークします。別の形式では \k(xy\kx です。
       \l'Nc' 水平線描画関数 (文字 c を用いることも可能です)。
       \L'Nc' 垂直描画関数 (文字 c を用いることも可能です)。
       \nr    1 文字の名前 r を持つレジスタ変数に格納されている数
              値。
       \n(re  2 文字の名前 re を持つレジスタ変数に格納されてい る
              数値。
       \n[reg]
              任意の長さの名前 reg を持つレジスタ変数に格納されて
              いる数値。
       \N'n'  現在のフォントで、コード n で指定された文字を出力し
              ま す。 特 殊 フォ ントは検索されません。リクエスト
              .char を用いて文字にフォントを追加するときに便利 で
              す。
       \o'abc...'
              文字 a, b, c, などを 2 度打ちします。
       \p     改行のあと出力行を展開します。
       \r     垂直方向に 1 em 逆戻りします (nroff では 1 行逆戻り
              します)。
       \R'name +-n'
              リクエスト .nr name +-n と同じです。
       \s[+-N]
              ポイントサイズを N スケールポイントに設定します。別
              の 書 式 として \s+-[N], \s'+-N', \s+-'N', \s(+-xy,
              \s+-(xy, \s+-x が使えることに注意してください。これ
              は、リクエスト .ps と同じです。
       \S'N'  出力を N 度傾けます。
       \t     解釈されない水平タブ。
       \u     垂直方向に 1/2 em 逆戻りします (nroff では 1/2 行逆
              戻りします)。
       \v'N'  局所的な垂直移動。 N だけ下がります (負の値のときは
              上がります)。
       \V[env]
              anything   を出力し、水平・垂直位置を元に戻します。
              anything にはタブや先頭文字は含まれません。

       エスケープシーケンス \e, \., \", \$, \*, \a, \n,  \t,  \g,
       および \newline はコピーモードで解釈されます。

       \( あるいは \[ で始まるエスケープシーケンスは 1 文字のエス
       ケープシーケンスを表してはいませんが、2 つ以上の文字を持っ
       たエスケープ名の開始を示します。

       バックスラッシュの後に定義済みのエスケープシーケンスを形成
       しない文字が続く場合は、バックスラッシュは黙って無視され、
       文字そのものがマップされます。

   B>特B>殊B>文B>字
       よく使われる特殊文字は文字 xy を用いた \(xy の形式のエ
       スケープシーケンスであらかじめ定義されています。特殊文字の
       中には通常のフォントに含まれているものも一部ありますが、ほ
       とんどは特殊フォントでしか利用できません。最も重要なグリフ
       を 抜 き 出 し た も の を 次 に示します。完全なリストは、
       groff_char(7) にあります。

              \(bu   o      中黒.
              \(co   (C)    著作権記号.
              \(ct   c      セント記号 (通貨).
              \(dd   =      2 重ダガー.
              \(de   o      度記号.
              \(dg   -      ダガー.
              \(em   --     全角ダッシュ.
              \(hy   -      ハイフン.
              \(rg   (R)    登録記号.
              \(sc   S      セクション記号.
              \(ul   _      アンダーライン文字.
              \(==   ==     等号.
              \(>=   >=     以上.
              \(<=   <=     以下.
              \(!=   !=     不等号.
              \(->   ->     右矢印.
              \(<-   <-     左矢印.
              \(+-   +-     プラスマイナス記号.


レジスタ

       レジスタは値を格納する変数です。 groff では、ほとんどの レ
       ジ スタは数値を格納しますが (前述セクション B>数B>式を参照して
       ください)、なかには文字列値を保持できるものもあります。

       各レジスタには名前が与えられています。任意のレジスタを定義
       でき、リクエスト .nr register で定義・設定できます。

       レジスタに格納された値は、エスケープシーケンス \n を用いて
       取り出すことができます。

       \n[.A]     オプション -A が使用されているときに troff に 1
                 を設定します。 ntoff では常に 1 です。
       \n[.c]    現在の入力行番号
       \n[.C]    互換モードが有効になっている場合は 1 で、そう で
                 ない場合 0 です。
       \n[.cdp]  現在の環境に追加された最後の文字の深さ。最後の文
                 字が基準線から下に突き出ている場合に正にな り ま
                 す。
       \n[.ce]    リクエスト .ce で設定された中央寄せされる行の残
                 数。
       \n[.cht]  現在の環境に追加された最後の文字の高さ。基準線よ
                 りも上に文字が突き出ている場合に正になります。
       \n[.csk]  現在の環境に追加された最後の文字の傾き。文字の傾
                 きとは、文字の上についたアクセント記号が文字の中
                 央 か らどれだけ右に離れて置かれるかということで
                 す。
       \n[.d]    現在のディバージョンでの垂直方向の位置です。レジ
                 スタ nl と同じです。
       \n[.ev]    現 在の環境の名前もしくは番号です (文字列の値で
                 す)。
       \n[.f]    現在のフォント番号です。
       \n[.fam]  現在のフォントファミリです (文字列の値です)。
       \n[.fp]   次に空いているフォント位置番号。
       \n[.g]    GNU troff では常に 1 です。マクロ中で groff で動
                 作しているかどうかをテストする場合、このレジスタ
                 を使用する必要があります。
       \n[.h]    現在のページあるいはディバージョンでのテキスト基
                 準線の最高点です。
       \n[.H]    利用可能な水平方向の解像度 (基本単位です)。
       \n[.hla]  リクエスト .hla で設定された現在のハイフネーショ
                 ン言語。
       \n[.hlc]  直前で連続したハイフネーション行数。
       \n[.hlm]  連続したハイフネーション行数の許される最大値。こ
                 れは、リクエスト .hlm で設定されます。
       \n[.hy]   現在のハイフネーションフラグ ( リクエスト .hy で
                 設定されます)。
       \n[.hym]  現在のハイフネーションのマージン ( リク エ ス ト
                 .hym で設定されます)。
       \n[.hys]   現在のハイフネーション間隔 ( リクエスト .hys で
                 設定されます)。
       \n[.i]    現在のインデント。
       \n[.in]   現在の出力行に対して適用されるインデント。
       \n[.int]  最後に出力した行に \c が含まれていれば正です。
       \n[.kern] pairwise kerning が有効になっている場合 1 で、無
                 効になっていれば 0 です。
       \n[.l]    現在行の長さです。
       \n[.lg]    現 在の合字モード ( リクエスト .lg で設定されま
                 す)。
       \n[.linetabs]
                 現在の行タブモード ( .linetabs リクエストに よっ
                 て設定されます)。
       \n[.ll]   現在の出力行に対して適用される行の長さ。
       \n[.psr]  最後に要求された、スケールポイントで表したポイン
                 トサイズ。
       \n[.rj]   リクエスト rj によって設定された右寄せされる行の
                 数。
       \n[.s]    10 進小数での現在のポイントサイズ。
       \n[.sr]   10  進小数での最後に要求されたポイントサイズ (文
                 字列値)。
       \n[.t]    次のトラップまでの距離。
       \n[.T]    オプション -T が使われている場合 1 に設定され ま
                 す。
       \n[.tabs]  現在のタブ設定の文字列表現。リクエスト .ta に対
                 する引数として使用するのに適しています。
       \n[.trunc]
                 最近の垂直位置トラップによって切り詰められた垂直
                 ス ペースの量。リクエスト .ne によるトラップが引
                 き起こされた場合は、そのリクエストによって生じた
                 垂直移動量をさらにマイナスした値になります。別の
                 言い方をすれば、トラップが発生した時点で の、 ト
                 ラップが起きなかった場合の垂直位置と現在の垂直位
                 置との差を表しています。リクエスト .ne と一緒 に
                 使用すると便利です。
       \n[.ss]   リクエスト .ss の第 1 引数によって設定されたパラ
                 メータの値。
       \n[.sss]  リクエスト .ss の第 2 引数によって設定されたパラ
                 メータの値。
       \n[.u]     行 連結モードのときは 1 で、そうでなければ 0 で
                 す。
       \n[.v]    現在の垂直方向の行送り量。
       \n[.V]    利用可能な垂直方向の解像度 (基本単位です)。
       \n[.vpt]  垂直位置トラップが有効なら 1 で、無効なら 0   で
                 す。
       \n[.w]    直前の文字の幅。
       \n[.warn] 現在有効になっている警告の番号コードの和。
       \n[.x]    メジャーバージョン番号。
       \n[.y]    マイナバージョン番号。
       \n[.Y]    groff のリビジョン番号。
       \n[.z]    現在のディバージョン名。

   B>書B>きB>込B>みB>可B>能B>なB>レB>ジB>スB>タ
       次のレジスタは、ユーザによって読み書き可能です。定義済みの
       デフォルト値を持っていますが、ドキュメントをカスタマイズす
       るために変更できます。

       \n[%]     現在のページ番号。
       \n[c.]    現在の入力行番号。
       \n[ct]    文字の種類 (幅関数 \w で指定されます)。
       \n[dl]    最後に行われたディバージョンの最大幅。
       \n[dw]    現在の曜日 (1-7)。
       \n[dy]    現在の日 (1-31)。
       \n[hp]    現在の入力行における水平位置。
       \n[llx]    与えられた PostScript 画像 ( .psbb で設定されま
                 す) の左下 x 座標 (PostScript 単位)。
                 0 よりも大きければ、入力スタック上のオブジェクト
                 の最大数。 0 以下であれば、制限はありません。 つ
                 まり、仮想メモリを使い果たすまで再帰呼び出しし続
                 けることができます。
       \n[ssc]   添字の直前にある文字に追加すべき水平方向の空白量
                 (幅関数 \w で生成されます) (負の値になる可能性も
                 あります)。
       \n[st]    文字列の、基準線の上の高さ (幅関数 \w で生成され
                 ます)。
       \n[systat]
                 最後の .sy リクエストによって実行された system()
                 関数の戻り値。
       \n[urx]   与えられた PostScript 画像 ( .psbb で設定され ま
                 す) の右上 x 座標 (PostScript 単位)。
       \n[ury]    与えられた PostScript 画像 ( .psbb で設定されま
                 す) の右上 y 座標 (PostScript 単位)。
       \n[year]  現在の年 (2000 年問題対応です)。
       \n[yr]    現在の年から 1900 を引いたものです。2000 年問 題
                 対応にするにはレジスタ year を代わりに使用してく
                 ださい。


警告

       groff が生成する警告は各々名前およびコード番号で識別されま
       す。 コードは 2 の累乗になっていて、1 つの整数の上にビット
       エンコードできるようになっています。名前も警告のグループを
       参照するのに使用できます。

       警告と関連のある名前は、 -w および -W オプションで使用され
       ます。コード番号はリクエスト .warn および \n[warn] レジ ス
       タで使用されます。

       all         group
                   di,  mac および reg を除いたすべての警告です。
                   伝統的なマクロパッケージでの警告をすべて網羅し
                   ています。
       break       4
                   行連結モード時に、1 行の長さよりも短くなるよう
                   に行を分割できませんでした。デフォルトでは有効
                   です。
       char        1
                   存在しない文字です。デフォルトでは有効です。
       delim       8
                   閉じ区切り記号がないか、もしくは対応が取れませ
                   ん。
       di          256
                   現在ディバージョンが存在しないのに引数な し で
                   .di あるいは .da を使っています。
       el          16
                   対応するリクエスト .ie が存在しないのに .el リ
                   クエストを使っています。
       escape      32768
                   認識されないエスケープシーケンスです。そのため

       missing     8192
                   オプションではない引数が指定されていないリクエ
                   ストです。
       input       16384
                   不正な入力文字です。
       number      2
                   不正な数式です。デフォルトでは有効です。
       range       64
                   引数が範囲外です。
       reg         1024
                   定義されていない番号レジスタを使っています。自
                   動的に値 0 をもつレジスタとして扱われます。 通
                   常は、名前ごとに 1 つしか警告は出ません。
       right-brace 4096
                   数字を指定すべき場所で \} が使われました。
       scale       32
                   意味のない単位指定子です。
       space       65536
                   リクエストあるいはマクロとその引数との間に空白
                   がありません。そのため、自動的にマクロは定義さ
                   れません。デフォルトでは有効です。この警告は互
                   換モードでは絶対に発生しません。
       syntax      128
                   数式中の構文が曖昧です。
       tab         2048
                   タブ文字の使い方が適切ではありません (クォート
                   されていないマクロ引数中や数字を指定すべきとこ
                   ろにタブ文字がある)。
       w           group
                   すべての警告です。

       +----------------+----------------------+-----------------+
       Bit  Code  警告  |Bit Code     警告     |Bit  Code  警告  |
       +----------------+----------------------+-----------------+
       | 0     1  char  |  8   256     di      | 16  65536 space |
       | 1     2 number |  9   512     mac     | 17 131072 font  |
       | 2     4 break  | 10  1024     reg     | 18 262144  ig   |
       | 3     8 delim  | 11  2048     tab     |                 |
       | 4    16   el   | 12  4096 right-brace |                 |
       | 5    32 scale  | 13  8192   missing   |                 |
       | 6    64 range  | 14 16384    input    |                 |
       | 7   128 syntax | 15 32768   escape    |                 |
       +----------------+----------------------+-----------------+


互換性

       groff は、古典的な troff 用に書かれた roff コード や 他 の
       roff 実装用の roff コードを同じ方法で処理できるようにする
       B>互B>換B>モB>ーB>ドを提供します。

       互換モードはコマンドラインオプション -C を用いて有効 に で
       き、  .cp で有効にしたり無効にしたりできます。番号レジスタ
       \n(.C は、互換モードが有効であるとき 1 で、無効であると き
       解釈します。しかし、 GNU 独自の モードでは通常これを長い名
       前の始まりとして解釈してしまいます。

       互換性 モードでは、 groff はこれらを古典的な方法で解釈する
       ようになりますが、長い名前は認識されません。

       こ れ に対して、 GNU 独自モードでの groff は、文字列やマク
       ロ、変換、番号レジスタ、フォントあるいは環境名にエスケープ
       シ ー ケンス \e, \|, \^, \&, \}, \{, \ (スペース), \', \`,
       \-, \_, \!, \%, \c を使うことはできません。これに対して 古
       典 的な troff ではこれらのエスケープシーケンスを使えます。
       エスケープシーケンス \A は、名前の中でこれらのエスケープシ
       ーケンスを使わないようにするとき役に立ちます。

       小 数のポイントサイズは、顕著な非互換性を生み出します。 古
       典的な troff では、 .ps リクエストは単位指定子を無視します
       ので、

              .ps 10u

       とするとポイントサイズを 10 ポイントに設定します。これに対
       して groff 独自のモードでは、ポイントサイズはスケールポ イ
       ントで 10 ポイントに設定します。

       groff モードでは、整形されていない入力と整形された出力文字
       との間に基本的な違いがあります。出力文字がどのように出力さ
       れるかに影響を与えるものは、すべてその文字と一緒に格納され
       ます。一度出力文字が作られれば、その後でどのようなリクエス
       ト が 実 行 されても出力文字は影響を受けません。 .bd, .cs,
       .tkf, .tr, .fp のいずれのリクエストでも同様です。

       通常、出力文字は、入力文字を現在の出力行に追加する直前に作
       られます。マクロ、ディバージョン、文字列は、実はすべて同じ
       オブジェクトタイプです。これらは、どのような組み合わせでも
       入力文字のリストならびに出力文字のリストを持っています。

       マクロを処理する目的では、出力文字は入力文字と同じような振
       る舞いはしません。出力文字は、自分の構築元となった入力文字
       ならば持っていたであろう特別な属性を一切引き継ぎません。次
       の例は、これらのことをもっと明解に示しています。

              .di x
              \\\\
              .br
              .di
              .x

       GNU モードでは、これは \\ として表示されます。つまり、入力
       さ れたバックスラッシュの対 `\\' はそれぞれ 1 つのバックス
       ラッシュ `\' に変換されます。そして、結果として出力され る
       バックスラッシュは、再度読み込まれるときにはエスケープ文字
       としては解釈されません。
       できます。


バグ

       現在、groff システムのドキュメントは変更・刷新途上にありま
       す。それぞれのマニュアルには小さな不一致がある可能性があり
       ます。

       B>警B>告セクションは troff(1) に属しています。


作者

       このドキュメントは groff、すなわち GNU roff 配布物の一部で
       す。 Bernd Warken <bwarken@mayn.de> が書きました。

       このドキュメントは、FDL (GNU Free  Documentation  License)
       バ ージョン 1.1 以降の条項のもとに配布されています。システ
       ムに FDL のコピーがあるはずですし、オンライン

              http://www.gnu.org/copyleft/fdl.html

       でも入手できます。

       もともと、groff 言語拡張については troff(1) マニュアルペー
       ジ で管理されていました。このドキュメントは groff 言語拡張
       の不可欠な部分を含んではいますが、詳しい 説 明 に つ い て
       は、groff info ファイルの中にあります。


関連項目

       groff 言語の主な情報源は groff info(1) ファイルです。

       roff および groff システムを調べたり、さらなるドキュメント
       へのポインタを得るには、 roff(7) を参照してください。

       フォーマッタプログラムについては groff(1) および  troff(1)
       で説明されており、前もって定義されているグリフ名のすべては
       groff_char(7) で説明されています。

       古くからある troff のドキュメントはオンライン

              http://cm.bell-labs.com/cm/cs/cstr.html
       および
              http://www.kohala.com/start/troff/
       にあります。



Groff Version 1.17.2      6 August 2001                  GROFF(7)

ABELNET VPSサービス