1700436790
1700436791
每种字体都是一张印有字符图像的35毫米胶片,安装在一个快速旋转的轮子上。转轮能同时装载4种字体,每种字体102个字符,单次印刷任务可支持408个字符。当纸张和所需字符处于正确的位置时,照排机发射强光,透过胶片图像,照射到相纸上。它支持16种印刷尺寸。
1700436792
1700436793
照排机运转缓慢——想改印刷尺寸,就得转动机械式透镜塔。显影化学药品最令人不快,但输出质量高,可以制作出看上去很专业的文件。事实上,有几次贝尔实验室的作者投给期刊的论文被质疑:它看起来如此光洁,肯定已经发表过了。
1700436794
1700436795
为了驱动排版机,乔为Nroff写了个他称之为Troff的重要扩展。“T”代表排版机(typesetter),整个词念作“tee-roff”。Troff语言刁钻晦涩,只有很少人精通,但只要学会技巧、保持耐心,就能让它完成任何格式化任务。实际上,Troff是为特殊型号计算机设计的汇编语言,所以大多数人通过宏包来使用它。宏包封装了常用的格式化操作,如标题、章节标题、段落、编号列表等。宏成了一种底层Troff命令之上的高级语言。迈克尔·莱斯克是制作宏包的大师(他也写了被广泛使用的ms软件包),在我的圈子里,无人能及他善用Troff编程的技巧水平。
1700436796
1700436797
有了照排机,就能输出多种字体,字符之间距离合适,也有足量的特殊字符。这样一来,就到了用它来为图书和内部技术文档排版的时候了。第一本用照排机制作的书是我和比尔·普劳格在1974年写的《编程格调》。这本书很多地方排版粗糙,因为当时没有用于呈现代码的单倍行距字体,除此之外,尽如人意。
1700436798
1700436799
我和比尔自己排版,主要原因是传统出版流程常常误印计算机程序代码。从输入到准备印刷的整个流程尽在掌握,我们就能直接测试书中的程序,无须文字编辑和排版人员经手,最终得到基本上没有错误的编程书。这在当时极不寻常。从那以后,我一直照此办理,我的书都用Troff或其现代版本Groff制作。幸运的是,人们已不再需要照排机和昂贵又难用的印刷介质。今天,只要把所有的东西都正确地放在PDF文件中,然后发给出版商或印刷商就可以了。
1700436800
1700436801
3. Eqn和其他预处理器
1700436802
1700436803
1700436804
1700436805
1700436806
1700436807
贝尔实验室的作者们想要创建的文档不仅仅包含文本,还有其他形式的内容,其中最明显的是数学文本,还包括表格、图、书目引文等。原则上,Troff本身能够处理这些东西,但并不方便。因此,我们着手创建特殊用途的语言,使其更容易处理特定类型的技术性资料。实际上,这样的演变过程在传统编程语言中已经发生过,我们只是在文档编制领域重复一次而已。
1700436808
1700436809
这些特殊用途语言中的第一种是Eqn。Eqn是用于排版数学表达式的语言和程序,由洛琳达 · 彻丽(图5-7)和我于1974年编写。如人所愿,贝尔实验室制作了大量的技术文件,大部分供内部使用,其中许多文件充满数学内容。实验室有一批打字高手,他们能读懂手写的数学符号,并使用手动打字机将其打成可识别的形式,但这一过程非常耗时,而且编辑起来也很痛苦。
1700436810
1700436811
1700436812
1700436813
1700436814
图5-7 洛琳达·彻丽,约1981年(杰勒德·霍尔兹曼供图)
1700436815
1700436816
洛琳达一直在探索如何实现数学符号输出工具,而我希望有一种语言能像数学家朗读数学内容那样直观。我想,关于这种语言的想法根植于我的潜意识里,因为我还在读研时,就曾自愿加入“为盲人录音”(Recording for the Blind[7])项目,朗读技术书籍并录制下来。这项工作持续了好几年,所以我花了很多时间口述数学内容。
1700436817
1700436818
Eqn能很好地处理简单数学表达式。例如,级数求和:
1700436819
1700436820
1700436821
1700436822
1700436823
写作:
1700436824
1700436825
sum from i=0 to inf 1 over 2 sup i = 2
1700436826
1700436827
1700436828
1700436829
1700436830
1700436831
事实证明,数学打字员很容易学会Eqn,其他人也很容易学会,实践证明它比手工打字机快得多。这种语言非常简单,连物理学博士也能掌握。没过多久,人们就开始自己动手打字,不再依赖专业打字员。Eqn是启发高德纳(Don Knuth)开发TeX(1978)中数学模式的灵感之一。TeX已成为数学内容输入的标准。
1700436832
1700436833
Eqn是作为Troff的预处理器来实现的,通常用法是把Eqn的输出通过管道引入Troff中,就像这样:
1700436834
1700436835
eqn file | troff >typeset.output
1700436836
1700436837
1700436838
1700436839
[
上一页 ]
[ :1.70043679e+09 ]
[
下一页 ]