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

先月 2024年04月 来月
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年10月02日(火) [n年日記]

#1 jroff (2)

Kernighan(!) の書いた, "A TROFF Tutorial" [ps] をほぼ全部読んでみた。
"August 4, 1978" とあるので, 何とほぼ30年前の文章(!!)だが, 面白い。

troff はKernighanが書いているように, タイプセットのアセンブラのようなもの なのだと思う。 troff のコマンドは下のように, 必ず行頭の . から始まる小文字で, これをマクロ化したものが .TL や .NH のような大文字のマクロ。 これは TeX と LaTeX の関係に似ているが, troffはよりミニマリズムに徹して いて, .sp や .ft のようにコマンドが最小限なのが特徴。
実際, もし自分でタイプセットのプログラムを書け, と言われたら, まず確実にこういうコマンド体系を考えると思うので, それを完全なシステムに しているという意味でも貴重だと思う。 *1

実際に使えるかというと,

というところ。例えば, Σ(α×β)2→∞を(全角文字に頼らずに)組版するには,
\(*S(\(*a\(mu\(*b)\u\s-22\s0\d \(-> \(if
と書く必要がありますが, わかりにくいのと, 現代で使うような複雑な式は 恐らく不可能, という問題がありそうです。
またよく見ると, 時間が経っているだけあって, 普通の組版も微妙にTeXの方が 綺麗な気がします。 *2
まとめると, 組版とはどういうことをするかを知るという意味で, 教養として 知っておく価値はありそう, ということ。 それより, Kernighanが書いた上の文書と 同じ時期(1978年9月)のSIGNLの報告 が平然と手書きだったりする(例えばこれ [pdf] ) ことを考えると, 30年前にこれだけの品質の印刷を, 研究所のUnix上では個人で可能だったことが奇跡的な気がします。
また, まず普通に考えそうなこういうシステムを踏まえた上で TeX や LaTeX があると 考えると, TeX の綺麗でない仕様も, 仕方がないと思えてくるかも。
これで最後に残っていた, man のソースを見た時の .SH や .PP の謎が解けて, すっきりしました。
これはLispが理解できて, .emacs に含まれる cons や append を自由に使える ようになった時の感覚に似ているような気がします。

ソース: % groff -ms -Tps alice.rf > alice.ps
.ps 12
.DS C
.ps +2
.ft B
Alice in Wonderland
.ft
.sp 0.4
Lewis Carroll
.ps -2
.DE
.sp -2.5

.ps 12
.vs 13p

.in +0.6i
.ll -0.3i
.ti -0.4i

\v'1'\s36A\s0\v'-1'
lice was beginning to get very tired of sitting by her sister
on the bank, and of having nothing to do:  once or twice she had
peeped into the book her 
.in -0.4i
sister was reading, but it had no
pictures or conversations in it, `and what is the use of a book,'
thought Alice `without pictures or conversation?'
.sp
  So she was considering in her own mind (as well as she could,
...

*1: こういうシンプルな体系のもう一つの特徴として, (La)TeXと違って, awkやsed等による外部の自動処理が簡潔に書ける点があると思います。 TeXの場合は必ずしもコマンドが行頭に来るわけではなく, 形も自由なので, 一般に特別なパーサを書く必要がありそうです。
*2: 他にも troff の場合はTeXと違い, 明示的に fi などのリガチャを指定しないと いけなかったりするようです。

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