groff - GNU roff ドキュメントフォーマットシステムのフロントエンド
構文
groff [-abcCeEgGijklNpRsStUVXzZ] [-d ctext] [-d string=text] [-D fallback-encoding] [-f fontfamily] [-F font-directory] [-I inclusion-directory] [-K input-encoding] [-L spoolerargument] [-m macro-package] [-M macro-directory] [-n page-number] [-o page-list]
[-P postprocessor-argument] [-r cnumeric-expression] [-r register=numeric-expression]
[-T output-device] [-w warning-category] [-W warning-category] [file ...]
groff -h
groff --help
groff -v [option ...] [file ...]
groff --version [option ...] [file ...]
説明
groff は、GNU roff ドキュメントフォーマットシステムの主要なフロントエンドです。GNU roff は、プレーンテキスト入力ファイルを読み取り、書式設定コマンドを含めて、PostScript、PDF、HTML、DVI、またはその他の形式で出力するか、ターミナルに表示するタイプセッティングシステムです。書式設定コマンドは、ローレベルのタイプセッティングプリミティブ、供給されたパッケージからのマクロ、またはユーザー定義のマクロにすることができます。これら 3 つのアプローチすべてを組み合わせることができます。ファイルオペランドが指定されていない場合、またはファイルが "-" の場合、groff は標準入力ストリームを読み取ります。
AT&T Unix からのタイプセッターを再実装および拡張した groff は、Unix マニュアル(man ページを含む)との長い関係により、ほとんどの POSIX システムに存在します。また、その前身は、いくつかのベストセラーのソフトウェアエンジニアリングテキストの作成で知られています。groff は、高度なタイポグラフィのドキュメントを作成しながら、最小限のシステムリソースを消費できます。
groff コマンドは、前処理プログラムの実行、入力ドキュメントをデバイスに依存しないページ記述言語への変換、およびその言語からの出力の生成を調整します。
オプション
-h および --help は、使用法メッセージを表示して終了します。
groff は、troff(1) フォーマッタのほとんどのユーザーによる直接的な呼び出しを代替することを目的としているため、両方のプログラムはオプションのセットを共有します。ただし、groff には troff にはないオプションがあり、groff が異なる解釈をするオプションもあります。同時に、有効な troff オプションをすべて groff に渡すことはできません。
groff 固有のオプション
次のオプションは、GNU troff に存在しないか、groff によって異なる解釈されます。
-D enc 前処理プログラム preconv(1) で使用するフォールバック入力エンコーディングを enc に設定します。-k を暗黙的に指定します。
-e eqn(1) 前処理プログラムを実行します。
-g grn(1) 前処理プログラムを実行します。
-G grap(1) 前処理プログラムを実行します。-p を暗黙的に指定します。
-I dir troff のオプションと同じように機能しますが、-g と -s も暗黙的に指定します。soelim(1) と出力ドライバーに渡され、grn には -M オプションとその引数として dir が渡されます。
-j chem(1) プリプロセッサを実行します。-p を暗黙的に指定します。
-k preconv(1) プリプロセッサを実行します。groff の -K または -D オプションも指定されていない場合の動作については、そのマニュアルページを参照してください。
-K enc preconv(1) で使用する入力エンコーディングを enc に設定します。-k を暗黙的に指定します。
-l 出力をスプーリングプログラムに送信して印刷します。デバイス記述ファイル内の「print」ディレクティブは、使用するデフォルトのコマンドを指定します。groff_font(5) を参照してください。そのようなディレクティブが出力デバイスに存在しない場合、出力は lpr(1) にパイプされます。-L および -X オプションを参照してください。
-L arg スプーリングプログラムに arg を渡します。複数の arg が必要な場合は、それぞれを別の -L オプションで渡します。groff は、スプーラープログラムに渡す前に、arg にダッシュを付加しません。
-M troff のオプションと同様に動作しますが、eqn(1)、grap(1)、および grn(1) にも渡されます。
-N eqn 区切り文字の間に改行を挿入しないようにします。-N を eqn(1) に渡します。
-p pic(1) プリプロセッサを実行します。
-P arg ポストプロセッサに arg を渡します。複数の arg が必要な場合は、それぞれを別の -P オプションで渡します。groff は、ポストプロセッサに渡す前に、arg にダッシュを付加しません。
-R refer(1) プリプロセッサを実行します。refer に引数を渡すためのメカニズムは提供されていません。ほとんどの refer オプションには、ドキュメント内で指定できる同等の言語要素があります。
-s soelim(1) プリプロセッサを実行します。
-S 「より安全な」モードで動作します。-U を参照して、その逆の動作を確認してください。セキュリティ上の理由から、より安全なモードはデフォルトで有効になっています。
-t tbl(1) プリプロセッサを実行します。
-T dev troff に、入力のフォーマットをデバイス dev 用に行うように指示します。groff は、次に、troff の出力を dev に適切な形式に変換する出力ドライバを呼び出します。後述する「出力デバイス」のサブセクションを参照してください。
-U 安全でないモードで動作します。-U オプションを pic および troff に渡します。
-v
--version
groff および実行するすべてのプログラムのバージョン情報を標準出力ストリームに出力します。つまり、指定されたコマンドラインは通常どおり処理され、-v がフォーマッタと呼び出されるプリまたはポストプロセッサに渡されます。
-V groff が実行するパイプラインを標準出力ストリームに出力しますが、実行はしません。複数回指定すると、groff はパイプラインを出力して実行します。
-X 通常のポストプロセッサの代わりに gxditview(1) を使用して、ドキュメントを X11 ディスプレイで (プレ)ビューします。このオプションを -Tps と組み合わせると、PostScript デバイスのフォントメトリックが使用されます。一方、-TX75 および -TX100 オプションでは、X11 フォントのメトリックが使用されます。
-Z ポストプロセッシングを無効にします。troff の出力は標準出力ストリームに表示されます (ただし、-z で抑制される場合があります)。groff_out(5) にはその形式の説明があります。
透過オプション
次のオプションは、フォーマッタプログラム troff(1) に変更なしで渡され、そのマニュアルページでより詳細に説明されます。
-a タイプセットされた出力のプレーンテキスト近似を生成します。
-b エラーまたは警告が発生するたびに、標準エラーストリームにバックトレースを書き込みます。
-c カラー出力を無効にして開始します。
-C AT&T troff 互換モードを有効にします。-c が含まれます。
-d cs
-d name=string
文字列を定義します。
-E troff エラーメッセージを抑制します。-Ww が含まれます。
-f fam デフォルトのフォントファミリーを設定します。
-F dir 指定された出力デバイスのデバイスおよびフォントの説明ファイルのディレクトリを検索します。
-i 指定された入力ファイルの後で、標準入力を処理します。
-I dir 入力ファイルを検索するディレクトリを指定します。
-m name
name.tmac を入力ファイルの前に処理します。
-M dir マクロファイルを検索するディレクトリを指定します。
-n num 最初のページ番号を num に設定します。
-o list
list にあるページのみを出力します。
-r cnumeric-expression
-r register=numeric-expression
レジスタを定義します。
-w name
-W name
警告のカテゴリ name の出力を有効 (-w) にするか、抑制 (-W) します。
-z troff の書式設定されたデバイスに依存しない出力を抑制します。
使用法
GNU roff システムのアーキテクチャは、他のデバイスに依存しない roff 実装と同様であり、プリプロセッサ、マクロパッケージ、出力ドライバ (または「後処理プログラム」)、ユーティリティのスイート、そしてその中心にあるフォーマッタ troff で構成されています。roffe(7) を参照して、roff システムの仕組みの概要を確認してください。
GNU roff システムで使用できるフロントエンドプログラムは、従来の roff よりも使いやすくなっています。従来の roff では、ソースドキュメントを保守しやすい形式からデバイス対応の出力に変換するために、パイプラインの構築や一時ファイルの利用が必要でした。以下では、GNU roff システムの構成要素について説明します。roff(7) の内容を補完する groff 固有の情報を提供します。
概要
実験したり、システムからの迅速なフィードバックを得たい場合は、「Hello, world!」ドキュメントから始めるのが良いでしょう。
$ echo "Hello, world!" | groff -Tascii | sed '/^$/d'
Hello, world!
sed コマンドは、ターミナル画面を埋め尽くす 65 行の空白行を削除するために使用しました。 (roff システムは、1 ページあたり 66 行の紙ベースのターミナルが普及していた時代に開発されました。)
今日のユーザーは、UTF-8 に対応したターミナルに出力することを好むかもしれません。
$ echo "Hello, world!" | groff -Tutf8 | sed '/^$/d'
PDF、HTML、または TeX の DVI を生成することも簡単です。難しいのは、出力のビューアプログラムを選択することかもしれません。
$ echo "Hello, world!" | groff -Tpdf > hello.pdf
$ evince hello.pdf
$ echo "Hello, world!" | groff -Thtml > hello.html
$ firefox hello.html
$ echo "Hello, world!" | groff -Tdvi > hello.dvi
$ xdvi hello.html
groff を REPL として使用する
プログラマーのように groff を読み取り、評価、および出力 (REPL) のループで使用できることを知っておくと、喜ぶかもしれません。これにより、フォーマッタの動作や、それが受け入れる構文を検証するのに役立ちます。-ww ですべての警告をオンにすると、この目的に役立ちます。
$ groff -ww -Tutf8
# これはコメントです。レジスタを定義しましょう。
.nr a 1
# 左から右に評価される演算子を使用して、整数の算術演算を行います。
.nr b \n[a]+5/2
# 結果を標準エラーストリームに出力しましょう。
.tm \n[b]
3 \# 文字列を定義しましょう。
.ds name Leslie\" これは別の形式のコメントです。
.nr b (\n[a] + (7/2))
# 次の 2 行のテキスト入力を中央揃えにします。
.ce 2
Hi, \\*[name].
Your secret number is \n[b].
# 割り算はゼロに向かって切り捨てられることがわかります。
It is
# if-else 制御構造があります。
.ie (\n[b] % 2) odd.
.el even.
# このトリックは、ページの長さを現在の垂直位置に設定するため、完了したときに空白行が出力されなくなります。
.pl \n[nl]u
<Control-D>
Hi, Leslie.
Your secret number is 4.
It is even.
ペーパーフォーマット
GNU roffでは、フォーマッタtroffと出力デバイスのページ寸法は別々に扱われます。フォーマッタでは、リクエストを使用してページ長(.pl)、ページオフセット(または左マージン、.po)、および行長(.ll)を設定します。右マージンは明示的に設定されていません。ページオフセットと行長の組み合わせから、右マージンを算出するのに必要な情報が得られます。papersizeマクロパッケージは、troffによって自動的にロードされ、"letter"や"A4"などの便利な名前を使用してページ寸法を設定するためのインターフェースを提供します。詳細はgroff_tmac(5)を参照してください。このインストールにおけるフォーマッタのデフォルト値は"A4"です。
各マクロパッケージが、このように設定されたページ寸法を尊重する必要があります。一部のマクロパッケージは、代替のメカニズムを提供します。
各出力デバイスの出力媒体のサイズは、そのDESCファイルで設定できます。ほとんどの出力ドライバは、コマンドラインオプション-pを使用してデフォルトの寸法をオーバーライドし、-lを使用してランドスケープモードを使用します。groff_font(5)には、papersizeディレクティブの説明が記載されており、-pと同じ形式の引数を受け取ります。出力ドライバのマニュアルページ(grops(1)など)も役立つ場合があります。groffは、コマンドラインオプション-Pを使用して、出力デバイスにオプションを渡します。たとえば、A4用紙でランドスケープモードのPostScript出力を作成するには、次のコマンドを使用します。
groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
フロントエンド
groffプログラムは、troff(1)プログラムのラッパーです。コマンドラインオプションを介してプリプロセッサを指定し、選択した出力デバイスに対して適切なポストプロセッサを自動的に実行できます。これにより、従来のroff(7)システムを使用するユーザーが手動でパイプラインを構築したり、一時ファイルを管理したりする必要がなくなります。grog(1)プログラムを使用して、ドキュメントをフォーマットするための適切なgroffコマンドラインを推測します。
言語
roffシステムの入力は、プレーンテキストと制御行およびエスケープシーケンスが混在しています。この組み合わせは、roffと呼ばれる一連の言語のドキュメントを構成します。詳細はroff(7)を参照してください。GNU roff言語の構文と機能の概要(すべてのサポートされているエスケープシーケンス、リクエスト、および定義済みのレジスタのリストを含む)は、groff(7)に記載されています。GNU roffは、現在存在するroffの方言の一般的なサブセットである、AT&T troff言語の拡張機能を提供します。詳細はgroff_diff(7)に記載されています。
プリプロセッサ
プリプロセッサは、roff言語の出力を生成するドメイン固有の言語を解釈します。通常、そのような入力は、roff入力ファイルのセクションまたは領域(各プリプロセッサに固有の、roff内で使用されるマクロ呼び出しで囲まれる)に制限されます。プリプロセッサは、roff構文の一部と、独自の言語を解釈します。GNU roffは、AT&T troffのユーザーによく知られているほとんどのプリプロセッサを再実装しており、これらには通常、拡張された機能が含まれているか、GNU troffを使用してその出力をフォーマットする必要があります。
tbl はテーブルのレイアウトを行います。
eqn は数式を組版します。
pic は図面を描きます。
refer は書誌学的参照を処理します。
soelim は「ソース」された入力ファイルをプリプロセスします。
grn は gremlin(1) 図をレンダリングします。
chem は pic を使用して化学構造式を描きます。
gperl は perl(1) を使用して groff レジスタと文字列を埋めます。
glilypond は LilyPond の楽譜を埋め込みます。
gpinyin は Hanyu Pinyin を使用して、中国語(マンダリン)の入力を容易にします。
GNU roffに固有のプリプロセッサは、preconv(1) で、これはさまざまな入力エンコーディングを GNU troff が理解できる形式に変換します。使用する場合は、他のすべてのプリプロセッサの前に実行されます。
ほとんどのプリプロセッサは、コンテンツを特性的なトークンのペアで囲みます。そのようなトークンは、入力行の先頭にあり、ドット制御文字を使用する必要があります。スペースとタブは、制御文字の後に続いたり、入力行の終わりに先行したりしてはなりません。これらのルールから逸脱すると、プリプロセッサによるトークンの認識が妨げられます。トークンは通常、プリプロセッサの出力に保持され、後続の troff によってマクロ呼び出しとして解釈されます。理想的なプリプロセッサは、まだ groff には存在しません。
┌──────────────┬─────────────────┬────────────────┐
│ プリプロセッサ │ 開始トークン │ 終了トークン │
├──────────────┼─────────────────┼────────────────┤
│ chem │ .cstart │ .cend │
│ eqn │ .EQ │ .EN │
│ grap │ .G1 │ .G2 │
│ grn │ .GS │ .GE │
│ ideal │ .IS │ .IE │
│ │ │ .IF │
│ pic │ .PS │ .PE │
│ │ │ .PF │
│ │ │ .PY │
│ refer │ .R1 │ .R2 │
│ tbl │ .TS │ .TE │
├──────────────┼─────────────────┼────────────────┤
│ glilypond │ .lilypond start │ .lilypond stop │
│ gperl │ .Perl start │ .Perl stop │
│ gpinyin │ .pinyin start │ .pinyin stop │
└──────────────┴─────────────────┴────────────────┘
マクロパッケージ
マクロファイルは、roff 入力ファイルであり、それ自体は出力を生成せず、代わりに他の roff ドキュメントの作成を容易にするように設計されています。マクロファイルが標準の場所にインストールされ、一般的なユーザーが使用するのに適している場合、それはマクロパッケージと呼ばれます。
マクロパッケージは、-m オプションを使用して、任意の roff 入力ドキュメントの前にロードできます。GNU roff システムは、AT&T troff で最もよく知られているマクロパッケージのほとんどを互換性のある方法で実装し、拡張しています。これらには、1 桁または 2 桁の名前が付けられており、これは初期の Unix 文化における命名の経済的な慣行から生じており、簡潔なアプローチにより、多くのパッケージが nroff および troff オプション文字で一般的に識別されるようになり、時には「man」(「manual」の略)のように、または s パッケージのように、オプションのダッシュとしてさえも呼ばれるようになりました。
マクロパッケージは、さまざまな目的を果たします。その中でも、「フルサービス」パッケージは、ページレイアウトなどの基本的なタスクの責任を担い、ドキュメントの作成に使用する独自の語彙であるマクロを定義します。このようなパッケージはそれぞれ独立しており、特定のドキュメントで同時に使用できるのは 1 つだけです。
an は、Version 7 Unix(1979 年)で始まる形式で man ページを作成するために使用されます。groff_man(7) を参照してください。コマンドラインで -man として指定できます。
doc は、4.3BSD-Reno(1990 年)で始まる形式で man ページを作成するために使用されます。groff_mdoc(7) を参照してください。コマンドラインで -mdoc として指定できます。
e は、AT&T の s の代替として開発された、Berkeley の汎用マクロスイートです。groff_me(7) を参照してください。コマンドラインで -me として指定できます。
m は、汎用ドキュメント用の第 2 世代 AT&T マクロスイートの形式を実装したもので、s の後継です。groff_mm(7) を参照してください。コマンドラインで -mm として指定できます。
om(常に「mom」と呼ばれます)は、Peter Schaffter によって GNU roff 用に特別に作成された最新のパッケージです。詳細については、mom HTML マニュアルを参照してください。mom は女性代名詞を使用します。コマンドラインで -mom として指定できます。
s は、オリジナルの AT&T 汎用ドキュメント形式です。groff_ms(7) を参照してください。コマンドラインで -ms として指定できます。
他のパッケージは補完的なものです。たとえば、andoc は GNU roff に固有のラッパーパッケージであり、ドキュメントが man 形式または mdoc 形式を使用しているかどうかを認識し、対応するマクロパッケージをロードします。コマンドラインで -mandoc として指定できます。man(1) ライブラリアンプログラムは、このマクロファイルを使用して、正しいマクロパッケージのロードを委任できます。したがって、man 自体がドキュメントの内容を調べて判断する必要はありません。
多くのマクロファイルは、フル機能パッケージ、またはそのようなパッケージを使用しないroffドキュメントの機能を拡張します。後者は「生の」ドキュメントと呼ばれることがあります。これらの補助パッケージと、マクロファイルの命名と配置に関する詳細は、groff_tmac(5)に記述されています。
フォーマッタ
roff言語の入力を解釈するプログラムであるフォーマッタは、troff(1)です。これは、AT&Tのtroffおよびnroffプログラムの機能に加えて、多くの拡張機能を提供します。コマンドラインオプション-Cは、troffを互換モードに切り替え、古いシステム用に記述されたドキュメントのフォーマットを可能にするために、AT&Tのtroffを可能な限り忠実にエミュレートしようとします。
シェルスクリプトであるnroff(1)は、AT&Tのnroffの動作をエミュレートします。これは、ロケールに基づいて出力を正しくエンコードし、ユーザーが-Tオプションで出力デバイスを指定する必要がないようにするため、端末出力デバイスで使用するのに便利です。
GNU troffは、groff_out(5)に詳細に説明されている、デバイスに依存しないが、デバイスに依存しないわけではないページ記述言語で出力を生成します。
出力デバイス
troffの出力は、通常、フォーマッタまたはフロントエンドへの-Tオプションで指定される特定の出力デバイス用にフォーマットされます。このオプションまたはGROFF_TYPESETTER環境変数のいずれも使用されない場合、デフォルトの出力デバイスはpsです。出力デバイスは、以下のいずれかになります。
ascii:ISO 646 1991:IRV文字セットとエンコーディングを使用する端末、別名USASCII。
cp1047:IBMコードページ1047文字セットとエンコーディングを使用する端末。
dvi:TeX DVI形式。
html
xhtml:それぞれHTMLおよびXHTML出力。
latin1:ISO Latin-1(ISO 8859-1)文字セットとエンコーディングを使用する端末。
lbp:Canon CaPSLプリンター(LBP-4およびLBP-8シリーズレーザープリンター)。
lj4:HP LaserJet4互換(またはその他のPCL5互換)プリンター。
pdf:PDF出力。
ps:PostScript出力。
utf8:ISO 10646(「Unicode」)文字セットをUTF-8エンコーディングで使用する端末。
X75:gxditviewで75dpi解像度および10ポイントの基本タイプサイズでプレビュー。
X75-12:gxditviewで75dpi解像度および12ポイントの基本タイプサイズでプレビュー。
X100:gxditviewで100dpi解像度および10ポイントの基本タイプサイズでプレビュー。
X100-12:gxditviewで100dpi解像度および12ポイントの基本タイプサイズでプレビュー。
ポストプロセッサ
GNU troffの出力を解釈するプログラムは、すべてポストプロセッサです。GNU roffによって提供されるポストプロセッサは、ドキュメントを閲覧または印刷するために準備する出力ドライバです。ページのリシーケンスやドキュメントの統計的測定など、他の目的のためのポストプロセッサも考えられます。
出力ドライバは、1 つ以上の出力デバイスをサポートし、各デバイスには独自のデバイス記述ファイルがあります。 デバイスは、デバイス記述ファイル内の postpro ディレクティブでポストプロセッサを決定します。 groff_font(5) を参照してください。-X オプションは、この選択をオーバーライドし、gxditview を出力ドライバとして使用させます。
grodvi(1) は dvi を提供します。
grohtml(1) は html と xhtml を提供します。
grolbp(1) は lbp を提供します。
grolj4(1) は lj4 を提供します。
gropdf(1) は pdf を提供します。
grops(1) は ps を提供します。
grotty(1) は ascii、cp1047、latin1、および utf8 を提供します。
gxditview(1) は X75、X75-12、X100、および X100-12 を提供し、さらに ps のプレビューもできます。
ユーティリティ
GNU roff には、一連のユーティリティが含まれています。
gdiffmk(1) は、roff 入力ファイルのペア間の差をマークします。
grog(1) は、ドキュメントに必要な groff コマンドを推測します。
いくつかのユーティリティは、フォントの説明を準備し、フォーマッタが特定のデバイスに対して出力を作成するときにそれらを使用できるようにします。
addftinfo(1) は、AT&T troff フォント記述ファイルに情報を追加して、GNU troff で使用できるようにします。
afmtodit(1) は、PostScript Type 1 フォントのフォント記述ファイルを作成します。
pfbtops(1) は、PFB (Printer Font Binary) 形式の PostScript Type 1 フォントを PFA (Printer Font ASCII) に変換し、その後、afmtodit で解釈できます。
hpftodit(1) は、HP LaserJet 4 ファミリーのプリンタのフォント記述ファイルを作成します。
tfmtodit(1) は、TeX DVI デバイスのフォント記述ファイルを作成します。
xtotroff(1) は、X Window System コアフォントのフォント記述ファイルを作成します。
roff プリプロセッサ言語を使用して作成されたマテリアをグラフィカルな画像ファイルに変換する一連のツールがあります。
eqn2graph(1) は、eqn 方程式を切り抜いた画像に変換します。
grap2graph(1) は、grap 図を切り抜いた画像に変換します。
pic2graph(1) は、pic 図を切り抜いた画像に変換します。
別のプログラムのセットは、refer(1) プリプロセッサで使用される書誌データベースファイルで機能します。
indxbib(1) は、書誌データベースの逆インデックスを作成し、それらでの検索操作を高速化します。
lkbib(1) は、データベースを検索します。
lookbib(1) は、データベースをインタラクティブに検索します。
終了ステータス
groff は、引数の解析に問題があった場合に失敗ステータスで終了し、-h または --help オプションのいずれかが指定された場合は、正常なステータスで終了します。それ以外の場合、groff はパイプラインを実行して入力を処理します。パイプライン内のすべてのコマンドが正常に終了した場合、groff も同様に終了します。そうでない場合、groff の終了ステータスは発生した問題の概要をエンコードします。ビット 0 がコマンドが失敗ステータスで終了した場合、ビット 1 がコマンドがシグナルで終了した場合、ビット 2 がコマンドが実行できなかった場合に設定されます。(したがって、これらの不運がすべてパイプラインに発生した場合、groff はステータス 2^0 + 2^1 + 2^2 = 1+2+4 = 7 で終了します。)パイプラインの問題をトラブルシューティングするには、-V オプションを使用して groff コマンドを再実行し、報告されたパイプラインを個別の段階に分割して、各コマンドの終了ステータスと発行された診断メッセージを調べてみてください。
環境
通常、環境変数で PATH で終わるパス区切り文字はコロンですが、これはオペレーティングシステムによって異なります。たとえば、Windows ではセミコロンを使用します。
GROFF_BIN_PATH
groff によって実行されるコマンドを検索するために使用される検索パス。PATH と組み合わせて使用されます。設定されていない場合、GNU roff 実行ファイルのインストールディレクトリである /usr/bin が、PATH の前に検索されます。
GROFF_COMMAND_PREFIX
GNU roff は、コンパイル時に、AT&T troff に対応するプログラムの名前の先頭にプレフィックスを付けるように設定できます。これにより、実行時に名前の衝突を回避します。デフォルトのプレフィックスは空です。
使用する場合、このプレフィックスは通常、文字「g」になります。たとえば、GNU troff は gtroff としてインストールされます。troff に加えて、プレフィックスはフォーマッタ nroff、プリプロセッサ eqn、grn、pic、refer、tbl、および soelim、およびユーティリティ indxbib と lookbib にも適用されます。
GROFF_ENCODING
この変数の値は、入力ファイルの文字エンコーディングを選択するために、preconv(1) プリプロセッサの -e オプションに渡されます。この変数が存在する場合、groff オプション -k が適用されます。設定されていても空の場合、groff は -e オプションなしで preconv を呼び出します。groff の -K オプションは、GROFF_ENCODING をオーバーライドします。
GROFF_FONT_PATH
選択された出力デバイスのデバイスおよびフォント記述ファイルのディレクトリを、このディレクトリのリストで検索します。troff(1) および groff_font(5) を参照してください。
GROFF_TMAC_PATH
このディレクトリのリストでマクロファイルを検索します。troff(1) および groff_tmac(5) を参照してください。
GROFF_TMPDIR
一時ファイルをこのディレクトリに作成します。設定されていない場合、環境変数 TMPDIR が設定されている場合は、代わりにそこに一時ファイルが作成されます。Windows システムでは、上記のいずれも設定されていない場合、環境変数 TMP および TEMP (この順) もチェックされます。それ以外の場合、一時ファイルは /tmp に作成されます。refer(1)、grohtml(1)、および grops(1) コマンドは一時ファイルを使用します。
GROFF_TYPESETTER
デフォルトの出力デバイスを設定します。空または設定されていない場合、ps が使用されます。-T オプションは、GROFF_TYPESETTER をオーバーライドします。
SOURCE_DATE_EPOCH
Unix エポックからの秒数で表されるタイムスタンプ。これを使用して、出力の作成時刻のタイムスタンプを現在の時刻の代わりにします。時刻は、gmtime(3) および asctime(3) を使用して人間が読める形式に変換され、フォーマッタの起動時に格納され、ドキュメントおよびマクロパッケージで使用できるレジスタに保存されます。
TZ 現在の時刻を人間が読める形式に変換するときに使用するタイムゾーン。tzset(3) を参照してください。SOURCE_DATE_EPOCH が使用されている場合、常に UTC を使用して人間が読める形式に変換されます。
例
roff システムは、man ページをフォーマットすることで最もよく知られています。 man(1) ライブラリアンプログラムが man ページを見つけると、次の groff コマンドを実行する場合があります。 groff -t -man -Tutf8 /usr/share/man/man1/groff.1 ライブラリアンは、出力をページャにパイプすることもあります。ページャは、groff が太字、下線、または斜体に送信する SGR ターミナルエスケープシーケンスを解釈しない場合があります。セクション「制限」を参照してください。
roff 入力ファイルを、AT&T troff ユーザーが慣れていた方法で、tbl および pic プリプロセッサーと me マクロパッケージを使用して処理するには、パイプラインを入力またはスクリプト化します。
pic foo.me | tbl | troff -me -Tutf8 | grotty
groff を使用すると、このパイプラインを、同等の単一のコマンドに短縮できます。
groff -p -t -me -T utf8 foo.me
さらに簡単な方法は、grog(1) を使用して、プリプロセッサーとマクロオプションを推測し、シェルのコマンド置換機能を使用して結果を実行することです。
$(grog -Tutf8 foo.me)
ポストプロセッサーへのコマンドラインオプションは、必要な先頭のハイフン「-」を含めて指定する必要があります。これは、groff が引数を変更せずにポストプロセッサーに渡すためです。これにより、任意の引数を送信できます。たとえば、gxditview ポストプロセッサーにタイトルを渡すには、次のシェルコマンドは次のとおりです。
groff -X -P -title -P 'trial run' mydoc.t
および
groff -X -Z mydoc.t | gxditview -title 'trial run' は同等です。
制限事項
ascii、cp1047、latin1、および utf8 デバイスに対して出力をページングする場合、more(1) や less(1) などのプログラムでは、一部のターミナルエスケープシーケンスを正しく処理するために、コマンドラインオプションが必要になる場合があります。grotty(1) を参照してください。
EBCDIC ホスト (OS/390 Unix など) では、出力デバイス ascii および latin1 は使用できません。逆に、出力デバイス cp1047 は、ISO 646 または ISO 8859 文字エンコーディング標準に基づくシステムでは使用できません。
インストールディレクトリ
GNU roff は、コンパイル時の構成に応じて、さまざまな場所にファイルをインストールします。このインストールでは、次の場所が使用されます。
/etc/X11/app-defaults
gxditview(1) のアプリケーションデフォルトディレクトリ。
/usr/bin
groff の実行可能コマンドを含むディレクトリ。
/usr/share/groff/1.23.0/eign
indxbib(1) の一般的な単語のリスト。
/usr/share/groff/1.23.0
データファイルのディレクトリ。
/usr/dict/papers/Ind
lkbib(1) および refer(1) のデフォルトインデックス。
/usr/share/doc/groff-base
ドキュメントディレクトリ。
/usr/share/doc/groff-base/examples
例ディレクトリ。
/usr/share/groff/1.23.0/font
フォントディレクトリ。
/usr/share/doc/groff-base/html
HTML ドキュメントディレクトリ。
/usr/lib/font
レガシーフォントディレクトリ。
/usr/share/groff/site-font
ローカルフォントディレクトリ。
/usr/share/groff/site-tmac
ローカルマクロパッケージ (tmac ファイル) ディレクトリ。
/usr/share/groff/1.23.0/tmac
マクロパッケージ (tmac ファイル) ディレクトリ。
/usr/share/groff/1.23.0/oldfont
古いバージョンの groff との互換性のためのフォントディレクトリ。grops(1) を参照してください。
/usr/share/doc/groff-base/pdf
PDF ドキュメントディレクトリ。
groff マクロディレクトリ
GNU roff に付属するほとんどのマクロファイルは、このドキュメントに対応するインストール用に、/usr/share/groff/1.23.0/tmac に保存されます。通常、複数のディレクトリがマクロファイルの検索に使用されます。troff(1) を参照してください。GNU roff が提供するマクロファイルのカタログについては、groff_tmac(5) を参照してください。
GNU roff に付属するデバイスおよびフォント記述ファイルは、/usr/share/groff/1.23.0/ に保存されています。
このドキュメントのインストールに対応するフォントです。通常、複数のディレクトリがデバイスおよびフォント記述ファイルの検索に使用されます。troff(1) を参照してください。これらのファイル形式については、groff_font(5) を参照してください。
入手方法
groff のリリース、ソースリポジトリ、メーリングリスト、サポートチケットトラッカー、およびその他の情報へのリンクは、GNU ウェブサイトの groff ページから入手できます。
テッド・ファーバーによって書かれた、grap プリプロセッサのフリー実装は、grap のウェブサイトにあります。groff はこの grap のみをサポートしています。
著者
groff (フロントエンドコマンドとシステム全体) は、主にジェームズ・クラークによって書かれました。このドキュメントへの貢献者は、クラーク、トレント・A・フィッシャー、ヴェルナー・レンベルク、ベンド・ワーケン、および G. ブランデン・ロビンソンです。
関連項目
トレント・A・フィッシャーとヴェルナー・レンベルクによる「Groff: The GNU Implementation of troff」は、主要な groff マニュアルです。「info groff」でインタラクティブに閲覧できます。
はじめに、歴史、および詳細情報: roff(7)
groff (および AT&T デバイスに依存しない troff) ドキュメントのビューア: gxditview(1)
プリプロセッサ: chem(1), eqn(1), neqn(1), glilypond(1), grn(1), preconv(1), gperl(1), pic(1), gpinyin(1), refer(1), soelim(1), tbl(1)
マクロパッケージとパッケージ固有のユーティリティ: groff_hdtbl(7), groff_man(7), groff_man_style(7), groff_mdoc(7), groff_me(7), groff_mm(7), groff_mmse(7) (スウェーデン語ロケールのみ), mmroff(1), groff_mom(7), pdfmom(1), groff_ms(7), groff_rfc1345(7), groff_trace(7), groff_www(7)
書誌データベース管理ツール: indxbib(1), lkbib(1), lookbib(1)
言語、慣例、および GNU 拡張: groff(7), groff_char(7), groff_diff(7), groff_font(5), groff_tmac(5)
中間出力言語: groff_out(5)
フォーマッタプログラム: troff(1)
フォーマッタラッパー: nroff(1), pdfroff(1)
出力デバイスのポストプロセッサ: grodvi(1), grohtml(1), grolbp(1), grolj4(1), gropdf(1), grops(1), grotty(1)
フォントサポートユーティリティ: addftinfo(1), afmtodit(1), hpftodit(1), pfbtops(1), tfmtodit(1), xtotroff(1)
グラフィックス変換ユーティリティ: eqn2graph(1), grap2graph(1), pic2graph(1)
差分マーキングユーティリティ: gdiffmk(1)
「groff guess」ユーティリティ: grog(1)