20230605-roff排版系统的概念和历史

roff 是一系列排版程序,如troff nroff fitroff groff 等等的通称,一个roff 排版系统包含一个可扩展的文本格式化语言和一系列程序用以打印和转换为其他文本格式,传统的,它是unix 的主要文本处理系统,现在,每个类unix 操作系统仍然附带一个roff 系统作为核心软件包

roff 在文本设备上的输出效果仍然是无可比拟的,并且,与其他自由的排版系统相比,它的图形输出也不差, 甚至强于很多商业的系统

unix 的一个著名的来源,出现于1963,同时runoff 成为文档和文本处理的主要格式。

multics

这种语言的模型是根据 前计算机时代的排版习惯而建立的,那时,以点 dot 开头的行被写在手稿中,向之后进行手工排版工作得工人指示格式化的要求

所有现代的roff 系统都试图实现同这个系统兼容

最早的roff 系统有三个排版程序

troff 为它唯一支持的cat 排字机产生一个图形的输出

nroff 为终端和文本打印机产生合适的文本输出

roff 对最初的runoff 程序的有限功能进行重新实现,这个程序在后来的版本中被抛弃,现在,roff 这个名字只用来替代一个troff nroff 系统的整体

在一些系统上,这个设备无关的troff 有一个可执行文件叫做 ditroff ,所有现代的troff 程序都已经自动提供了对distroff 完整的兼容性

古老的unix 和传统的troff 的源代码在长达20年时间里不再可以自由获得

grodd 系统仍然在继续开发,它与传统 troff 兼容,但是还添加了很多扩展,它是第一个可以在几乎所有操作系统上运行的,roff 系统并且 它是自由开放的,这使得groff 成为现在 roff 的事实标准

使用 using roff

预处理器产生roff 代码,传给一个roff 处理器,例如,troff,然后roff 处理器接下来产生中间输出,传给一个后处理器程序,用来打印或者产生最终输出

预处理器 preprocessors

一些不能在所有系统上使用,还有一些预处理器被认为是roff 系统不可分割的部分,传统的预处理器有

tbl 制表

eqn 数学公式

pic 绘图

refer 书目索引

soelim 包含标准位置的宏文件

其他已知预处理器,但不是在所有系统上都可用

chem 化学公式

grap 构造图元

grn 插入 gremlin 图片

设备 后处理器

设备是类似打印机、字符或图形终端等的硬件接口,或者是用于转换为另一种字符或图形设备的软件接口

现在,操作系统为大多数类似打印机的硬件提供了设备驱动,因此不必为每个打印机写一个特殊的后处理器

roff 编程

roff 文档是加入了roff 排版元素的普通文档,roff 排版语言非常强大,它几乎是一个完整的程序语言,并且提供了扩充自身的元素,使用这些元素,就可以开发为特殊程序定制的宏包

宏包

一个包的宏定义保存在一个叫做 name.tmac 的文件中

文档中用到的宏包可以使用命令行选项 -m 提供给排版程序,参见 troff 它们也可以在文档中指定,使用roff 语言的包含文件命令,参见 groof

roff 语言是完整的编程语言,提供了命令,宏定义,转义序列,字符串变量,数字或数量寄存器,还有流程控制语句

文件扩展名

文件扩展名与 less 格式化工具结合,会非常好用,它提供了用单一的方式打开各种输入的可能性,方法是定义一个shell 环境变量lessopen,这种方法没有什么文档,这是一个例子

1
sh# LESSOPEN='|lesspipe %s'

lesspipe 可以是一个系统提供的命令或者是你自己的脚本

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~