Roff
From Wikipedia, the free encyclopedia
概要
歴史
roff の起源は古く最初期の UNIX から存在しており、概念に関しては1960年代にまでさかのぼる。1961年に初めて実演された CTSS に既に RUNOFF と呼ばれる文書整形プログラムが存在していた。UNIX の前身でもある Multics ではこの RUNOFF を参考にして runoff というプログラムを作成し、文書整形やヘルプファイルの記述に使用された。roff はこの runoff を参考にしてジョー・オサンナにより UNIX 上で動作するように開発されたものである。
1973年に最初の roff がリリースされた。このプログラムは PDP-11 アセンブラで記述されていたが、後にC言語で書き直されたバージョンが1975年にリリースされている。最初期の roff は3つのフォーマットプログラムを持ち、それぞれ nroff、troff、roff というコマンド名であった。この内 nroff は画面上での表示、troff は印刷文書上での表示形式であり roff というコマンドは Multics の runoff の再実装として開発されていた。しかし後のバージョンで roff コマンドは廃棄されており、現在では roff という単語は nroff、troff とこのシステムの派生作品を含めた総称として主に使われている。
nroff
nroff は new roff の略である。roff で作る文書を端末ディスプレイ等にテキストデータで表示する際の書式を設定する目的でジョー・オサンナにより開発された。nroff が最も使用される場面として UNIXの man コマンドが挙げられる。このコマンドは各コマンドの説明文書を画面上に呼び出す機能であるが、各文書は nroff 形式で保存されており、man コマンドが実行されると nroff によって整形されページャを通して画面に出力されるという動作が行われている。主なnroffコマンドの機能としては、左づめ、右づめ、中央揃え、ページ変え、改行、インデント、一行の長さ指定、指定行送り、タイトル行指定、アンダーライン設定などがある[1]。
troff
troff は主に写植機(あるいはプリンタ)に文書を印刷する際の書式設定を行う roff である。もともとは C/A/T という写植機用の印刷データを生成する目的で開発されており、この写植機上で使用する特有のコマンドセットが数多く定義されている。初期のバージョンはジョー・オサンナを中心に開発が行われていたが、1977年にジョー・オサンナが心臓麻痺で他界して後は主にブライアン・カーニハンが中心になって開発が継続された。1979年に C/A/T 以外のフォトタイプセットを扱えるようにしたり、一般的なインターフェイスを備えるなど大幅に改良を施したバージョンが発表された。
roff のプリプロセッサ
roff におけるプリプロセッサとは roff のフォーマットに変換し出力を生成するプログラムの事を指す。各プリプロセッサはそれぞれ独自の言語で策定されており、ファイルをプリプロセッサに通すと、roff のフォーマットに変換を行う。このような言語で記述された部分は一般に roff の文書に埋め込み、プリプロセッサを通してから roff に通すことで文書を作成する、ほとんどのプリプロセッサはファイルの内容の中で自分自身のものと判断した部分のみを抽出して変換を行い、それ以外の場所は無視するので命令等が一致しないなら複数のプリプロセッサの書式を同一ファイル内に記述することができる。以下に代表的な roff のプリプロセッサを挙げる。