Man page - roff(7)

Packages contains this manual

Available languages:

en ja zh_TW zh_CN

Manual

ROFF

NAME
描 述 DESCRIPTION
历 史 HISTORY
祖 先 The Predecessor runoff
传 统 的 nroff/troff 系 统 The Classical nroff/troff System
商 业 化 Commercialization
自 由 的 Free roff
使 用 USING ROFF
管 道 The roff Pipe
预 处 理 器 Preprocessors
排 版 程 序 Formatter Programs
设 备 后 处 理 器 Devices and Postprocessors
roff 编 程 ROFF PROGRAMMING
宏 包 Macro Packages
roff 排 版 语 言 The roff Formatting Language
文 件 扩 展 名 FILE NAME EXTENSIONS
编 辑 EDITING ROFF
BUGS
参 见 SEE ALSO
Internet sites
历 史 文 档 Historical roff Documentation
手 册 页 Manual Pages
作 者 AUTHORS
[中 文 版 维 护 人 ]
[中 文 版 最 新 更 新 ]
《 中 国 linux论 坛 man手 册 翻 译 计 划 》 :


NAME

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

描 述 DESCRIPTION

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

当 今 最 普 遍 的 roff 系 统 是 自 由 软 件 的 实 现 GNU roff , groff (1). groff 之 前 的 实 现 被 称 为 传 统 的 classical 实 现 (从 1973 年 开 始 )。 groff 实 现 了 它 的 传 统 的 前 辈 的 用 法 和 功 能 , 并 且 加 入 了 更 多 扩 展 。 当 前 , 由 于 groff 是 唯 一 可 以 在 (几 乎 是 ) 任 何 计 算 机 系 统 上 都 可 用 的 roff 系 统 , 因 此 它 是 事 实 上 的 roff 标 准 。

在 一 些 古 老 的 Unix 系 统 中 , 有 一 个 叫 做 roff 的 可 执 行 文 件 , 实 现 了 甚 至 更 加 古 老 的 Multics 操 作 系 统 中 的 runoff 。 参 见 HISTORY 段 落 。 它 的 功 能 非 常 有 限 , 即 使 与 古 老 的 troff 相 比 ; 它 不 再 被 支 持 了 。 因 此 , 在 本 文 档 中 , roff 总 是 泛 指 roff 系 统 roff system , 不 是 古 老 的 roff 可 执 行 文 件

尽 管 历 史 悠 久 , roff 当 前 还 在 广 泛 使 用 中 , 例 如 , UNIX 系 统 的 手 册 页 ( man pages ) , 很 多 软 件 书 籍 , 系 统 文 档 , 标 准 和 团 体 组 织 的 文 档 都 是 用 roff 来 写 的 。 roff 在 文 本 设 备 上 的 输 出 效 果 仍 然 是 无 可 比 拟 的 , 并 且 , 与 其 他 自 由 的 排 版 系 统 相 比 , 它 的 图 形 输 出 也 不 差 , 甚 至 强 于 很 多 商 业 的 系 统

最 普 遍 的 roff 的 应 用 是 手 册 页 manual pages (简 称 man pages ) ; 它 是 很 多 操 作 系 统 中 的 标 准 文 档 系 统

此 文 档 描 述 了 围 绕 roff system 开 发 的 一 些 历 史 事 件 ; 所 有 roff 版 本 在 用 法 方 面 的 一 些 共 同 点 , roff 管 道 的 细 节 - - 它 经 常 被 掩 盖 在 类 似 groff (1) 等 等 的 “前 端 ” 之 后 ; 对 排 版 语 言 的 一 般 的 概 述 ; 一 些 写 roff 文 档 的 技 巧 ; 还 有 到 更 多 资 料 的 链 接

历 史 HISTORY

roff 文 本 处 理 系 统 有 很 长 的 一 段 历 史 , 可 以 回 溯 到 60 年 代 。 roff 系 统 自 身 与 Unix 操 作 系 统 关 系 密 切 , 但 是 它 的 起 源 要 从 更 早 的 操 作 系 统 CTSS 和 Multics 开 始 。

祖 先 The Predecessor runoff

roff 系 统 的 演 变 与 操 作 系 统 的 历 史 紧 密 联 系 。 它 的 “先 祖 ” runoff Jerry Saltzer CTSS 操 作 系 统 ( Compatible Time Sharing System , 兼 容 分 时 系 统 (?), 1961) 上 的 作 品 。 CTTS 后 来 发 展 成 为 操 作 系 统 Multics , Unix 的 一 个 著 名 的 来 源 , 出 现 于 1963, 同 时 runoff 成 为 文 档 和 文 本 处 理 的 主 要 格 式 。 当 时 , 这 两 种 操 作 系 统 只 能 运 行 在 非 常 昂 贵 的 计 算 机 之 上 , 因 此 它 们 大 部 分 用 于 研 究 和 官 方 及 军 队 的 任 务 之 中

与 现 代 的 roff 相 比 , runoff 语 言 可 以 做 的 事 非 常 有 限 。 在 60 年 代 , 只 能 产 生 文 本 的 输 出 。 这 可 以 用 一 个 长 度 为  2 的 命 令 (request) 的 集 合 实 现 , 这 些 命 令 的 绝 大 部 分 都 保 持 不 变 地 被 roff 采 用 。 这 种 语 言 的 模 型 是 根 据 “前 计 算 机 时 代 ” 的 排 版 习 惯 而 建 立 的 , 那 时 , 以 点 (dot, ‘.’) 开 头 的 行 被 写 在 手 稿 中 , 向 之 后 进 行 手 工 排 版 工 作 的 工 人 指 示 格 式 化 的 要 求

开 始 , runoff 程 序 是 用 PL/1 语 言 写 成 的 , 后 来 用 BCPL 来 写 - - 那 是 C 编 程 语 言 的 “祖 母 ”。 在 Multics 操 作 系 统 中 , 帮 助 系 统 由 runoff 来 处 理 , 与 roff 管 理 Unix 手 册 页 的 作 用 类 似 。 仍 然 有 runoff 语 言 写 成 的 文 档 , 例 如 可 以 到 Saltzer 的 主 页 看 看 。 参 见 SEE ALSO

传 统 的 nroff/troff 系 统 The Classical nroff/troff System

在 70 年 代 , Multics 的 后 裔 (offspring) Unix 变 得 越 来 越 普 遍 , 因 为 它 可 以 运 行 在 廉 价 的 计 算 机 上 , 并 且 那 时 在 大 学 里 可 以 很 容 易 地 获 得 。 在 MIT (麻 省 理 工 , the Massachusetts Institute of Technology), 有 人 想 在 一 台 运 行 Unix 的 PDP-11 计 算 机 上 驱 动 Wang (王 安 公 司 ?) 的 Graphic Systems CAT 排 字 机 , 一 种 图 形 化 的 输 出 设 备 。 由 于 runoff 在 这 种 任 务 上 能 力 有 限 , 它 被 Josef F. Osanna , (Multics 操 作 系 统 的 主 要 开 发 者 之 一 , 几 个 runoff 移 植 系 统 的 作 者 ) 继 续 开 发 , 成 为 一 种 更 强 大 的 文 本 排 版 系 统

runoff 这 个 名 字 被 简 化 为 roff . Ocsanna 所 设 想 的 , 极 大 扩 展 了 的 语 言 已 经 包 含 了 一 个 完 整 的 roff 系 统 的 所 有 元 素 。 所 有 现 代 的 roff 系 统 都 试 图 实 现 同 这 个 系 统 兼 容 。 因 此 Joe Osanna 是 当 之 无 愧 的 所 有 roff 系 统 之 父

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

troff

( typesetter roff ) 为 它 唯 一 支 持 的 CAT 排 字 机 产 生 一 个 图 形 的 输 出

nroff

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

roff

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

Osanna 的 第 一 版 用 PDP-11 的 汇 编 语 言 实 现 , 发 布 于 1973. Brian Kernighan 加 入 到 roff 的 开 发 中 , 使 用 C 编 程 语 言 将 它 进 行 了 重 写 。 C 版 本 发 布 于 1975.

nroff / troff 程 序 使 用 的 排 版 语 言 的 语 法 记 载 在 著 名 的 Troff User’s Manual [CSTR #54] 中 , 出 版 于 1976, Brian Kernighan 对 它 不 断 修 订 , 直 到 1992 年 。 此 文 档 是 对 传 统 的 classical troff 的 说 明 . 所 有 后 来 的 roff 系 统 都 试 着 与 这 个 说 明 实 现 兼 容

1977 年 , Osanna 在 他  50 岁 时 , 由 于 一 次 突 发 的 心 脏 病 而 去 世 。 Kernighan 继 续 开 发 troff。 下 一 个 开 发 目 标 是 赋 予 troff 一 个 更 一 般 的 接 口 , 以 支 持 更 多 设 备 , 中 间 输 出 格 式 和 “后 处 理 ” 系 统 。 这 使 得 roff 系 统 的 结 构 趋 于 完 整 , 现 在 仍 然 被 使 用 。 参 见 USING ROFF 段 。 1979 年 , 它 们 被 写 入 论 文 [CSTR #97] . 这 个 新 的 troff 版 本 是 所 有 现 存 的 较 新 的 troff 系 统 的 基 础 , 包 括 groff . 在 一 些 系 统 上 , 这 个 设 备 无 关 的 troff 有 一 个 可 执 行 文 件 叫 做 ditroff (7). 所 有 现 代 的 troff 程 序 都 已 经 自 动 提 供 了 对 distroff 完 整 的 兼 容 性

商 业 化 Commercialization

免 费 的 Unix 7 操 作 系 统 商 业 化 之 后 , 出 现 了 严 重 的 退 步 。 一 大 批 不 同 的 操 作 系 统 浮 出 水 面 , 为 他 们 所 作 的 扩 展 间 的 互 不 兼 容 而 争 斗 。 幸 好 , 这 种 不 兼 容 没 有 影 响 到 原 始 的 troff。 所 有 不 同 的 商 业 版 本 的 roff 系 统 都 大 量 使 用 了 Osanna/Kernighan 的 开 放 的 源 代 码 和 文 档 , 但 是 却 将 其 作 为 它 们 的 系 统 (“their” system) 出 售 — 只 有 很 少 的 修 改

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

幸 运 的 是 , Caldera 收 购 了 SCO UNIX (2001). 随 后 , Caldera 使 得 源 代 码 可 以 在 网 上 获 得 , 允 许 用 于 非 商 业 用 途 。 参 见 SEE ALSO

(译 注 : 谁 能 想 到 , 现 在 , 2003 年 , SCO会 成 为 自 由 软 件 和 开 源 软 件 界 共 同 的 敌 人 呢 ? 而 Caldera 又 在 什 么 地 方 呢 ? )

自 由 的 Free roff

任 何 商 业 的 roff 系 统 都 无 法 成 为 roff 开 发 中 的 后 继 者 。 商 业 社 会 中 的 每 个 人 都 只 对 他 们 自 己 的 事 情 感 兴 趣 。 这 使 得 曾 经 如 此 优 秀 的 Unix 操 作 系 统 在 80 年 代 一 蹶 不 振

作 为 对 如 此 快 速 的 商 业 化 过 程 的 补 救 (As a counter-measure to the galopping commercialization, 还 请 重 新 翻 译 ), AT&T Bell Labs 贝 尔 实 验 室 试 图 发 起 一 个 恢 复 性 的 项 目 (? , a rescue project) , 使 用 他 们 的 Plan 9 操 作 系 统 。 它 可 以 免 费 用 于 非 商 业 用 途 , 甚 至 包 含 了 源 代 码 。 但 是 它 有 一 个 专 利 许 可 证 , that empedes the free development ( 还 请 解 释 词 义 )。 这 种 想 法 早 已 过 时 , 因 此 Plan 9 没 有 被 主 流 开 发 者 接 受 为 自 己 的 平 台

真 正 的 补 救 措 施 (? , remedy) 是 不 断 出 现 的 自 由 操 作 系 统 (386BSD, GNU/ Linux, 等 等 .) 和 80 年 代 到 90 年 代 的 自 由 软 件 工 程 。 他 们 实 现 了 传 统 的 Unix 的 特 性 和 很 多 扩 展 , 因 此 旧 的 “XP体 验 ” 不 会 丢 掉 (such that the old experience is not lost)。 进 入 21 世 纪 , 类 Unix 系 统 重 新 成 为 计 算 机 工 业 中 的 主 导 因 素 — 这 要 感 谢 自 由 软 件

最 重 要 的 自 由 roff 计 划 是 GNU 移 植 版 本 的 troff, 由 James Clark 建 立 , 使 用 GNU Public License . 它 叫 做 groff ( GNU roff ). 参 见 groff (1) 中 的 概 述

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

使 用 USING ROFF

很 多 人 不 会 注 意 到 他 们 在 使 用 roff。 当 你 阅 读 一 份 手 册 页 (man page) 时 , roff 工 作 在 后 台 。 roff 文 档 可 以 使 用 xditview (1x) 程 序 查 看 , 它 是 一 个 X 发 行 版 的 标 准 程 序 。 参 见 X (7x). 但 是 显 式 地 使 用 roff 也 不 困 难

一 些 roff 实 现 提 供 了 包 装 程 序 , 使 得 人 们 可 以 简 单 地 在 命 令 行 使 用 roff 系 统 。 例 如 , GNU 的 roff 实 现 groff (1) 提 供 了 命 令 行 选 项 来 避 免 传 统 troff 中 过 长 的 的 命 令 管 道 ; grog (1) 程 序 试 着 从 文 档 猜 测 应 当 使 用 什 么 参 数 来 运 行 groff; 不 习 惯 于 指 定 命 令 行 选 项 的 人 应 当 用 groffer (1) 程 序 来 图 形 化 地 显 示 groff 文 件 和 手 册 页

管 道 The roff Pipe

roff 系 统 由 预 处 理 器 (preprocessor), roff 排 版 程 序 和 后 处 理 器 (postprocessor) 组 成 。 这 种 结 构 使 用 了 大 量 的 管 道 piping 机 制 , 意 思 是 , 一 系 列 的 程 序 陆 续 地 被 调 用 , 队 列 中 的 每 个 程 序 的 输 出 就 作 为 下 一 个 程 序 的 输 入

sh# cat file | ... | preproc | ... | troff options | postproc

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

所 有 这 些 组 件 都 使 用 它 们 自 己 的 程 序 语 言 ; 每 种 语 言 是 与 其 他 组 件 完 全 无 关 的 。 此 外 , 还 可 以 包 括 为 特 殊 目 标 而 制 作 (tailor) 的 roff 宏 包

大 多 数 roff 文 档 中 掺 杂 着 使 用 一 些 包 中 的 宏 、 一 个 或 多 个 预 处 理 器 的 代 码 , 还 会 添 加 roff 语 言 中 的 一 些 元 素 。 用 户 很 少 需 要 用 到 roff 排 版 语 言 的 完 整 功 能 ; 只 有 宏 包 的 作 者 需 要 知 道 底 层 细 节 (gory details)

预 处 理 器 Preprocessors

预 处 理 器 是 任 何 产 生 符 合 roff 排 版 语 言 语 法 的 输 出 的 程 序 。 每 个 预 处 理 器 都 有 它 自 己 的 语 言 , 在 预 处 理 器 运 行 时 被 翻 译 为 roff 代 码 。 roff 文 档 中 可 以 包 含 以 这 种 语 言 写 成 的 片 段 ; 它 们 可 以 被 特 殊 的 roff 命 令 或 宏 识 别 (they are identified by special roff requests or macros)。 加 入 了 预 处 理 器 代 码 的 文 档 必 须 通 过 所 有 相 应 的 预 处 理 器 处 理 之 后 , 才 能 传 给 真 正 的 roff 排 版 程 序 , 因 为 真 正 的 roff 排 版 程 序 会 忽 略 所 有 陌 生 的 代 码 。 预 处 理 器 只 会 分 析 并 转 换 指 定 由 它 处 理 的 文 档 部 分

有 大 量 的 自 由 /商 业 roff 预 处 理 器 。 一 些 不 能 在 所 有 系 统 上 使 用 , 还 有 一 些 预 处 理 器 被 认 为 是 roff 系 统 不 可 分 割 的 部 分 。 传 统 的 预 处 理 器 有

tbl

制 表 (table)

eqn

数 学 公 式 (mathematical formulæ)

pic

绘 图 (diagram)

refer

书 目 索 引 (bibliographic references)

soelim

包 含 标 准 位 置 的 宏 文 件 (macro)

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

chem

化 学 公 式 (chemical formulæ)

grap

构 造 图 元 (graphical elements)

grn

插 入 gremlin (1) 图 片

排 版 程 序 Formatter Programs

A roff formatter 排 版 程 序 是 一 个 解 释 用 roff 排 版 语 言 或 roff 宏 包 写 成 的 文 档 的 程 序 。 它 产 生 中 间 结 果 intermediate output , 将 送 入 单 一 设 备 后 处 理 器 。 后 处 理 器 必 须 在 排 版 程 序 的 命 令 行 选 项 中 指 定 。 文 档 必 须 已 经 通 过 了 所 有 需 要 的 预 处 理 器 处 理

roff 排 版 程 序 的 输 出 以 另 外 一 种 语 言 表 示 : intermediate output format troff output . 这 种 语 言 最 初 详 述 在 [CSTR #97] 中 ; 它 的 GNU 扩 展 记 载 在 groff_out (5) 中 。 中 间 输 出 语 言 与 高 级 的 roff 语 言 相 比 像 一 种 汇 编 指 令 语 言 。 产 生 的 中 间 输 出 是 为 一 种 特 定 的 设 备 优 化 过 的 , 但 是 对 于 所 有 设 备 , 这 种 语 言 都 适 用

roff 排 版 程 序 是 整 个 roff 系 统 的 核 心 。 传 统 roff 有 两 个 排 版 程 序 : 对 应 字 符 设 备 的 nroff 和 对 应 图 形 设 备 的 troff

通 常 , troff 这 个 名 字 泛 指 这 两 种 排 版 程 序 (is used as a general term to refer to both formatters)。

设 备 后 处 理 器 Devices and Postprocessors

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

后 处 理 器 是 将 troff 输 出 转 化 为 一 种 适 于 某 种 特 殊 设 备 的 格 式 的 程 序 。 对 于 输 出 目 标 来 说 , roff 后 处 理 器 像 是 它 们 的 设 备 驱 动

每 种 设 备 都 有 为 其 优 化 的 后 处 理 器 程 序 。 . 后 处 理 器 解 释 中 间 输 出 , 产 生 设 备 相 关 的 代 码 , 传 送 给 设 备

设 备 名 和 后 处 理 器 程 序 的 名 称 是 不 固 定 的 , 因 为 它 们 依 赖 于 计 算 机 的 软 硬 件 的 能 力 。 例 如 , [CSTR #54] 中 提 到 的 传 统 的 设 备 名 已 经 有 了 极 大 的 改 变 。 旧 的 硬 件 不 再 存 在 , 旧 的 图 形 转 换 程 序 与 现 代 同 等 功 能 的 程 序 相 比 太 不 精 确 了

例 如 , Postscript 设 备 post 在 传 统 troff 中 分 辨 率 是 720, 而 groff 的 ps 设 备 是 72000, 提 高 了 100 倍

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

roff 编 程 ROFF PROGRAMMING

roff 文 档 是 加 入 了 roff 排 版 元 素 的 普 通 文 档 。 roff 排 版 语 言 非 常 强 大 ; 它 几 乎 是 一 个 完 整 的 程 序 语 言 , 并 且 提 供 了 扩 充 自 身 的 元 素 。 使 用 这 些 元 素 , 就 可 以 开 发 为 特 殊 程 序 定 制 的 宏 包 。 这 样 的 宏 包 比 普 通 的 roff 要 容 易 上 手 得 多 。 所 以 大 多 数 人 会 选 择 一 中 宏 包 , 不 用 去 关 心 roff 语 言 的 内 部 实 现

宏 包 Macro Packages

宏 包 是 一 些 适 于 以 便 利 的 办 法 格 式 化 某 种 特 殊 文 档 的 宏 的 集 合 。 它 们 简 化 了 roff 的 使 用 。 一 个 包 的 宏 定 义 保 存 在 一 个 叫 做 name .tmac 的 文 件 中 (传 统 的 命 名 是 tmac. name ). 所 有 tmac 文 件 保 存 在 标 准 位 置 的 一 个 或 多 个 目 录 中 。 有 关 宏 包 的 命 名 和 位 置 的 细 节 可 以 看 groff_tmac (5).

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

著 名 的 传 统 宏 包 有 man 用 来 处 理 传 统 手 册 页 mdoc 处 理 BSD 样 式 的 手 册 页 ; 此 类 书 籍 、 文 档 和 信 件 的 宏 集 合 是 me (命 名 也 许 是 根 据 它 的 创 造 者 之 名 Eric Allman 而 来 ), ms (命 名 来 自 Manuscript Macros ), 还 有 mm (命 名 来 自 Memorandum Macros ).

roff 排 版 语 言 The roff Formatting Language

传 统 的 roff 排 版 语 言 记 述 在 troff 用 户 手 册 Troff User’s Manual [CSTR #54] 中 . roff 语 言 是 完 整 的 编 程 语 言 , 提 供 了 命 令 (request), 宏 定 义 , 转 义 序 列 (escape sequence), 字 符 串 变 量 , 数 字 或 数 量 寄 存 器 (number or size registers), 还 有 流 程 控 制 语 句

Requests “命 令 ” 是 预 定 义 的 基 础 的 排 版 命 令 , 与 shell 提 示 下 的 命 令 类 似 。 用 户 可 以 定 义 类 似 “命 令 ” 的 元 素 , 使 用 roff 的 “预 定 义 ” 元 素 。 用 户 定 义 的 命 令 就 被 叫 做 “宏 ” macros . 文 档 作 者 不 会 体 会 到 命 令 和 宏 之 间 用 法 的 任 何 区 别 ; 它 们 都 写 在 一 行 中 , 并 以 一 个 点 (dot, ‘.’) 开 始

Escape sequences “转 义 序 列 ” 是 以 反 斜 杠 (backslash, ‘ \ ’. ) 开 始 的 roff 元 素 。 它 们 可 以 被 插 入 到 任 何 地 方 , 包 括 文 本 的 一 行 中 间 。 它 们 用 来 实 现 不 同 的 功 能 , 可 以 使 用 \( 插 入 非 ASCII 字 符 , 使 用 \f 改 变 字 体 , 使 用 \" 插 入 行 内 注 释 , 它 们 也 可 以 转 义 特 殊 的 控 制 字 符 , 像 这 样 \\ , 还 有 很 多 很 多 其 他 的 功 能

Strings “字 符 串 ” 是 存 储 一 个 字 符 串 的 变 量 。 字 符 串 以 .ds 命 令 存 储 。 存 储 的 字 符 串 可 以 用 \* 转 义 序 列 获 得

Registers “寄 存 器 ” 存 储 数 字 和 数 量 。 寄 存 器 可 以 用 .nr 命 令 设 置 , 然 后 用 控 制 序 列 \n 来 获 得 它 的 值

文 件 扩 展 名 FILE NAME EXTENSIONS

手 册 页 使 用 章 节 号 作 为 文 件 扩 展 名 , 例 如 本 文 档 的 文 件 名 是 roff.7 , 也 就 是 说 它 放 在 手 册 页 的 第  7 章

传 统 的 宏 包 使 用 包 名 称 作 为 文 件 扩 展 名 , 例 如 file. me 意 思 是 使 用 了 me 宏 包 的 文 件 , file. mm 使 用 了 宏 包 mm , file. ms 用 的 是 ms , file. pic 则 是 pic 等 等

但 是 没 有 roff 文 档 统 一 的 命 名 方 式 , 尽 管 file. tr 用 于 troff file 在 现 在 和 当 时 都 是 一 样 的 也 许 应 当 有 roff 文 件 扩 展 名 的 一 个 标 准

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

sh# LESSOPEN=’|lesspipe %s’

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

编 辑 EDITING ROFF

最 好 的 roff 文 档 编 辑 器 是 Emacs, 参 见 emacs (1). 它 提 供 了 nroff 模 式 , 适 于 所 有 种 类 的 roff “方 言 ”。 可 以 用 下 面 的 命 令 来 激 活 这 种 模 式

当 用 Emacs 编 辑 文 档 时 可 以 输 入 ‘ M-x nroff-mode ’ 来 改 变 模 式 , 这 里 M-x 意 思 是 按 住 Meta 键 (或 Alt ) 同 时 点 一 下 x

也 可 以 在 编 辑 器 加 载 文 件 的 时 候 , 自 动 改 变 模 式

最 好 的 办 法 是 将 下 面 三 行 注 释 包 含 在 文 件 末 尾

.\" Local Variables:
.\" mode: nroff
.\" End:

有 一 系 列 的 文 件 扩 展 名 , 例 如 手 册 页 的 扩 展 名 , 会 自 动 触 发 nroff 模 式

理 论 上 , 可 以 将 下 面 的 序 列

.\" -*- nroff -*-

作 为 文 件 的 第 一 行 , 也 可 以 使 emacs 在 加 载 文 件 时 启 用 nroff 模 式 。 不 幸 的 是 , 一 些 程 序 例 如 man 在 这 种 方 法 中 会 出 错 ; 因 此 请 不 要 用 它

所 有 的 roff 排 版 程 序 都 提 供 了 自 动 的 断 行 以 及 水 平 和 竖 直 间 距 。 为 了 不 干 扰 它 的 功 能 , 应 当 注 意 以 下 几 点 :

不 要 在 roff 文 档 中 包 含 空 行 或 只 包 含 空 格 的 行 , 而 是 使 用 “空 行 ”命 令 (一 行 中 只 包 含 一 个 点 ), 或 者 一 行 注 释 .\" (如 果 需 要 一 个 构 造 元 素 的 话 )

不 要 在 行 首 用 空 格 , 因 为 这 会 导 致 不 可 预 测 的 行 为 。 段 落 缩 进 可 以 以 受 控 的 方 式 , 用 roff 命 令 构 造 出 来

每 句 话 应 当 放 到 自 己 的 一 行 中 , 因 为 句 号 后 面 的 空 格 的 处 理 方 法 是 根 据 它 结 束 的 是 短 语 还 是 句 子 而 不 同 的 。 要 区 别 这 两 种 情 况 , 在 每 句 话 后 面 加 上 一 个 换 行

另 外 要 使 用 Emacs 的 auto-fill 模 式 的 话 , 最 好 在 每 句 话 后 面 添 加 一 个 空 的 roff 命 令 (一 行 中 只 包 含 一 个 点 )

下 面 的 例 子 显 示 了 最 佳 的 roff 编 辑 习 惯 是 怎 样 的

这 是 一 个 roff 文 档 的 例 子 .
.
这 是 同 一 段 中 的 下 一 句 .
.
这 是 下 一 个 句 子 , 它 比 较 长 , 分 成 了 多
行 ; 类 似 ‘cf.’ 这 样 的 短 语 可 以 很 容 易 地
识 别 , 因 为 其 中 的 “点 ”后 面 没 有 换 行 .
.
(在 输 出 时 , 它 们 仍 会 在 同 一 段 中 .)
.
(译 注 : 如 果 使 用 中 文 的 标 点 “。 ”就 不 用 考 虑 这 些 ,
但 是 每 句 话 后 面 换 行 总 是 个 好 主 意 。 少 用 ‘.’ 为 妙 )

除 了 Emacs, 其 他 一 些 编 辑 器 也 提 供 了 nroff 格 式 文 件 的 支 持 , 例 如 vim (1), 它 是 vi (1) 程 序 的 扩 展

BUGS

UNIX® 是 Open Group 的 注 册 商 标 。 但 是 在 Caldera 在 2001 年 收 购 SCO UNIX 之 后 , 事 情 发 生 了 极 大 的 好 转

(译 注 : 为 什 么 2003 年 SCO 又 会 成 为 M$ 的 走 狗 呢 ?)

参 见 SEE ALSO

有 大 量 的 讲 述 roff 的 文 档 。 讲 述 传 统 troff 的 原 始 文 档 仍 可 获 得 , groff 的 所 有 方 面 也 都 详 细 地 记 录 在 文 档 中

Internet sites

troff.org

“历史上的 troff” 提 供 了 roff 所 有 历 史 方 面 的 概 述 和 指 引 。 这 个 网 站 仍 在 建 设 ; 但 是 , 它 将 成 为 roff 历 史 的 主 要 来 源

Multics

“Multics 的官方站点” 包 含 很 多 MIT 的 项 目 的 信 息 , CTSS, Multics, 早 期 的 Unix, 还 包 括 runoff ; 尤 其 有 用 的 是 一 个 术 语 字 典 , 还 有 很 多 到 古 老 的 文 档 的 链 接

Unix Archive

“古老的 Unix 的档案馆” 提 供 了 古 老 的 Unix 的 源 码 和 一 些 二 进 制 文 件 (包 括 troff 的 源 码 和 它 的 文 档 ), 它 们 是 Caldera 自 2001 年 以 来 公 开 的 , 例 如 著 名 的 Unix 版 本  7 的 PDP-11 平 台 版 本 位 置 是 Unix V7 site .

Developers at AT&T Bell Labs

“贝尔实验室计算和数学科学研究所” 提 供 了 搜 索 早 期 开 发 者 信 息 的 功 能

Plan 9

“Plan 9 操作系统” AT&T Bell Labs 贝 尔 实 验 室 的 作 品

runoff

“Jerry Saltzer 的主页” 保 存 了 古 老 的 runoff 排 版 语 言 写 成 的 一 些 文 档

CSTR Papers

“贝尔实验室 CSTR 网站” 保 存 了 原 始 的 troff 手 册 (CSTR #54, #97, #114, #116, #122) 还 有 著 名 的 有 关 编 程 的 历 史 文 档

GNU roff

“groff 的官方网站” 提 供 了 自 由 的 roff 实 现 : groff, 并 且 它 是 roff 的 事 实 标 准

历 史 文 档 Historical roff Documentation

很 多 历 史 文 档 仍 然 可 以 在 线 获 得 。 troff 语 言 主 要 的 两 部 手 册 是
[CSTR #54]

J. F. Osanna, Nroff/Troff User's Manual ; (《 用 户 手 册 》 ) Bell Labs, 1976; revised by Brian Kernighan, 1992.

[CSTR #97]

Brian Kernighan, A Typesetter-independent TROFF , (《 设 备 无 关 的 troff》 ) Bell Labs, 1981, revised March 1982.

将 roff 作 为 一 种 “小 语 言 ”("little language") 来 讲 述 的 论 文 有
[CSTR #114]

Jon L. Bentley and Brian W. Kernighan, GRAP — A Language for Typesetting Graphs ; (《 grap: 一 种 图 形 排 版 语 言 》 ) Bell Labs, August 1984.

[CSTR #116]

Brian W. Kernighan, PIC -- A Graphics Language for Typesetting ; (《 pic: 一 种 排 版 用 的 图 形 控 制 语 言 》 ) Bell Labs, December 1984.

[CSTR #122]

J. L. Bentley, L. W. Jelinski, and B. W. Kernighan, CHEM — A Program for Typesetting Chemical Structure Diagrams, Computers and Chemistry ; (《 chem: 排 版 化 学 结 构 图 的 程 序 , 计 算 机 与 化 学 》 ) Bell Labs, April 1986.

手 册 页 Manual Pages

由 于 它 结 构 复 杂 , 完 整 的 roff 系 统 包 含 很 多 很 多 手 册 页 , 每 一 个 都 描 述 了 roff 的 一 个 方 面 。 不 幸 的 是 , 不 同 的 roff 实 现 之 间 , 它 们 的 手 册 没 有 相 同 的 命 名 格 式

groff 中 , 手 册 页 groff (1) 包 含 了 groff 相 关 的 所 有 文 档 的 索 引

其 他 系 统 中 , 你 需 要 自 己 探 索 , 但 是 troff (1) 是 个 很 好 的 起 点

作 者 AUTHORS

Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.

This document is distributed under the terms of the FDL (GNU Free Documentation License) version 1.1 or later. You should have received a copy of the FDL on your system, it is also available on-line at the GNU copyleft site .

此 文 档 是 groff , GNU roff 套 件 的 一 部 分 。 它 的 作 者 是 Bernd Warken ; 它 的 管 理 者 是 Werner Lemberg .

[中 文 版 维 护 人 ]

bbbush <bbbush@163.com>

[中 文 版 最 新 更 新 ]

2003.11.28

《 中 国 linux论 坛 man手 册 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。
中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh