roffとは
roffは、
UNIX環境で文書整形を行うためのコマンド群の総称です。もともとは個別のコマンドとして存在していましたが、現在では主に `nroff` や `troff` などの関連コマンドをまとめて指す言葉として使われます。また、GNUプロジェクトによる `groff` もroffの系譜に連なる実装として知られています。
概要
roffは、テキストファイルに整形用の要素を記述することで、ドキュメントを生成するツールです。その名前は、「to run off a copy(コピーを取り出す)」という言葉に由来します。roff自身は非常にシンプルな機能しか持ちませんが、マクロパッケージを組み合わせることで高度な文書を作成できます。この思想は、
UNIXのシステム記述言語である
C言語にも通じるものがあります。roffには変数や制御構造といった機能も備わっており、初期の
マークアップ言語とみなすこともできます。また、
チューリング完全性を持つことも特徴です。
歴史
roffの歴史は古く、初期の
UNIXから存在しています。その概念は
1960年代にまで遡り、
1961年に実演された
CTSSには「RUNOFF」という文書整形プログラムが存在していました。
UNIXの前身であるMulticsでは、このRUNOFFを参考にした「runoff」が開発され、文書整形やヘルプファイルの作成に用いられました。roffは、このrunoffを基にジョー・オサンナが
UNIX上で動作するように開発したものです。
最初のroffは
1973年にリリースされました。当初は
PDP-11アセンブラで記述されていましたが、
1975年には
C言語で書き直されたバージョンが登場しました。初期のroffには、`nroff`、`troff`、`roff` という3つのフォーマットプログラムが存在しました。このうち、`nroff` は画面表示用、`troff` は印刷文書用として使われ、`roff` はMulticsのrunoffの再実装としての位置づけでした。しかし、後のバージョンで `roff` コマンドは廃止され、現在では `roff` という言葉は `nroff` や `troff`、そしてそれらの派生ツールを包括する総称として使われています。
nroff
`nroff` は「new roff」の略で、roffで作成した文書を端末ディスプレイにテキストデータとして表示する際の書式を設定するためのコマンドです。ジョー・オサンナによって開発されました。`nroff` が最もよく使われる場面は、
UNIXの `man` コマンドです。`man` コマンドは、各コマンドの説明文書を画面に表示する機能ですが、各文書は `nroff` 形式で保存されています。`man` コマンドが実行されると、`nroff` によって整形された文書が
ページャを通して画面に出力される仕組みです。
`nroff` の主な機能としては、左揃え、右揃え、中央揃え、改ページ、改行、インデント、行の長さ指定、行送り指定、タイトル行指定、アンダーライン設定などがあります。
troff
`troff` は、主に写植機や
プリンターに文書を印刷する際の書式設定を行うroffです。当初はC/A/Tという写植機用の印刷データを生成する目的で開発され、その写植機特有のコマンドセットが多数定義されていました。初期のバージョンはジョー・オサンナを中心に開発が進められましたが、
1977年にオサンナが亡くなった後は、
ブライアン・カーニハンが開発を引き継ぎました。
1979年には、C/A/T以外のフォトタイプセットにも対応し、一般的なインターフェースを備えた大幅な改良が加えられました。
roffのプリプロセッサ
roffにおけるプリプロセッサとは、roffのフォーマットに変換するためのプログラムのことです。各プリプロセッサは独自の言語で記述されており、ファイルをプリプロセッサに通すことで、roffの形式に変換します。プリプロセッサで記述された部分は、roffの文書に埋め込み、プリプロセッサを通してroffに処理させます。プリプロセッサは、ファイルの内容から自分自身の記述と判断した部分のみを変換し、それ以外の部分は無視するため、複数のプリプロセッサの書式を同じファイル内に記述することも可能です。
以下に代表的なroffのプリプロセッサを挙げます。
eqn: 数式をroff形式に変換します。
tbl: 表を含む文書をroff形式に変換します。
pic: 図をroff文書に埋め込むためのプリプロセッサです。
refer:
参考文献を自動生成するプリプロセッサです(
LaTeXにおけるthebibliography環境に近い)。
関連項目
manページ
シェリー・パワーズ他著、『Unix パワーツール 第3版』、ドキュメントシステム訳、
オライリー・ジャパン、2003年、
ISBN 4-87311-142-0