GROFF(1)

名称
groff - groff ドキュメントフォーマットシステムのフロントエンド

書式
[file | | [option

コマンドラインは、GNU の慣習にしたがって解析されます。 コマンドラインオプションとその引数との間の空白は、省略可能です。 オプションは、1 つの (マイナス符号) の後にまとめて記述して構いません。 ファイル名として (マイナス符号) を指定した場合、標準入力を表します。

解説
この文書は、 groff ドキュメントフォーマットシステムの主要フロントエンドプログラムである groff プログラムについて記述してあります。 groff プログラムとマクロスイートは、フリーソフトウェアコレクション に含まれる、 roff(7) システムの実装です。 groff システムは、古典的な roff の持つすべての特徴を持ち、さらに多くの拡張が追加されています。

groff プログラムによって、 groff システム全体をコマンドラインオプションで制御することができます。 これは、(パイプのみを使用していた) 古典的なものに比べ、 とても単純化したものとなっています。

オプション
groff は troff へのラッパプログラムなので、 両方のプログラムはオプションの集合を共有します。 しかし groff プログラムには、いくつかネイティブオプションが追加されており、 またいくつかの troff オプションには新しい意味が与えられています。 また逆に、 troff オプションのすべてが groff へ与えられるわけではありません、

  ネイティブ groff オプション
以下のオプションは、 troff には存在しないか、 groff によって異なった解釈をされるものです。 eqn を使って前処理を行います。 grn を使って前処理を行います。 grap を使って前処理を行います。 ヘルプメッセージを表示します。 soelim(1) で使用される検索ディレクトリを追加します。 このオプションは オプションを暗黙的に指定します。 印刷のために、出力をスプーラプログラムに送ります。 これに使われるコマンドは、デバイス記述ファイルの print コマンドによって指定されます。 デバイス記述ファイルについては、 groff_font(5) を参照して下さい。 このコマンドが存在しない場合、デフォルトで出力は lpr(1) プログラムへパイプされます。 オプション と を参照してください。 arg をスプーラプログラムへ渡します。 複数の引数は、それぞれ別の オプションで渡す必要があります。 groff は、引数をスプーラプログラムに渡す際に、 arg の前に (マイナス符号) をつけたりしないことに注意してください。 eqn の区切り文字間に改行が入ることを禁止します。 これは eqn の オプションと同様です。 pic を使って前処理を行います。 後処理プログラムへ -option もしくは -option arg を渡します。 オプションには、必要なマイナス符号 や を前につけて指定しなければなりません。 というのも、groff は、いかなるダッシュも前につけて 後処理プログラムに渡したりしないからです。 例えば、gxditview 後処理プログラムにタイトルを渡す場合、 シェルコマンド

    は

    と同等です。 refer を使って前処理を行います。 refer に引数を渡す仕組みは提供されていません。 というのも、ほとんどの refer オプションには、文書中で指定できる等価な言語要素があるからです。 詳細は refer(1) を参照してください。 soelim を使って前処理を行います。 より安全なモード。 オプションを pic に渡し、次の troff リクエストを無効化します: .open, .opena, .pso, .sy, .pi 。 セキュリティ上の理由から、安全なモードはデフォルトで有効です。 tbl を使って前処理を行います。 出力デバイスを dev に設定します。 troff とは違い、 groff は troff の中間出力を最終フォーマットに変換するために後処理プログラムを呼び出します。 groff の実デバイスは次の通りです。

        dvi TeX DVI フォーマット (後処理プログラムは grodvi です)。

        html
            HTML 出力 (前処理プログラムは soelim と pre-grohtml で、後処理プログラムは post-grohtml です)。

        lbp Canon CAPSL プリンタ (LBP-4 と LBP-8 のシリーズのレーザプリンタ。 後処理プログラムは grolbp です)。

        lj4 HP LaserJet4 互換 (または他の PCL5 互換) プリンタ (後処理プログラムは grolj4 です)。

        ps  PostScript 出力 (後処理プログラムは grops です)。

    下記の TTY 出力デバイス (後処理プログラムは常に grotty です) に対しては、 が出力エンコードを選択します:

        ascii
            7 ビット ASCII。

        cp1047
            EBCDIC ホスト用の Latin-1 文字集合。

        latin1
            ISO 8859-1。

        utf8
            UTF-8 エンコードの Unicode 文字集合。

    下記の引数は gxditview を `後処理プログラム' として選択します (これはどちらかというと閲覧プログラムですが):

        X75 75dpi 解像度の 10pt 文書ベースフォント。

        X75-12
            75dpi 解像度の 12pt 文書ベースフォント。

        X100
            100dpi 解像度の 10pt 文書ベースフォント。

        X100-12
            100dpi 解像度の 12pt 文書ベースフォント。

    デフォルトのデバイスは ps です。 安全でないモード。 (古い) 安全でない動作に戻します。 オプションを参照してください。 groff と、groff から起動されるすべてのプログラムのバージョン情報を出力します。 つまり、指定されたコマンドラインは通常どおりに解析され、 すべてのサブプログラムに を渡します。 実行せずに、(ラッパプログラムとしての) groff によって実行されるパイプラインを出力します。 通常の後処理プログラムの代りに、 gxditview を起動して文書をプレビューします。 オプション と で指定されたプリンタスプーラの動作は、 gxditview(1) の -printCommand オプションへの引数によって gxditview(1) へと渡されます。 これによって、デフォルトの Print アクションと対応するメニューエントリとが、 その値へと設定されます。 は、 が指定された時のみ、よい結果を生成します。 の出力をプレビューする時のデフォルト解像度は 75dpi です。 これは、 オプションを gxditview に渡すことで変更可能です。 例えば以下のようにします。

    troff からの出力を捨てます。 エラーメッセージのみが表示されます。 通常 groff から自動的に呼ばれる troff の出力を、後処理しません。 これによって中間出力は標準出力へと書き出されます。 groff_out(5) を参照してください。

  透過オプション
以下のオプションは、groff から引き続いて呼ばれるフォーマットプログラム troff へと、透過的に引き継がれます。 これらのオプションの詳しいことは、 troff(1) で説明されています。 ASCII 文字のみの近似的な出力を行います。 エラーや警告をバックトレースします。 カラー出力を無効にします。 互換モードを有効にします。 文字列を定義します。 troff のエラーメッセージを無効にします。 デフォルトのフォントファミリを設定します。 フォントファイルと DESC ファイルへのパスを設定します。 指定された入力ファイルの後に、標準入力を処理します。 マクロファイル name.tmac (もしくは tmac.name) を取り込みます。 groff_tmac(5) も参照してください。 マクロファイルへのパスです。 最初のページを num とします。 list 中のページのみ出力します。 数値レジスタを設定します。 警告 name を有効にします。 警告 name を無効にします。

GROFF の使用法
groff システムは、古典的な roff のインフラストラクチャを実装しています。 一般的に roff システムがどのように動作しているかを調べるには、 roff(7) を参照してください。 groff システムにはフロントエンドプログラムが備わっているために、 groff の使用は、 古典的な roff に比べてとても容易となっています。 この節では、groff システムの構成部分について概観します。 これは、groff に特化した機能とともに roff(7) を補完するものです。 この節は、groff システムまわりの文書へのガイドと見ることもできます。

  フロントエンド
groff プログラムは、 troff(1) プログラムを包むラッパです。 これによって、コマンドラインオプションからプリプロセッサを 指定することができ、また指定されたデバイスに適した 後処理プログラムを自動的に実行することができます。 このようにすることで、たまに長々となる古典的な roff(7) のパイプ機構を避けることができます。

grog(1) プログラムは、ファイルをフォーマットするための適切な groff のコマンドラインを推測するのに使われます。

groffer(1) プログラムは、groff ファイルや man page 用の オールラウンドのビュアです。

  プリプロセッサ
groff のプリプロセッサは、古典的なプリプロセッサに適度な拡張を施して 再実装したものです。 groff パッケージで配布されているプリプロセッサは以下です:

eqn(1)
    は、数学の式用。

grn(1)
    は、 gremlin(1) 図の取り込み用。

pic(1)
    は、作図用。

refer(1)
    は、参考文献目録用。

soelim(1)
    は、標準位置からのマクロファイル取り込み用。

tbl(1)
    は、表作成用。

これらの他にも、いくつかの内部的なプリプロセッサがあり、 いくつかのデバイスに対して自動的に実行されます。 これらは、ユーザからは認識できません。

  マクロパッケージ
オプション によって、マクロパッケージを取り込めます。 groff システムでは、古典的なすべてのマクロパッケージを 互換性を保った形で拡張して実装し、さらにいくつかの独自のパッケージを 追加しています。 実際には、以下のマクロパッケージが groff に付属しています:

man 伝統的な man page 形式。 groff_man(7) を参照してください。 これは、コマンドラインから もしくは man のように指定できます。

mandoc
    man page 用の一般的なパッケージです。 文書に man 形式か mdoc 形式が使用されているかどうかは自動的に見分けられ、 対応するマクロパッケージに分岐します。 これは、コマンドラインから もしくは mandoc のように指定できます。

mdoc
    BSD スタイルの man page 形式です。 groff_mdoc(7) を参照してください。 これは、コマンドラインから もしくは mdoc のように指定できます。

me  古典的な me 文書形式です。 groff_me(7) を参照してください。 これは、コマンドラインから もしくは me のように指定できます。

mm  古典的な mm 文書形式です。 groff_mm(7) を参照してください。 これは、コマンドラインから もしくは mm のように指定できます。

ms  古典的な ms 文書形式です。 groff_ms(7) を参照してください。 これは、コマンドラインから もしくは ms のように指定できます。

www 任意の groff 文書に含めるための HTML に似たマクロです。 groff_www(7) を参照してください。

マクロファイルの命名やそれらの場所についての詳細は、 groff_tmac(5) に書かれています。

  プログラミング言語
すべての roff プログラミング言語に共通する一般的な概念は、 roff(7) に記述があります。

古典的な troff 言語に対する groff 拡張については、 groff_diff(7) に文書化されています。

groff 言語の全体は、(未だ不完全ですが) groff info ファイル に記述されています。 簡潔な (しかし完全な) リファレンスは、 groff(7) に書かれています。

  フォーマッタ
groff システムに含まれている中心的な roff フォーマッタは、 troff(1) です。 これは、古典的な troff と nroff の両方の特徴に加え、 groff 拡張も備えています。 コマンドラインオプション によって、古典的な roff をできるだけエミュレートしようとする compatibility mode に、 troff を切り替えることができます。

古典的な nroff の動作をエミュレートするシェルスクリプト nroff(1) もあります。 これは、現在のロケールにしたがって、 自動的に適切な出力エンコーディングを選択しようと試みます。

フォーマッタプログラムは 中間出力 を生成します。 groff_out(7) を参照してください。

  デバイス
roff では、出力ターゲットを デバイス と呼びます。 デバイスは、プリンタのようなハードウェアの一部であることもあれば、 ソフトウェアのファイル形式であることもあります。 デバイスはオプション で指定します。 groff のデバイスは以下の通りです:

ascii
    ascii(7) 文字集合を用いたテキスト出力。

cp1047
    EBCDIC コードページの IBM cp1047 を用いたテキスト出力 (例えば OS/390 Unix)。

dvi TeX の DVI 形式。

html
    HTML 出力。

latin1
    ISO Latin-1 (ISO 8859-1) 文字集合を用いたテキスト出力。 iso_8859_1(7) を参照してください。

koi8-r
    ロシア語の KOI8-R 文字集合を用いたテキスト出力。

lbp Canon CAPSL プリンタ用出力 (LBP-4 と LBP-8 シリーズのレーザプリンタ)。

lj4 HP LaserJet4 互換 (または他の PCL5 互換) プリンタ。

ps  PostScript 出力。 プリンタや gv(1) のようなプレビュアに適しています。

utf8
    UTF-8 エンコードした Unicode (ISO 10646) 文字集合を用いたテキスト出力。 unicode(7) を参照してください。

X75 xditview(1x) や gxditview(1) のようなプレビュアに適した、75dpi の X Window System 出力。 12pt 文書のベースフォント用は X75-12 です。

X100
    xditview(1x) や gxditview(1) のようなプレビュアに適した、100dpi の X Window System 出力。 12pt 文書のベースフォント用は X100-12 です。

デバイスに対して使用される後処理プログラムは、デバイス記述ファイル中の postpro コマンドで指定されます。 groff_font(5) を参照してください。 これは -X オプションで上書きされます。

デフォルトのデバイスは ps です。

  後処理プログラム
groff は 3 つのハードウェア用後処理プログラムを備えています:

grolbp(1)
    いくつかの Canon プリンタ用。

grolj4(1)
    HP LaserJet 4 互換と PCL5 互換プリンタ用。

grotty(1)
    さまざまなエンコーディングのテキスト出力用。 例えばテキスト指向端末やラインプリンタなど。

現在では、ほとんどの印刷や描画ハードウェアはオペレーティングシステムや デバイスドライバ、ソフトウェアインタフェースによって扱われているため、 通常 PostScript を受け付けます。 したがって、さらに多くのハードウェアデバイス用後処理プログラムに対する 差し迫った要求はないでしょう。

他の文書ファイル形式へ変換する groff ソフトウェアデバイスは以下です:

grodvi(1)
    DVI 形式用。

grohtml(1)
    HTML 形式用。

grops(1)
    PostScript 用。

多数存在するフリーの変換ツールと組み合わせることで、troff 文書を 事実上存在するどんなデータ形式へと変換するのにも、これで十分でしょう。

  ユーティリティ
groff まわりの以下のユーティリティが利用可能です。

addftinfo(1)
    groff とともに使う troff のフォント記述ファイルへ情報を追加します。

afmtodit(1)
    PostScript デバイス用のフォント記述ファイルを作成します。

groffer(1)
    groff ファイルと man page 用の一般的なビュアプログラム。

gxditview(1)
    groff の X ビュア。GNU 版の xditview です。

hpftodit(1)
    lj4 デバイス用のフォント記述ファイルを作成します。

indxbib(1)
    文献目録データベースの逆引きインデックスを作成します。

lkbib(1)
    文献目録データベースを検索します。

lookbib(1)
    文献目録データベースを対話的に検索します。

pfbtops(1)
    .pfb 形式中の PostScript フォントを ASCII 形式に変換します。

tfmtodit(1)
    TeX DVI デバイス用のフォント記述ファイルを作成します。

xditview(1x)
    X window と一緒に配布されている roff ビュア。

環境変数
通常、以下の環境変数におけるパスの区切り文字はコロンですが、 これはオペレーティングシステムに依存して変わります。 例えば、DOS や Windows では代わりにセミコロンを使用します。

この検索パスは
    の前に置かれ、 groff が起動するコマンドのために使用されます。 これが設定されていない場合、groff のバイナリがインストールされた ディレクトリが の前に追加されます。

同時に別の roff の実装を実行する必要のある場合に備えて、
    groff には、実行時に名前の衝突を引き起こす可能性のあるプログラムのほとんどに プレフィックスをつける機能が備わっています (デフォルトではつきません)。 歴史的にこのプレフィックスは文字 g でしたが、これはなんでも構いません。 例えば、 gtroff は groff の troff を表しており、 gtbl は tbl の groff 版です。 を異なる値に設定することで、 別にインストールした roff を指定することができます。 もっと正確に言うと、プレフィックス xxx が設定された場合、ラッパプログラムである groff は troff の代わりに xxxtroff を内部的に呼び出します。 これは以下のプリプロセッサにも適用されます: eqn, grn, pic, refer, tbl, soelim 。 そして次のユーティリティにも適用されます: indxbib および lookbib 。 この機能は、上にあげたもの以外のプログラムには適用されません ( 特に groff 自身にも)。 というのも、それらは groff パッケージ独自のものだからです。

デフォルトのリストに加えて、
    devname ディレクトリを検索するためのディレクトリのリストです。 詳細は troff(1) と groff_font(5) を参照してください。

デフォルトのリストに加えて、
    マクロファイルを検索するためのディレクトリのリストです。 詳細は troff(1) と groff_tmac(5) を参照してください。

一時的なファイルが作成されるディレクトリです。
    これが設定されておらず、代わりに環境変数 が設定されていた場合は、一時ファイルはディレクトリ に作成されます。 それ以外の場合、一時ファイルは /tmp に作成されます。 refer(1), groffer(1), grohtml(1), grops(1) コマンドが一時ファイルを使用します。

デフォルトのデバイスをあらかじめ設定します。
    これが設定されていない場合は、デフォルトで ps デバイスが使用されます。 このデバイス名は、オプション で上書きされます。

関連ファイル
groff が、自身のデータファイルをインストールするディレクトリはいくつかあります。 異なるオペレーティングシステムには、異なるインストールの慣習があるため、 それらの位置はまったく固定されていません。 しかしそれらの機能は明確に定義されており、 すべてのシステムで一致しています。

  groff マクロディレクトリ
ここにはマクロパッケージに関するすべての情報が含まれています。 groff_tmac(5) に書かれているとおり、それらのファイルのために 1 つ以上のディレクトリが検索されることに注意してください。 この文書に対応してインストールされた groff では、これは /usr/share/tmac です。 groff マクロディレクトリ に含まれる以下のファイルには、特別な意味があります:

troffrc
    troff の初期化ファイル。 これは、マクロセットや何の入力も読まないうちに troff によって解釈されます。

troffrc-end
    最後の troff 起動ファイルです。 これは、すべてのマクロセットが読み込まれてから解析されます。

name.tmac
    tmac.name マクロパッケージ name 用のマクロファイルです。

  groff フォントディレクトリ
ここには出力デバイスに関するすべての情報が含まれています。 それらのファイルのために、1 つ以上のディレクトリが検索されることに 注意してください。 troff(1) を参照のこと。 この文書に対応してインストールされた groff では、これは /usr/share/groff_font です。 groff フォントディレクトリ に含まれる以下のファイルには、特別な意味があります:

devname/DESC
    デバイス name 用のデバイス記述ファイルです。 groff_font(5) を参照してください。

devname/F
    デバイス name のフォント F 用のフォントファイルです。

使用例
以下の例は、 troff を包むラッパである groff プログラムの能力を説明するものです。

プリプロセッサ tbl と pic を用い、 me マクロセットを使って roff ファイルを処理するには、 古典的な troff では以下のように呼び出さねばなりませんでした。

groff を使うと、 このパイプを以下のような等価なコマンドへと短くすることができます。

これを呼び出すさらに簡単な方法は、 grog(1) を用いてプリプロセッサとマクロオプションを推測し、 生成されたコマンドを実行することです (バッククォートを使用して、シェルコマンド置換を指定します)。

最も単純な方法は、以下を呼び出して自動化された方法で内容を見ることです。

バグ

EBCDIC ホスト (例えば OS/390 Unix) 上では、出力デバイス ascii と latin1 は利用できません。 同様に、EBCDIC コードページ cp1047 用の出力は、ASCII ベースのオペレーティングシステムでは 利用できません。

バグレポートは、bug-groff@gnu.org までお願いします。 レポートの際にはバグを再現できる完全な例題を添付し、 あなたの利用している groff のバージョンを添えて下さい。

入手性
groff の入手方法や関連情報は、 から入手できます。 もっとも最近リリースされたバージョンの groff は、 から anonymous ftp で入手できます。

3 つの groff メーリングリストが利用できます:

は、バグレポート用です。

は、groff に関する一般的な議論用です。

は、CVS リポジトリへのコミットログを流す、投稿不可のメーリングリストです。

CVS でのアクセスやそれ以上の詳細は、 groff のソースパッケージのトップディレクトリにある README ファイルに書かれています。

grap プリプロセッサのフリーの実装があります。 これは によって書かれました。 実際のバージョンは にあります。 これは、groff でサポートされている唯一の grap です。

作者
Copyright © 1989, 2002, 2003 Free Software Foundation, Inc.

この文書は、FDL (GNU Free Documentation License) バージョン 1.1 か それ以降のものに基づいて配布されています。 あなたは、システム上に FDL のコピーを受け取っているはずですが、 これは からもオンラインで入手可能です。

この文書は、 によって書かれたオリジナルの groff の man page に基づいています。 これは、 によって書き直され、書き足され、FDL ライセンスに変更されました。 これは、 によって保守されています。

groff は、GNU のフリーソフトウェアプロジェクトです。 groff パッケージ 全体は、GNU のコピーレフトライセンスによって保護されています。 ソフトウェアのファイルは GNU General Public License (GPL) の下で 配布されており、ほとんどの文書ファイルには GNU Free Documentation License (FDL) が使用されています。

関連項目
groff info ファイル には、1 つの文書内に groff システムのすべての情報が含まれています。 このすべての面にわたる詳細な説明書の下には、 例題や背景に関する情報が提供されています。 これを読むには、 info(1) を参照してください。

複雑な構成をしているため、groff システムにはたくさんの man page があります。 これらは man(1) や groffer(1) で読むことができます。

手引きや歴史、そしてさらなる読み物:
    roff(7)

groff ファイル用ビュア:
    groffer(1), gxditview(1), xditview(1x)

フォーマッタ用ラッパプログラム:
    groff(1), grog(1)

roff プリプロセッサ:
    eqn(1), grn(1), pic(1), refer(1), soelim(1), tbl(1), grap(1)

groff 拡張を含む roff 言語:
    groff(7), groff_char(7), groff_diff(7), groff_font(5)

roff フォーマッタプログラム:
    nroff(1), troff(1), ditroff(7)

中間出力言語:
    groff_out(7)

出力デバイス用後処理プログラム:
    grodvi(1), grohtml(1), grolbp(1), grolj4(1), grops(1), grotty(1)

groff のマクロパッケージとマクロに特化したユーティリティ:
    groff_tmac(5), groff_man(7), groff_mdoc(7), groff_me(7), groff_mm(7), groff_mmse(7), groff_mom(7), groff_ms(7), groff_www(7), groff_trace(7), mmroff(7)

利用可能なユーティリティ:
    addftinfo(1), afmtodit(1), eqn2graph(1), groffer(1), gxditview(1), hpftodit(1), indxbib(1), lookbib(1), pfbtops(1), pic2graph(1), tfmtodit(1)