mots quotidiens.
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp by hns, version 2.10-pl1.

先月 2007年09月 来月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

2007年09月29日() [n年日記]

#1 jroff

CS研に移って普段の環境が Fedora Core 6 に変わったら, いつの間にか groff が日本語に対応しているのに気付いた。
roff は LaTeX が普及する以前にUnixで広く使われていた組版システムで, 今でも man ページはこれ(のマクロ)で書かれています。 The Unix Super Textに書いてある通り, roff は普通は日本語には対応して いないので日本では流行っていませんが, 結構roffで書かれた論文や書籍は 昔は多かったようで, たとえば僕の見る所, SICP はroffで組版されているのではないかと思う。
以下, 自分用のメモ代わりも含めて。

roffはNAISTの学生だった頃から気になっていたのですが, jgroffを自分でコンパイル して入れても, うまく動かなかったりしてこれまで諦めていた。
僕は手元の環境には特に入れた覚えがないのですが, たとえば次のようなファイル test.rf

.TL
roff 文書のテスト
.AU
持橋大地
NTTコミュニケーション科学基礎研究所
.AB
This is an abstract.
We typeset this text using a traditional UNIX program
.I roff.
.AE
.NH
Introduction
.PP
ここから本文。
.SH
他の例
.DS
(define (fact n)
  (if (= n 0) 1
      (* n (fact (- n 1)))))
.DE
を用意して,
% groff -Tnippon -ms test.rf
のように実行すると, デフォルトでは端末に下のように整形されます。 素晴らしい。

roff が LaTeX と違うところは, こうして端末にテキストとして整形することが できること。かつ, -Tps オプションを使うと, 綺麗に PostScript に出力する こともできます。

% groff -Tnippon -Tps -ms test.rf > test.ps
roff.pdf [4KB] (上のtest.pdfをPDFにしたもの)。
これでわかるように, 脚注やverbatim等も含めて, 簡単に非常に綺麗なタイプセットが 得られます。

・ マクロパッケージ

上では標準的なmsマクロパッケージ *1 を使って書いていますが, roffで問題になるのは, ほとんど身の周りに解説書が ない(&知っている人もほとんどいない) ことです。
"% man 7 roff" や "% man 7 groff_man" でman形式のマニュアルが見られますが, msマクロパッケージの標準的な文書は M.E.Lesk, "Typing Documents on the UNIX System: Using the -ms Macros with Troff and Nroff" のようで, これはベル研の "Unix Tenth Edition Manual"のページ から読むことができます [ps] [pdf]
他にも探していると, 何と troff.org というサイトを発見。 http://www.troff.org/papers.html から, マニュアル類をすべて読むことができます。素晴らしすぎ。

ちょっと面白かったのは, 上のページで最後の参考文献のフォーマットが, "%A Dale Dougherty" のようにBibtexとは違う簡単な形式になっていて, 高林君の scbib とそっくりだなあ, ということ。 S式で書くのも "%A"と書くのも本質的に同じで, 結局simple is bestなのね, という気がします。

・ その他リンク:


*1: -m** の部分がマクロパッケージの名前(例えば, -manは"an"マクロパッケージ) なので, "s"というのが正確かもしれない。

1 days displayed.
タイトル一覧
カテゴリ分類
 なかのひと
Powered by hns-2.10-pl1, HyperNikkiSystem Project