Troffとは何? わかりやすく解説 Weblio辞書 (original) (raw)

この記事には複数の問題があります改善やノートページでの議論にご協力ください。出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2021年9月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2021年9月) ほとんどまたは完全に一つの出典に頼っています。(2021年9月)出典検索?: "Roff"ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL

roff とは UNIX に於ける文書整形を行うコマンド、ただし今日ではこの名称のコマンドは廃棄されており、主に troff、nroff の総称として使われる。また GNU による groff がある。

概要

roff とは文書の整形、清書を行うコマンドである。roff の名称の由来は「to run off a copy(コピーを取り出す)」の略である。

roff は通常のテキストファイルに整形用要素を加えたファイルを読み込み、ドキュメントを生成する。roff 自身の基本機能は非常に単純であるが幾つかの機能を組み合わせたマクロパッケージを生成することが出来る。この考え方は UNIX のシステム記述言語でもあるC言語などの考え方とも共通する。roff の機能には変数、制御構造といったものも存在するため最初期のマークアップ言語ということもできる。チューリング完全性を備えている。

歴史

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 のプリプロセッサを挙げる。

eqn

数式を roff 形式のフォーマットに変換する。

tbl

表を含む文書を roff 形式のフォーマットに変換する。

pic

roff 形式の文書に図を埋め込むプリプロセッサ。

refer

roff の文書に参考文献の部分を自動生成するプリプロセッサ(LaTeX における thebibliography 環境に近い)。

脚注

[脚注の使い方]

  1. ^ 井田昌之『ワークステーションシリーズ UNIX詳説-基礎編-』丸善株式会社、1984年10月30日、177-182頁。ISBN 4-621-02938-X

関連項目

参考文献

この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めていますPJ:コンピュータ/P:コンピュータ)。
マークアップ言語
オフィススイート・文書 CDF OOXML ODF UOF DocBook RTF Texinfo
Web cHTML FHTML(英語版HDML HTML WML WapTV(英語版XHTML
組版 TeX ConTeXt LaTeX SATySFi
軽量 AsciiDoc Markdown POD reStructuredText Re:VIEW Wiki
データ記述 TEI TOML XAML YAML
その他の言語 AmigaGuide(英語版) CML(英語版)(化学) Crossmark(英語版DITA eLML(英語版) EAD(英語版) Enriched text(英語版)(電子メール) GuideML(英語版) HyTime(英語版) IPF(英語版LilyPond(楽譜) LinuxDoc(英語版) Lout(英語版) MIF(英語版) MAML(英語版MathML MEI(英語版MusicXML OMDoc(英語版) OpenMath(英語版)(数式) RTML(英語版) RFT(英語版) S1000D(英語版troff
Unixコマンド
ファイルとファイルシステム管理 cat chattr(英語版chmod chown chgrp cksum cmp cp dd du df(英語版file fsck fuser(英語版ln ls lsof mkdir mount mv pax pwd rm rmdir size split tee touch type(英語版) umask(英語版
プロセス管理 at bg chroot cron fg kill killall nice pgrep pidof pkill ps pstree(英語版reboot shutdown time top
ユーザ管理/環境 clear env exit finger history(英語版id logname(英語版mesg passwd su sudo uptime talk tput(英語版uname w wall who whoami write
テキスト処理 awk banner basename comm(英語版) csplit(英語版cut diff dirname ed ex(英語版fmt fold(英語版head iconv join(英語版less m4 more nkf nl paste(英語版patch printf(英語版) read(英語版sed sort spell(英語版strings tail tr troff uniq vi wc xargs yes
シェルビルトイン alias cd echo test(英語版unset wait
通信 dig host(英語版ifconfig inetd ip (iproute2) netcat netstat nslookup ping rdate(英語版rlogin route ssh traceroute
検索 find grep locate(英語版) whatis(英語版) whereis(英語版
マニュアル apropos(英語版) help(英語版man
ソフトウェア開発 ar ctags lex make nm strip(英語版yacc
その他 bc dc cal date expr false lp(英語版lpr od sl sleep stty true tty
Category:UNIXのソフトウェア UNIXユーティリティの一覧