Roff
nroff は new roff の略である。roff で作る文書を端末ディスプレイ等にテキストデータで表示する際の書式を設定する目的でジョー・オサンナにより開発された。nroff が最も使用される場面として UNIXの man コマンドが挙げられる。このコマンドは各コマンドの説明文書を画面上に呼び出す機能であるが、各文書は nroff 形式で保存されており、man コマンドが実行されると nroff によって整形されページャを通して画面に出力されるという動作が行われている。主なnroffコマンドの機能としては、左づめ、右づめ、中央揃え、ページ変え、改行、インデント、一行の長さ指定、指定行送り、タイトル行指定、アンダーライン設定などがある。
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 とこのシステムの派生作品を含めた総称として主に使われている。
roff 形式の文書に図を埋め込むプリプロセッサ。