Manpages

MDOC.SAMPLES(7) BSD Miscellaneous Information Manual MDOC.SAMPLES(7)

NAME (名 字 )

mdoc.samples — 用 -mdoc 编 写 BSD 手 册 的 示 范 教 程

SYNOPSIS (总 览 )

man mdoc.samples

DESCRIPTION (描 述 ) 这 个 示 范 教 程 用 于 编 写 BSD 手 册 页 (manual page), 它 使 用 了 -mdoc 宏 定 义 包 , 这 是 个 基 于 内 容基 于 宏 域 (domain-base) 的 格 式 化 包 , 交 由 troff(1) 处 理 . 它 的 前 身 -man(7) 包 , 定 义 了 页 面 布 局 (page layout), 但 是 把 诸 如 字 体 控 制 和 其 他 排 版 细 节 留 给 了 每 一 个 作 者 . 在 -mdoc 包 里 , 页 面 布 局 宏 构 成 了 页 结 构 宏 域 (page structure domain) 它 由 标 题 , 小 节 首 部 , 显 示 (displays) 和 列 表 宏 组 成 . 这 些 基 本 项 目 影 响 正 文 在 格 式 化 页 上 的 物 理 位 置 . 作 为 页 结 构 宏 域 的 补 充 , 这 里 还 定 义 了 另 外 两 个 宏 域 , 手 册 宏 域 和 基 本 正 文 宏 域 . 基 本 正 文 宏 域 定 义 了 一 些 宏 , 执 行 例 如 引 文 或 文 字 强 调 之 类 的 任 务 . 手 册 宏 域 定 义 的 宏 是 非 正 式 日 常 用 语 的 子 集 , 用 于 描 述 命 令 , 例 程 和 相 关 的 BSD 文 件 . 手 册 宏 域 里 的 宏 用 来 处 理 命 令 名 , 命 令 行 参 数 和 选 项 , 函 数 名 称 , 函 数 参 数 , 路 径 , 变 量 , 以 及 到 其 他 手 册 页 的 参 照 等 . 这 些 域 项 留 有 为 作 者 和 手 册 页 的 未 来 用 户 设 置 的 值 . 希 望 从 手 册 集 中 获 得 的 一 致 性 能 够 为 将 来 的 文 档 工 具 提 供 更 简 单 的 转 换 . 从 整 个 的 UNIX 手 册 页 上 来 看 , 每 个 手 册 项 可 以 简 单 的 理 解 为 一 个 man page, 不 用 注 意 它 的 实 际 长 度 , 也 没 有 性 别 歧 视 意 图 . (译 注 : 可 能 是 双 关 语 , man page...男 人 页 ) 开 始 GETTING STARTED 因 为 人 们 通 常 是 为 了 能 够 马 上 使 用 这 些 材 料 的 时 候 才 阅 读 教 程 , 所 以 我 们 假 设 此 文 档 的 用 户 是 缺 乏 耐 心 的 . 下 面 简 述 一 下 这 份 文 档 剩 余 部 分 的 组 织 :

1.

TROFF 特 性 使 用 宏 . 参 数 中 传 递 空 白 符 . 尾 部 的 空 白 符 . 转 义 特 殊 字 符 .

2. 手 册 页 的 结 构 分 析 手 册 页 的 模 板 .

3. 标 题 宏 .

4. 手 册 宏 域 和 基 本 正 文 宏 域 的 介 绍 . 名 称 背 后 .... 基 本 语 法 .

5. 手 册 宏 域 地 址 . 作 者 名 字 . 参 数 . 配 置 声 明 (仅 用 于 手 册 第 四 部 分 ). 命 令 修 饰 . 已 定 义 的 变 量 .
Errno’s (仅 用 于 手 册 第 二 部 分 ). 环 境 变 量 . 函 数 参 数 . 函 数 声 明 . 标 志 (Flags). 函 数 (库 例 程 ). 函 数 类 型 . 交 互 命 令 . 名 称 . 选 项 . 路 径 . 变 量 . 参 照 .

6. 基 本 正 文 宏 域
AT&T 宏 .
BSD 宏 .
FreeBSD 宏 .
UNIX 宏 . 嵌 入 /引 用 宏 (Enclosure/Quoting) 尖 括 弧 引 用 /嵌 入 . 方 括 弧 引 用 /嵌 入 . 双 引 号 引 用 /嵌 入 宏 . 圆 括 弧 引 用 /嵌 入 . 单 引 号 引 用 /嵌 入 . 前 缀 宏 .
No-Op 或 正 文 宏 . 消 除 空 白 宏 . 手 册 节 对 照 . 参 考 和 引 用 . 返 回 值 (仅 用 于 手 册 页 第 二 和 第 三 部 分 )
Trade Names (缩 略 和 类 型 名 称 ). 参 数 扩 展 .

7. 页 结 构 宏 域 小 节 首 部 . 段 落 和 空 行 . 保 持 (Keeps). 显 示 . 字 体 模 式 (加 重 , 原 文 和 Symbolic). 列 表 和 栏 .

8. 预 定 义 串

9. 诊 断

10. 用 GROFF, TROFF 和 NROFF 格 式 化

11. 臭 虫 BUGS

TROFF 特 性 使 用 -mdoc 宏 包 的 目 的 是 简 化 写 手 册 页 的 过 程 . 理 论 上 讲 , 要 使 用 -mdoc 不 一 定 要 学 习 troff(1) 的 隐 藏 细 节 ; 然 而 , 有 些 限 制 无 法 回 避 , 最 好 把 它 们 摆 平 . 而 且 你 应 该 知 道 , 这 个 宏 包 的 速 度 比 较 慢 . 宏 的 用 法 Macro Usagetroff(1) 里 , 宏 调 用 的 形 式 是 在 行 首 以 ’.’ (句 点 符 ) 起 始 , 紧 随 其 后 是 作 为 宏 名 的 两 个 字 符 . 参 数 跟 在 宏 名 之 后 , 用 空 格 符 隔 开 . 这 个 位 于 行 首 的 句 点 符 使 troff(1) 把 紧 随 其 后 的 两 个 字 符 视 作 宏 名 . 在 某 些 情 况 下 要 把 ’.’ (句 点 符 ) 放 在 行 首 , 但 不 希 望 被 理 解 成 宏 请 求 , 方 法 是 在 ’.’ (句 点 ) 前 使 用 ’\&’ 转 义 序 列 . ’\&’ 被 解 释 成 一 段 长 度 为 零 的 空 白 , 所 以 不 会 在 输 出 端 显 示 出 来 . 一 般 说 来 , troff(1) 宏 最 多 接 受 九 个 参 数 , 忽 略 掉 其 余 的 . 大 多 数 在 -mdoc 里 的 宏 支 持 九 个 参 数 , 某 些 场 合 可 以 续 加 参 数 , 或 扩 展 到 下 一 行 . (见 扩 展 Extensions). 有 些 宏 能 够 处 理 引 号 引 起 来 的 参 数 (见 下 面 的 在 参 数 中 传 递 空 格 符 ). 大 多 数 -mdoc 的 基 本 正 文 宏 域 和 手 册 宏 域 的 宏 拥 有 一 种 特 性 , 表 现 在 把 参 数 列 表 当 成 可 调 用 的 宏 分 析 (解 释 ). 这 意 味 着 如 果 参 数 列 表 里 的 参 数 是 普 通 正 文 宏 域 或 手 册 宏 域 里 的 宏 , 并 且 是 可 调 用 宏 , 那 么 处 理 的 时 候 会 执 行 或 调 用 . 这 种 情 况 下 的 参 数 , 即 宏 名 , 不 需 要 用 ’.’ (句 点 符 ) 引 导 . 这 种 风 格 使 很 多 宏 嵌 套 在 一 起 ; 例 如 这 个 选 项 宏 ’.Op’, 可 能 调 用 标 志 和 参 数 宏 , ’Fl’ 和 ’Ar’, 用 来 说 明 一 个 带 参 数 的 选 项 :

[-s bytes] 来 自 .Op Fl s Ar bytes 为 了 防 止 把 两 个 字 符 的 字 符 串 解 释 成 宏 名 , 在 这 个 字 符 串 前 面 加 上 ’\&’ 转 义 序 列 :

[Fl s Ar bytes] 来 自 .Op \&Fl s \&Ar bytes 这 里 的 字 符 串 ’Fl’ 和 ’Ar’ 没 有 被 解 释 成 宏 . 在 这 篇 文 档 和 相 应 的 快 速 参 考 手 册 mdoc(7) 中 , 参 数 列 表 按 可 调 用 参 数 分 析 的 宏 称 为 已 分 析 , 可 以 从 参 数 列 表 调 用 的 宏 称 为 可 调 用 . 这 里 用 的 术 语 ’分 析 ’ 可 能 是 个 技 术 失 误 , 几 乎 所 有 的 -mdoc 宏 都 被 分 析 , 既 用 它 指 可 调 用 宏 , 又 指 有 调 用 其 他 宏 的 能 力 , 显 得 很 笨 拙 . 在 参 数 中 传 递 空 格 符 Passing Space Characters in an Argument 某 些 时 候 我 们 希 望 能 够 把 含 有 一 个 或 多 个 空 格 符 的 字 符 串 作 为 单 个 参 数 传 递 . 如 果 要 突 破 九 个 参 数 的 限 制 , 或 者 传 递 给 宏 的 参 数 需 要 一 些 特 定 布 置 , 这 个 能 力 是 必 须 的 . 例 如 , 函 数 宏 ’.Fn’ 的 第 一 个 参 数 是 函 数 名 称 , 剩 下 的 参 数 作 为 函 数 的 参 数 . ANSI C 规 定 函 数 的 参 数 在 圆 括 弧 内 声 明 , 每 个 参 数 至 少 由 两 个 标 示 符 组 成 . 例 如 , int foo. 有 两 个 方 法 传 递 嵌 有 空 格 符 的 参 数 . 补 充 一 点 : 不 幸 的 是 , 在 AT&T troff 中 , 那 个 最 容 易 的 方 法 , 就 是 作 为 单 个 参 数 传 递 两 个 引 号 之 间 的 字 符 串 和 空 格 符 , 非 常 消 耗 时 间 和 内 存 空 间 . 虽 然 它 对 groff 并 不 费 事 , 但 是 为 了 可 移 植 性 , 这 种 做 法 只 限 于 下 列 有 迫 切 需 要 的 宏 :

Cd 配 置 声 明 (手 册 第 四 部 分 概 要 SYNOPSIS)
Bl 列 表 开 始 (指 定 宽 度 的 )
Em 加 重 文 字
Fn 函 数 (手 册 第 二 , 四 部 分 )
It 列 表 项
Li 原 文
Sy

Symbolic text

%B 书 题
%J 期 刊 名
%O 参 考 选 注
%R 报 告 题 目 (在 参 考 文 件 中 )
%T 在 书 籍 或 期 刊 中 的 题 目 一 种 传 递 含 空 格 符 字 符 串 的 方 法 是 用 ’\ ’ 硬 编 码 或 不 可 填 充 空 格 符 , 也 就 是 在 空 格 符 前 加 上 转 义 符 ’\’. 这 个 方 法 适 用 于 任 何 宏 , 但 有 个 副 效 应 , 它 干 扰 了 对 长 行 的 调 整 . Troff 把 这 种 硬 编 码 的 空 格 符 看 作 可 显 示 字 符 , 因 此 无 法 在 需 要 的 时 候 把 字 符 串 分 段 或 换 行 . 这 种 方 法 适 用 于 字 符 串 不 会 到 达 行 边 界 时 , 例 如 :

fetch(char *str) 来 自 ’.Fn fetch char\ *str’

fetch(char *str) 也 可 以 来 自 ’.Fn fetch "char *str"’ 如 果 忽 略 ’\’ 或 引 号 , ’.Fn’ 宏 会 认 为 有 三 个 参 数 , 结 果 成 为 :

fetch(char, *str) 如 果 想 知 道 参 数 列 表 到 达 行 边 界 时 出 现 什 么 , 参 看 BUGS 小 节 . 尾 部 的 空 白 符 Trailing Blank Space Characters

Troff 可 能 被 行 尾 的 空 白 符 搞 乱 , 它 的 防 范 规 则 是 消 除 所 有 位 于 行 末 的 空 白 符 . 如 果 坚 持 在 行 末 加 上 空 白 符 , 可 以 用 硬 空 格 符 和 ’\&’ 转 义 字 符 . 例 如 , ’string\ \&’. 转 义 特 殊 字 符 Escaping Special Characters 特 殊 字 符 , 如 换 行 符 ’\n’, 是 通 过 用 ’\e’ 替 换 ’\’ (e.g.例 如 ’\en’) 保 留 住 反 斜 杠 . 手 册 页 结 构 分 析 THE ANATOMY OF A MAN PAGE 手 册 页 可 以 很 容 易 的 通 过 模 板 构 建 , 模 板 放 在 /usr/share/misc/mdoc.template. 另 外 在 /usr/share/examples/mdoc 目 录 下 有 一 些 手 册 页 的 例 子 . 手 册 页 的 模 板 A manual page template

.\" 所 有 的 手 册 页 都 要 求 有 下 面 的 内 容
.Dd 月 日 , 年 Month day, year
.Os 操 作 系 统 [版 本 /发 行 号 ]
.Dt 文 档 标 题 [手 册 节 号 ][卷 ]
.Sh 名 称 NAME
.Nm 名 称 name
.Nd 对 名 称 的 简 单 描 述 one line description of name
.Sh 总 览 SYNOPSIS
.Sh 描 述 DESCRIPTION
.\" 后 面 的 内 容 取 消 注 释 后 可 以 用 在 你 需 要 的 任 何 地 方 .
.\" 紧 接 着 的 这 条 命 令 用 于 手 册 第 二 和 第 三 部 分 , 函 数 的 返 回 值 .
.\" .Sh 返 回 值 RETURN VALUES
.\" 下 面 的 命 令 用 于 手 册 第 1, 6, 7, 8部 分 .
.\" .Sh 环 境 ENVIRONMENT
.\" .Sh 文 件 FILES
.\" .Sh 示 例 EXAMPLES
.\" 下 面 的 命 令 用 于 手 册 第 1, 6, 7, 8部 分
.\" (在 shell下 的 命 令 返 回 值 和 标 准 错 误 类 型 的 诊 断 )
.\" .Sh 诊 断 DIAGNOSTICS
.\" 下 面 的 命 令 用 于 手 册 第 二 和 第 三 部 分 中 的 错 误 和 信 号 处 理 .
.\" .Sh 错 误 ERRORS
.\" .Sh 另 见 SEE ALSO
.\" .Sh 遵 循 CONFORMING TO
.\" .Sh 历 史 HISTORY
.\" .Sh 作 者 AUTHORS
.\" .Sh BUGS 模 板 中 的 第 一 个 部 分 是 (.Dd, .Os, .Dt) 宏 ; 文 档 日 期 , 手 册 或 其 内 容 针 对 的 操 作 系 统 , 手 册 页 的 标 题 ((大 写 )) 和 该 手 册 页 所 属 的 节 (部 分 号 ). 这 些 宏 确 认 和 标 识 了 这 个 手 册 页 . 在 后 面 的 标 题 宏 TITLE MACROS 将 继 续 讨 论 . 这 个 模 板 中 的 其 余 部 分 是 小 节 首 部 (section header) (.Sh); 其 中 名 称 NAME, 总 览 SYNOPSIS描 述 DESCRIPTION 是 必 不 可 少 的 . 这 些 首 部 在 页 结 构 宏 域 中 讨 论 ( 介 绍 完 手 册 域 之 后 ) . 有 一 些 内 容 宏 被 用 来 示 范 页 面 布 局 宏 ; 建 议 接 触 页 面 布 局 宏 前 先 看 看 内 容 宏 . 标 题 宏 TITLE MACROS 标 题 宏 是 页 结 构 宏 域 的 第 一 部 分 , 但 在 过 去 , 人 们 如 果 编 写 手 册 页 , 它 是 手 册 的 第 一 部 分 , 也 是 独 立 部 分 . 这 里 设 计 了 三 个 宏 分 别 描 述 文 档 标 题 或 手 册 标 题 , 操 作 系 统 , 和 制 作 日 期 . 它 们 放 在 文 档 的 最 前 面 , 一 次 只 调 用 一 个 , 用 来 构 建 文 档 的 页 头 和 页 脚 .

.Dt 文 档 标 题 手 册 区 # [卷 ] 文 档 标 题 是 手 册 页 的 主 题 , 由 于 troff 的 限 制 , 必 须 大 写 . 手 册 节 号 (部 分 号 ) 介 于 1, ..., 8, 如 果 指 明 了 手 册 节 号 , 可 以 忽 略 卷 标 . 卷 标 用 下 列 标 识 的 一 个 或 任 意 个 :

AMD

UNIX 历 史 遗 留 的 手 册 文 档 Ancestral Manual Documents

SMM

UNIX 系 统 管 理 员 手 册 System Manager’s Manual

URM

UNIX 参 考 手 册 Reference Manual

PRM

UNIX 程 序 员 手 册 Programmer’s Manual 缺 省 的 卷 标

URM 代 表 手 册 区 1, 6, and 7; SMM 代 表 手 册 区 8; PRM 代 表 手 册 区 2, 3, 4, and 5.

.Os 操 作 系 统 发 行 号 # 操 作 系 统 的 名 字 可 能 是 缩 写 , 像 BSD 或 FreeBSD 或 ATT. 发 行 号 应 该 是 系 统 专 用 的 标 准 发 行 术 语 , 像 4.3, 4.3+Tahoe, V.3, V.4. 识 别 不 出 的 参 数 就 照 原 样 显 示 在 页 脚 . 例 如 , 典 型 的 页 脚 可 能 是 :

.Os BSD 4.3 或
.Os FreeBSD 2.2 或 者 象 订 制 的 产 品

.Os CS Department 作 为 伯 克 利 的 缺 省 设 置 , 不 带 参 数 的 ’.Os’ 定 义 为 BSD (指 定 在 文 件 /usr/share/tmac/mdoc/doc-common 中 ). 你 应 该 把 缺 省 值 设 成 本 机 . 注 意 , 如 果 不 设 置 ’.Os’ 宏 , 页 面 的 左 下 角 会 很 难 看 .

.Dd 月 日 , 年 (month day, year) 日 期 应 当 写 的 正 规 点 :

January 25, 1989 手 册 宏 域 和 基 本 正 文 宏 域 的 介 绍 名 称 背 后 What’s in a name... 手 册 宏 域 的 宏 名 来 自 非 正 式 的 日 常 用 语 , 用 来 描 述 命 令 , 子 程 序 及 其 相 关 文 件 . 在 写 手 册 页 时 , 文 字 用 语 有 些 轻 微 的 变 化 , 分 别 描 述 三 个 不 同 应 用 面 . 首 先 是 -mdoc 宏 请 求 的 用 法 . 其 次 , 用 -mdoc 宏 描 述 UNIX 命 令 . 最 后 , 对 用 户 具 体 的 描 述 这 条 命 令 ; 也 就 是 在 手 册 页 正 文 里 讨 论 这 条 命 令 . 第 一 种 情 况 下 , troff(1) 宏 本 身 就 是 一 种 命 令 ; troff 命 令 的 基 本 语 法 是 :

.Va argument1 argument2 ... argument9 这 里 的 ’.Va’ 是 宏 命 令 或 宏 请 求 , 紧 随 其 后 的 是 待 处 理 的 参 数 . 第 二 种 情 况 下 , 使 用 内 容 宏 描 述 一 条 UNIX 命 令 要 复 杂 些 ; 一 个 典 型 的 总 览 SYNOPSIS 命 令 行 显 示 如 下 :

filter [-flag] infile outfile 这 里 的 filter 是 命 令 名 称 , 方 括 弧 内 的 -flag 是 一 个 标 志 参 数 , 作 为 可 选 参 数 放 在 代 表 选 项 的 方 括 弧 内 . 在 -mdoc 术 语 中 , infileoutfile 称 为 参 数 . 产 生 上 述 效 果 的 宏 是 这 样 的 :

.Nm filter
.Op Fl flag
.Ar infile outfile 第 三 种 情 况 讨 论 命 令 及 其 语 法 , 包 括 它 们 的 例 子 , 可 能 还 有 更 多 细 节 . 上 面 的 例 子 里 , 可 以 把 infileoutfile 理 解 为 操 作 参 数 operands文 件 参 数 file arguments. 有 些 命 令 行 参 数 罗 列 的 十 分 长 :

make

[-eiknqrstv] [-D variable] [-d flags] [-f makefile] [-I directory] [-j max_jobs] [variable=value] [target ...] 这 里 你 可 能 讨 论 make 命 令 和 它 的 参 数 makefile, 作 为 一 个 标 志 的 参 数 , -f, 或 者 讨 论 一 个 可 选 的 文 件 操 作 对 象 target. 在 具 体 的 上 下 文 中 , 这 种 细 节 能 够 防 止 混 淆 . 然 而 -mdoc 宏 包 中 没 有 为 标 志 的 参 数 准 备 宏 . 作 为 替 代 是 ’Ar’ 参 数 宏 , 用 于 描 述 操 作 对 象 或 文 件 参 数 如 target 以 及 标 志 的 参 数 如 variable. 上 面 的 make 命 令 行 是 这 样 产 生 的 :

.Nm make
.Op Fl eiknqrstv
.Op Fl D Ar variable
.Op Fl d Ar flags
.Op Fl f Ar makefile
.Op Fl I Ar directory
.Op Fl j Ar max_jobs
.Op Ar variable=value
.Bk -words
.Op Ar target ...
.Ek 在Keeps 小 节 中 将 会 解 释 ’.Bk’ 和 ’.Ek’ 宏 . 基 本 语 法 General Syntax 手 册 宏 域 和 基 本 正 文 宏 域 的 宏 有 着 相 似 的 语 法 , 仅 有 微 小 差 别 : ’.Ar’, ’.Fl’, ’.Nm’, 和 ’.Pa’ 仅 当 无 参 数 调 用 时 才 有 区 别 ; ’.Fn’ 和 ’.Xr’ 的 参 数 列 表 要 求 一 定 的 顺 序 ; ’.Op’ 和 ’.Fn’ 宏 有 嵌 套 限 制 . 所 有 的 内 容 宏 能 够 识 别 和 正 确 处 理 标 点 符 号 , 每 个 标 点 符 号 要 在 前 面 用 空 格 隔 开 . 如 果 给 出 这 样 的 宏 请 求 :

.Li sptr, ptr), 结 果 是 :

sptr, ptr), 标 点 符 号 没 有 被 识 别 出 来 , 全 都 按 原 文 字 体 输 出 . 如 果 标 点 符 号 前 面 用 空 格 符 隔 开 :

.Li sptr , ptr ) , 结 果 是 :

sptr, ptr), 标 点 符 号 被 识 别 出 来 了 , 缺 省 的 字 体 也 有 别 于 原 文 文 字 的 字 体 . 用 ’\&’. 转 义 符 可 以 去 掉 标 点 字 符 的 特 殊 意 义 . Troff 作 为 宏 语 言 有 一 定 的 限 制 , 当 表 达 的 字 串 中 含 有 数 学 , 逻 辑 或 引 用 符 号 时 将 难 于 处 理 :

{+,-,/,*,%,<,>,<=,>=,=,==,&,’,’,"} 问 题 是troff 会 认 为 它 应 该 执 行 或 运 算 这 些 符 号 代 表 的 操 作 . 要 防 止 这 一 点 可 以 用 ’\&’ 转 义 这 些 字 符 . 典 型 语 法 在 下 面 显 示 的 第 一 个 内 容 宏 中 可 以 见 到 , ’.Ad’. 手 册 域 MANUAL DOMAIN 地 址 宏 Address Macro 地 址 宏 用 这 种 格 式 标 明 地 址 : addr1[,addr2[,addr3]].

Usage: .Ad address ...

.Ad addr1

addr1

.Ad addr1 .

addr1.

.Ad addr1 , file2

addr1, file2

.Ad f1 , f2 , f3 :

f1, f2, f3:

.Ad addr ) ) ,

addr)), 不 带 参 数 调 用 ’.Ad’ 是 个 错 误 . ’.Ad’ 可 以 被 (其 他 宏 ) 调 用 和 分 析 . 作 者 名 称 Author Name

The ’.An’ 宏 用 以 说 明 这 个 文 档 的 描 述 对 象 的 作 者 , 或 者 这 篇 手 册 页 的 作 者 . 名 字 信 息 后 面 的 其 他 参 数 被 认 为 是 标 点 符 号 .

Usage: .An author_name ...

.An Joe Author

Joe Author

.An Joe Author ,

Joe Author,

.An Joe Author Aq nobody [AT] FreeBSD.ORG

Joe Author <nobody [AT] FreeBSD.ORG>

.An Joe Author ) ) ,

Joe Author)),

’.An’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 , 不 带 参 数 调 用 ’.An’ 是 个 错 误 . 参 数 宏 Argument Macro 当 引 用 命 令 行 参 数 时 可 以 使 用 ’.Ar’ 参 数 宏 .

Usage: .Ar argument ...

.Ar

file ...

.Ar file1

file1

.Ar file1 .

file1.

.Ar file1 file2

file1 file2

.Ar f1 f2 f3 :

f1 f2 f3:

.Ar file ) ) ,

file)), 如 果 不 带 参 数 调 用 ’.Ar’ 宏 , 缺 省 为 ’file ...’. ’.Ar’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 配 置 定 义 (手 册 第 四 部 分 ) Configuration Declaration

’.Cd’ 宏 用 于 描 述 config(8) 对 设 备 接 口 的 定 义 (手 册 第 四 部 分 ). 这 个 宏 接 受 引 号 内 的 参 数 (只 能 是 双 引 号 ).

device le0 at scode? 来 自 : ’.Cd device le0 at scode?’. 命 令 修 饰 Command Modifier 命 令 修 饰 宏 和 ’.Fl’ (标 志 ) 命 令 相 似 , 除 了 ’.Cm’ 宏 不 在 任 何 参 数 前 加 短 横 线 (dash). 传 统 的 标 志 以 短 横 线 开 头 , 但 一 些 命 令 或 命 令 的 子 集 不 用 这 个 . 命 令 修 饰 宏 也 可 以 和 交 互 命 令 结 合 使 用 , 如 编 辑 命 令 . 另 见 Flags. 已 定 义 的 变 量 Defined Variables 在 头 文 件 中 已 经 定 义 了 的 变 量 用 ’.Dv’ 宏 说 明 .

Usage: .Dv defined_variable ...

.Dv MAXHOSTNAMELEN

MAXHOSTNAMELEN

.Dv TIOCGPGRP )

TIOCGPGRP) 不 带 参 数 调 用 ’.Dv’ 是 个 错 误 . ’.Dv’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 .

Errno’s (仅 供 手 册 第 二 部 分 ) 这 个 ’.Er’ errno 宏 指 明 手 册 第 二 部 分 , 库 函 数 的 错 误 返 回 值 .(译 注 : 应 该 是 系 统 调 用 ) 下 面 的 第 二 个 例 子 显 示 了 ’.Er’ 配 合 ’.Bq’ 基 本 正 文 宏 的 使 用 , 就 象 用 在 手 册 第 二 部 分 一 样 .

Usage: .Er ERRNOTYPE ...

.Er ENOENT

ENOENT

.Er ENOENT ) ;

ENOENT);

.Bq Er ENOTDIR

[ENOTDIR] 不 带 参 数 调 用 ’.Er’ 宏 是 个 错 误 . ’.Er’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 环 境 变 量 Environment Variables

’.Ev’ 宏 说 明 一 个 环 境 变 量 .

Usage: .Ev argument ...

.Ev DISPLAY

DISPLAY

.Ev PATH .

PATH.

.Ev PRINTER ) ) ,

PRINTER)), 不 带 参 数 调 用 ’.Ev’ 宏 是 个 错 误 . ’.Ev’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 函 数 参 数 Function Argument

’.Fa’ 宏 用 来 说 明 在 手 册 的 总 览 SYNOPSIS 小 节 之 外 的 函 数 参 数 , 或 者 在 总 览 SYNOPSIS 小 节 内 , 其 参 数 列 表 对 ’.Fn’ 宏 而 言 过 长 , 并 且 必 须 使 用 ’.Fo’ 和 ’.Fc’ 宏 时 . ’.Fa’ 也 有 可 能 用 来 说 明 结 构 成 员 .

Usage: .Fa function_argument ...

.Fa d_namlen ) ) ,

d_namlen)),

.Fa iov_len

iov_len 不 带 参 数 调 用 ’.Fa’ 宏 是 个 错 误 . ’.Fa’ 宏 可 以 被 (其 他 ) 宏 分 析 和 调 用 . 函 数 声 明 Function Declaration

’.Fd’ 宏 用 于 第 二 或 第 三 部 分 手 册 页 的 总 览 SYNOPSIS 小 节 . ’.Fd’ 宏 既 不 调 用 其 他 宏 , 也 不 能 被 其 他 宏 调 用 .

Usage: .Fd include_file (or defined variable) 在 总 览 SYNOPSIS 小 节 , 如 果 已 经 说 明 了 某 个 函 数 , 并 且 没 有 出 现 省 略 号 , 则 ’.Fd’ 宏 请 求 能 够 产 生 一 个 断 行 . 在 函 数 和 函 数 声 明 之 间 , 垂 直 方 向 上 产 生 一 定 的 空 白 . 标 志 Flags

’.Fl’ 宏 处 理 命 令 行 标 志 . 它 在 标 志 前 加 一 个 短 横 线 ’-’, 对 于 交 互 命 令 标 志 , 它 不 需 要 短 横 线 , 可 以 用 ’.Cm’ (命 令 修 饰 command modifier) 宏 替 换 , 它 没 有 短 横 线 .

Usage: .Fl argument ...

.Fl

-

.Fl cfv

-cfv

.Fl cfv .

-cfv.

.Fl s v t

-s -v -t

.Fl - ,

--,

.Fl xyz ) ,

-xyz), 如 果 ’.Fl’ 宏 不 带 任 何 参 数 , 将 只 产 生 一 个 短 横 线 , 代 表 stdin/stdout. 注 意 如 果 把 一 个 短 横 线 做 为 ’.Fl’ 的 参 数 , 结 果 会 得 到 两 个 短 横 线 . ’.Fl’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 函 数 (库 函 数 ) Functions (library routines) 宏 .Fn 是 ANSI C 函 数 风 格 的 模 型 .

Usage: .Fn [type] function [[type] parameters ...

.Fn getchar

getchar()

.Fn strlen ) ,

strlen()),

.Fn "int align" "const * char *sptrs",

int align(const * char *sptrs), 不 带 参 数 调 用 ’.Fn’ 是 一 个 错 误 . ’.Fn’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 , 注 意 任 何 对 其 他 宏 的 调 用 应 该 在 ’.Fn’ 宏 调 用 的 结 尾 处 给 出 标 记 (反 括 弧 ). 对 于 八 个 参 数 以 上 的 函 数 (尽 管 少 见 ), 可 以 用 宏 ’.Fo’ (function open) 和 ’.Fc’ (function close) 配 合 ’.Fa’ (function argument) 宏 的 使 用 , 突 破 参 数 过 多 的 限 制 , 例 如 :

.Fo "int res_mkquery"
.Fa "int op"
.Fa "char *dname"
.Fa "int class"
.Fa "int type"
.Fa "char *data"
.Fa "int datalen"
.Fa "struct rrec *newrr"
.Fa "char *buf"
.Fa "int buflen"
.Fc 产 生 :

int res_mkquery(int op, char *dname, int class, int type, char *data, int datalen, struct rrec *newrr, char *buf, int buflen) 宏 ’.Fo’ 和 ’.Fc’ 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 在 总 览 SYNOPSIS 小 节 , 函 数 总 是 位 于 行 的 开 始 处 . 如 果 在 总 览 SYNOPSIS 小 节 有 一 个 以 上 的 函 数 声 明 , 而 且 函 数 类 型 没 有 说 明 , 则 会 产 生 一 个 断 行 . 在 函 数 和 函 数 的 垂 直 方 向 上 产 生 一 定 的 空 白 . 此 时 ’.Fn’ 宏 不 按 troff 的 行 长 检 查 单 词 边 界 , 有 可 能 难 看 的 从 单 词 中 间 断 开 . 以 后 会 解 决 这 个 问 题 . 函 数 类 型 Function Type 这 个 宏 设 计 用 在 总 览 SYNOPSIS 小 节 . 它 可 以 毫 无 困 难 的 用 在 手 册 页 的 其 他 地 方 , 但 它 的 主 要 目 的 是 为 第 二 和 第 三 部 分 手 册 页 的 总 览 SYNOPSIS 小 节 , 以 核 心 标 准 形 式 (kernel normal form) 描 述 函 数 类 型 (它 导 致 断 行 , 在 下 一 行 显 示 函 数 名 称 ).

Usage: .Ft type ...

.Ft struct stat

struct stat

’.Ft’ 宏 不 能 被 其 他 宏 调 用 . 交 互 命 令 Interactive Commands 宏 ’.Ic’ 用 于 说 明 交 互 或 内 部 命 令 .

Usage: .Ic argument ...

.Ic :wq : wq
.Ic do while {...}

do while {...}

.Ic setenv , unsetenv

setenv, unsetenv 不 带 参 数 调 用 ’.Ic’ 是 个 错 误 . ’.Ic’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 名 称 宏 Name Macro

’.Nm’ 宏 用 于 说 明 文 档 题 目 或 主 题 . 它 的 特 点 是 能 够 记 住 调 用 时 带 的 第 一 个 参 数 , 这 个 参 数 就 是 该 页 的 主 题 . 当 不 带 参 数 调 用 它 时 , ’.Nm’ 宏 把 以 前 记 住 的 参 数 显 示 出 来 , 可 以 为 作 者 省 点 劲 . 注 意 : 手 册 第 二 部 分 或 第 三 部 分 的 函 数 名 称 , 在 名 称 NAME 小 节 用 ’.Nm’ 说 明 , 在 总 览 SYNOPSIS 和 其 余 小 节 用 ’.Fn’ 说 明 . 对 于 交 互 命 令 , 例 如 在 csh(1) 中 的 ’while’ 命 令 , 应 该 使 用 ’.Ic’ 宏 . ’.Ic’ 宏 和 ’.Nm’, 宏 非 常 接 近 , 只 是 它 不 能 够 记 忆 调 用 时 的 参 数 .

Usage: .Nm argument ...

.Nm mdoc.sample

mdoc.sample

.Nm \-mdoc

-mdoc.

.Nm foo ) ) ,

foo)),

.Nm

mdoc.samples

’.Nm’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 选 项 Options
’.Op’ 宏 把 命 令 行 上 剩 余 的 所 有 参 数 用 方 括 弧 括 在 一 起 , 把 最 后 的 标 点 符 号 放 到 方 括 弧 外 面 . 宏 ’.Oc’ 和 ’.Oo’ 用 于 处 理 跨 行 .

Usage: .Op options ...

.Op

[]

.Op Fl k

[-k]

.Op Fl k ) .

[-k]).

.Op Fl k Ar kookfile

[-k kookfile]

.Op Fl k Ar kookfile ,

[-k kookfile],

.Op Ar objfil Op Ar corfil

[objfil [corfil]]

.Op Fl c Ar objfil Op Ar corfil ,

[-c objfil [corfil]],

.Op word1 word2

[word1 word2] 应 用 ’.Oc’ 和 ’.Oo’ 宏 :

.Oo
.Op Fl k Ar kilobytes
.Op Fl i Ar interval
.Op Fl c Ar count
.Oc 产 生 :[

[-k kilobytes] [-i interval] [-c count] ] 宏 ’.Op’, ’.Oc’ 和 ’.Oo’ 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 路 径 名 Pathnames

’.Pa’ 宏 用 于 格 式 化 路 径 或 文 件 名 .

Usage: .Pa pathname

.Pa /usr/share

/usr/share

.Pa /tmp/fooXXXXX ) .

/tmp/fooXXXXX).

’.Pa’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 变 量 Variables 基 本 的 变 量 参 考 :

Usage: .Va variable ...

.Va count

count

.Va settimer,

settimer,

.Va int *prt ) :

int *prt):

.Va char s ] ) ) ,

char s])), 不 带 参 数 调 用 ’.Va’ 宏 是 个 错 误 . ’.Va’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 手 册 页 参 照 Manual Page Cross References

’.Xr’ 宏 把 第 一 个 参 数 当 做 手 册 页 名 称 , 第 二 个 参 数 , 如 果 存 在 , 当 做 标 点 符 号 或 手 册 页 的 部 分 号 (节 号 ). 剩 下 所 有 的 参 数 视 做 标 点 符 号 .

Usage: .Xr man_page [1,...,8]

.Xr mdoc

mdoc

.Xr mdoc ,

mdoc,

.Xr mdoc 7

mdoc(7)

.Xr mdoc 7 ) ) ,

mdoc(7))),

’.Xr’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 不 带 参 数 调 用 ’.Xr’ 宏 是 个 错 误 . 基 本 正 文 宏 域 GENERAL TEXT DOMAIN
AT&T 宏

Usage: .At [v6 | v7 | 32v | V.1 | V.4] ...

.At

AT&T UNIX

.At v6 .

Version 6 AT&T UNIX.

’.At’ 宏 不 能 被 (其 他 宏 ) 分 析 , 也 不 能 被 (其 他 宏 ) 调 用 . 该 宏 最 多 接 受 两 个 参 数 .

BSD 宏

Usage: .Bx [Version/release] ...

.Bx

BSD

.Bx 4.3 .

4.3BSD.

’.Bx’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 .

FreeBSD 宏

Usage: .Fx Version.release ...

.Fx 2.2 .

FreeBSD 2.2.

’.Fx’ 宏 不 能 被 (其 他 宏 ) 分 析 , 也 不 能 被 (其 他 宏 ) 调 用 . 该 宏 最 多 接 受 两 个 参 数 .

UNIX 宏

Usage: .Ux ...

.Ux

UNIX

’.Ux’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 嵌 入 和 引 用 宏 Enclosure and Quoting Macros 嵌 入 的 概 念 和 引 用 类 似 . 把 一 句 或 多 句 引 用 对 象 嵌 到 一 对 字 符 中 , 象 引 号 或 括 弧 . 本 篇 文 档 中 将 混 用 术 语 ’嵌 入 ’ 和 ’引 用 .’ 大 多 数 单 行 的 引 用 宏 名 用 一 个 小 写 字 母 ’q’ 结 尾 , 表 明 这 是 一 个 引 用 (quoting), 但 也 有 不 规 则 变 化 . 每 个 引 用 宏 都 有 一 对 开 始 (open) 和 结 束 (close) 宏 , 各 自 以 ’o’ 和 ’c’ 结 尾 . 在 某 些 限 制 时 这 些 宏 可 以 跨 行 使 用 , 单 行 的 引 用 宏 可 以 嵌 套 在 里 面 .

Quote Close Open Function Result

.Aq

.Ac

.Ao

Angle Bracket Enclosure

<string>

.Bq

.Bc

.Bo

Bracket Enclosure

[string]

.Dq

.Dc

.Do

Double Quote

’’string’’

.Ec

.Eo

Enclose String (in XX)

XXstringXX

.Pq

.Pc

.Po

Parenthesis Enclosure

(string)

.Ql

Quoted Literal

’st’ or string

.Qq

.Qc

.Qo

Straight Double Quote

"string"

.Sq

.Sc

.So

Single Quote

’string’ 除 了 下 面 的 不 规 则 宏 , 所 有 的 引 用 宏 可 以 被

(其 他 宏 ) 分 析 和 调 用 . 所 有 的 引 用 宏 能 够 正 确 处 理 标 点 符 号 , 只 要 一 次 一 个 字 符 , 中 间 用 空 格 隔 开 . 引 用 宏 检 查 开 始 和 结 束 符 号 , 以 决 定 把 它 放 在 引 用 串 的 前 面 还 是 后 面 . 这 样 就 有 了 一 定 的 嵌 套 能 力 .

.Ec, .Eo 这 些 宏 的 第 一 个 参 数 是 各 自 的 开 始 和 结 束 串 .

.Ql 原 文 引 用 宏 的 表 现 在 troff 中 和 nroff 不 一 样 . 如 果 用 nroff 格 式 化 , 引 用 的 原 文 始 终 被 引 用 . 如 果 用 troff 格 式 化 , 只 有 宽 度 小 于 三 个 定 宽 字 符 的 项 才 被 引 用 . This is to make short strings more visible where the font change to literal (constant width) is less noticeable. 当 字 体 变 成 原 文 (定 宽 ) 时 , 短 串 显 得 更 容 易 被 看 到 .

.Pf 前 缀 宏 不 能 被 (其 他 宏 ) 调 用 , 但 是 可 以 被 分 析 .

.Pf ( Fa name2 变 成 (name2. 这 个 ’.Ns’ (无 空 格 ) 宏 执 行 类 似 的 后 缀 功 能 . 引 用 举 例 :
.Aq

⟨ ⟩

.Aq Ar ctype.h ) ,

ctype.h⟩ ),

.Bq

[]

.Bq Em Greek , French .

[Greek, French].

.Dq

’’’’

.Dq string abc .

’’string abc’’.

.Dq ´^[A-Z]´

’’´^[A-Z]´’’

.Ql man mdoc

’man mdoc’

.Qq

""

.Qq string ) ,

"string"),

.Qq string Ns ),

"string),"

.Sq

’’

.Sq string

’string’ 作 为 嵌 套 引 用 宏 的 典 型 范 例 , 参 见 ’.Op’ 选 项 宏 . 它 们 都 来 自 上 面 列 出 的 基 本 引 用 宏 . ’.Xo’ 和 ’.Xc’ 扩 展 的 参 数 列 表 宏 同 样 来 自 相 同 的 基 本 例 程 , 并 且 , 在 最 坏 的 情 况 下 , 是 -mdoc 宏 用 法 的 很 好 范 例 .

No-Op 或 正 文 宏 or Normal Text Macro 宏 ’.No’ 用 在 某 个 宏 命 令 行 上 , 意 如 其 名 , 将 被 格 式 化 , 语 法 遵 循 一 般 的 内 容 宏 . 无 空 格 宏 Space Macro
’.Ns’ 在 宏 请 求 之 间 消 除 不 需 要 的 空 格 . 它 用 在 旧 式 风 格 的 参 数 列 表 中 , 标 志 和 参 数 间 没 有 空 格 :

.Op Fl I Ns Ar directory 产 生 [-Idirectory] 注 意 : ’.Ns’ 宏 在 消 除 空 格 后 总 会 调 用 ’.No’ 宏 , 除 非 还 有 其 他 宏 名 跟 在 后 面 . ’.Ns’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 手 册 页 对 照 参 考 Section Cross References

’.Sx’ 宏 指 定 了 到 同 一 个 文 档 内 的 小 节 首 部 的 对 照 参 考 . 该 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 .

.Sx FILES

FILES 参 考 和 引 言 References and Citations

The following macros make a modest attempt to handle references. At best, the macros make it convenient to manually drop in a subset of refer style references. 下 面 的 宏 试 图 适 度 的 处 理 参 考 资 料 . 最 好 情 况 时 , 这 些 宏 便 于 手 工 插 入 一 段 相 关 风 格 的 参 考 资 料 .

.Rs 参 考 开 始 . 它 导 致 一 次 断 行 , 并 且 开 始 收 集 参 考 资 料 , 直 到 遇 到 参 考 结 束 宏 .
.Re 参 考 结 束 . 则 打 印 出 参 考 信 息 .
.%A 参 考 资 料 的 作 者 名 字 , 一 次 一 个 .
.%B 书 名 .
.%C 城 市 /地 点 .
.%D 日 期 .
.%J 期 刊 名 .
.%N 发 行 号 .
.%O 可 选 信 息 .
.%P 页 码 .
.%R 报 告 名 .
.%T 文 章 题 目 .
.%V 卷 . 用 ’%’ 符 号 开 始 的 宏 不 能 被 (其 他 宏 ) 调 用 , 只 能 被 trade name macro 分 析 , 结 果 返 回 给 调 用 者 (此 时 结 果 不 太 好 预 测 ). 其 目 的 是 允 许 trade name 能 够 很 好 的 打 印 在 troff/ditroff 的 输 出 端 . 返 回 值 Return Values

’.Rv’ 宏 产 生 一 些 用 在 返 回 值 RETURN VALUES 小 节 的 文 字 .

Usage: .Rv [-std function]

’.Rv -std atexit’ 将 输 出 下 列 文 字 :

.Rv -std atexit 这 个 -std 选 项 仅 用 于 手 册 页 的 第 二 和 第 三 部 分 .

Trade Names (或 缩 略 和 类 型 名 )
trade name 宏 一 般 说 来 是 一 个 很 小 的 大 写 字 母 宏 , 用 于 所 有 大 于 两 个 字 符 的 大 写 单 词 .

Usage: .Tn symbol ...

.Tn DEC

DEC

.Tn ASCII

ASCII

’.Tn’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 扩 展 参 数 Extended Arguments
’.Xo’ 和 ’.Xc’ 宏 可 以 在 宏 的 边 界 扩 展 参 数 列 表 . 如 果 某 个 宏 要 求 所 有 的 参 数 在 一 行 上 出 现 , 则 参 数 列 表 不 能 在 这 儿 被 扩 展 . 例 如 ’.Op’. 这 里 有 ’.Xo’ 宏 的 一 个 示 例 , 用 空 格 模 式 宏 把 空 格 去 掉 :

.Sm off
.It Xo Sy I Ar operation
.No \en Ar count No \en
.Xc
.Sm on 产 生

Ioperation\ncount\n 还 有 一 个 :

.Sm off
.It Cm S No / Ar old_pattern Xo
.No / Ar new_pattern
.No / Op Cm g
.Xc
.Sm on 产 生

S/old_pattern
/new_pattern/[g] 另 一 个 示 例 用 ’.Xo’ 和 引 用 宏 : 测 试 一 个 变 量 的 值 .

.It Xo
.Ic .ifndef
.Oo \&! Oc Ns Ar variable
.Op Ar operator variable ...
.Xc 产 生

.ifndef [
!]variable [operator variable ...] 上 面 所 有 的 例 子 都 在 ’.It’ (list-item) 宏 的 参 数 列 表 中 使 用 了 ’.Xo’ 宏 . 扩 展 宏 不 经 常 使 用 , 一 般 用 来 扩 展 list-item 宏 的 参 数 列 表 . 这 也 不 幸 的 是 扩 展 宏 最 苛 刻 的 地 方 . 前 两 个 例 子 里 空 格 被 去 掉 ; 第 三 个 例 子 中 , 希 望 能 输 出 部 分 空 格 , 而 不 是 全 部 . 在 这 种 情 况 下 用 这 些 宏 , 要 确 保 ’.Xo’ 和 ’.Xc’ 宏 摆 放 到 第 三 个 例 子 中 示 范 的 位 置 . 如 果 ’.Xo’ 宏 没 有 单 独 出 现 在 ’.It’ 的 参 数 表 中 , 则 无 法 预 测 空 格 情 况 . 这 种 情 况 下 , ’.Ns’ (no space macro) 一 定 不 能 作 为 一 行 的 第 一 个 宏 或 最 后 一 个 宏 . 当 前 BSD 发 布 的 超 过 900个 手 册 页 (事 实 上 大 约 1500个 ) 中 , 只 有 十 五 个 用 到 了 ’.Xo’ 宏 . 页 结 构 宏 宏 域 PAGE STRUCTURE DOMAIN 小 节 首 部 Section Headers 每 个 手 册 页 里 都 用 到 了 下 面 列 出 的 三 个 ’.Sh’ 小 节 首 部 宏 . 作 者 写 手 册 页 时 可 以 酌 情 考 虑 其 他 建 议 使 用 的 小 节 首 部 . ’.Sh’ 宏 最 多 带 九 个 参 数 . 它 可 以 被 (其 他 宏 ) 分 析 , 但 不 能 被 调 用 .

.Sh 名 称 NAME

’.Sh 名 称 NAME’ 宏 是 必 不 可 少 的 . 否 则 无 法 设 置 页 头 , 页 脚 和 缺 省 的 页 布 局 , 样 子 会 很 难 看 . 名 称 NAME 小 节 至 少 由 三 项 组 成 . 第 一 个 是 ’.Nm’ 名 称 宏 , 命 名 手 册 页 的 主 题 . 第 二 个 是 名 称 描 述 宏 ’.Nd’, 它 把 主 题 名 称 和 第 三 项 , 描 述 , 分 离 开 来 . 描 述 应 该 尽 可 能 的 精 简 易 懂 , 少 占 空 间 .

.Sh 总 览 SYNOPSIS

SYNOPSIS 总 览 小 节 描 述 该 手 册 页 对 象 的 典 型 用 途 . 请 求 的 宏 是 下 面 的 任 意 一 个 , ’.Nm’, ’.Cd’, ’.Fn’, (也 可 能 是 ’.Fo’, ’.Fc’, ’.Fd’, ’.Ft’ 宏 ). 函 数 名 称 宏 ’.Fn’ 用 在 手 册 页 的 第 二 第 三 部 分 , 命 令 和 基 本 名 称 宏 ’.Nm’ 用 在 手 册 页 的 1, 5, 6, 7, 8 部 分 . 手 册 第 四 部 分 需 要 ’.Nm’, ’.Fd’ 或 ’.Cd’ 配 制 设 备 用 途 宏 . 其 他 一 些 宏 可 能 用 来 产 生 概 要 行 , 象 下 面 的 :

cat [-benstuv] [-] file ... 下 面 用 到 的 宏

.Nm cat
.Op Fl benstuv
.Op Fl
.Ar 注 意 : 宏 ’.Op’, ’.Fl’, 和 ’.Ar’ 能 够 识 别 管 道 符 ’|’, 因 此 命 令 行 如 :

.Op Fl a | Fl b 的 表 现 会 出 轨 . Troff 一 般 把 | 当 做 特 殊 符 号 . 参 见 预 定 义 串 PREDEFINED STRINGS, 在 其 他 情 况 下 | 的 使 用 .

.Sh 描 述 DESCRIPTION 大 多 数 情 况 下 描 述 DESCRIPTION 小 节 的 第 一 段 话 是 关 于 这 个 命 令 , 函 数 或 文 件 的 摘 要 , 后 跟 字 典 式 的 选 项 以 及 相 应 的 解 释 . 创 建 这 样 的 列 表 , 应 该 使 用 ’.Bl’ 列 表 开 始 , ’.It’ 列 表 项 和 ’.El’ 列 表 结 束 宏 (参 见 下 面 的 列 表 和 栏 目 Lists and Columns ). 下 面 的 ’.Sh’ 小 节 首 部 是 手 册 页 编 排 的 常 见 内 容 , 为 了 保 证 连 续 性 , 应 适 当 使 用 . 它 们 按 照 应 该 出 现 的 顺 序 排 列 .

.Sh 环 境 ENVIRONMENT 环 境 ENVIRONMENT 小 节 用 来 揭 示 相 关 的 环 境 变 量 和 线 索 , 它 们 的 行 为 , 表 现 , 用 法 .

.Sh 示 例 EXAMPLES 有 很 多 办 法 创 建 示 例 , 详 见 下 面 的 示 例 EXAMPLES 小 节 .

.Sh 文 件 FILES 由 手 册 页 的 主 题 对 象 创 建 或 使 用 的 文 件 , 应 该 通 过 ’.Pa’ 宏 在 文 件 FILES 小 节 陈 列 出 来 .

.Sh 另 见 SEE ALSO 如 果 提 及 其 他 手 册 页 或 参 照 相 应 的 手 册 , 应 把 它 们 放 在 另 见 SEE ALSO 小 节 . 参 照 主 题 由 ’.Xr’ 宏 指 定 . 在 另 见 SEE ALSO 小 节 的 参 照 主 题 应 该 按 手 册 节 号 排 序 , 按 字 母 顺 序 陈 列 , 并 用 逗 号 隔 开 , 例 如 :

ls(1), ps(1), group(5), passwd(5). 这 时 候 不 太 适 合 用 refer(1) 风 格 的 参 考 引 用 .

.Sh 遵 循 CONFORMING TO 如 果 那 些 命 令 , 库 函 数 或 文 件 遵 循 一 定 的 标 准 实 现 , 如 IEEE Std 1003.2 (’’POSIX.2’’) 或 ANSI X3.159-1989 (’’ANSI C89’’), 那 就 不 需 要 这 一 小 节 . 如 果 命 令 不 符 合 任 何 标 准 , 应 该 把 它 的 历 史 放 在 历 史 HISTORY 小 节 .

.Sh 历 史 HISTORY 任 何 不 属 于 已 知 标 准 的 命 令 应 该 在 这 一 节 给 出 它 的 大 致 历 史 .

.Sh 作 者 AUTHORS 如 果 有 必 要 , 把 致 谢 名 单 也 列 这 儿 .

.Sh 诊 断 DIAGNOSTICS 应 该 把 诊 断 命 令 放 在 这 一 节 .

.Sh 错 误 ERRORS 特 定 的 错 误 处 理 , 尤 其 是 库 函 数 (手 册 页 第 二 第 三 部 分 ), 放 这 儿 . ’.Er’ 宏 用 来 指 定 一 个 errno.

.Sh BUGS 明 显 的 问 题 放 这 儿 ... 可 以 增 加 一 些 用 户 制 定 的 ’.Sh’ 小 节 , 例 如 , 这 样 设 小 节 :

.Sh PAGE STRUCTURE DOMAIN 段 落 和 空 行Paragraphs and Line Spacing.

.Pp

’.Pp’ 把 段 落 命 令 放 在 所 需 的 位 置 , 可 以 产 生 一 个 空 行 . 在 ’.Sh’ 或 ’.Ss’ 宏 后 面 不 需 要 这 个 宏 , ’.Bl’ 宏 的 前 面 也 不 需 要 . ( ’.Bl’ 声 明 了 垂 直 方 向 的 距 离 , 除 非 给 出 -compact 标 志 ). 保 持 Keeps 目 前 只 实 现 了 对 单 词 的 保 持 能 力 . 这 个 宏 有 ’.Bk’ (开 始 保 持 begin-keep) 和 ’.Ek’ (结 束 保 持 end-keep ) . ’.Bk’ 宏 的 唯 一 参 数 是 -words, 用 于 防 止 在 选 项 语 句 的 中 间 断 行 . 在 make 命 令 行 参 数 的 例 子 里 (参 见 名 称 背 后 What’s in a name), keep 宏 防 止 nroff 把 标 志 和 参 数 分 成 两 行 . (事 实 上 可 以 用 选 项 宏 防 止 此 类 事 情 , 但 当 我 们 决 定 在 troff 中 作 为 基 本 选 项 , 强 制 右 边 界 对 齐 时 , 它 在 稀 疏 行 里 展 开 的 很 糟 糕 . 使 用 保 持 宏 时 需 要 多 做 点 事 , 增 加 一 个 -line 选 项 ) . 示 例 和 显 示 有 五 种 类 型 的 显 示 , 一 个 快 速 的 单 行 缩 进 显 示 ’.D1’, 快 速 的 单 行 原 文 显 示 ’.Dl’, 原 文 块 , 填 充 块 , 和 由 ’.Bd’ (begin-display) 显 示 开 始 和 ’.Ed’ (end-display) 显 示 结 束 宏 对 组 成 的 不 规 则 块 .

.D1

(D-one) 显 示 一 行 缩 进 文 字 . 该 宏 可 以 被 (其 他 宏 ) 分 析 , 但 不 能 被 调 用 .

-ldghfstru 上 面 是 这 样 产 生 的 : .Dl -ldghfstru.

.Dl

(D-ell) 显 示 一 行 缩 进 的 原 文 literal. ’.Dl’ 示 例 宏 已 经 遍 布 这 篇 文 档 . 它 允 许 缩 进 (显 示 ) 一 行 文 字 . 其 缺 省 字 体 设 为 定 宽 (原 文 ), 它 可 以 被 其 他 宏 分 析 和 识 别 . 然 而 不 能 被 其 他 宏 调 用 .

% ls -ldg /usr/local/bin 上 面 是 这 样 产 生 的 .Dl % ls -ldg /usr/local/bin.

.Bd 显 示 开 始 . ’.Bd’ 的 显 示 必 须 由 ’.Ed’ 宏 结 束 . 显 示 可 以 嵌 套 在 显 示 和 列 表 中 . ’.Bd’ 有 这 样 的 语 法 :

.Bd display-type [-offset offset_value] [-compact] 显 示 类 型 必 须 是 下 面 四 个 之 一 , 可 以 指 定 一 个 缩 进 量 . ’.Bd’.

-ragged 以 打 字 形 式 显 示 一 块 正 文 , 其 右 (和 左 )边 界 是 不 平 整 边 界 .
-filled
显 示 填 充 (格 式 化 ) 块 . 块 中 文 字 被 格 式 化 (边 界 已 经 填 充 过 , 不 再 是 左 边 不 对 齐 ).
-literal
显 示 原 文 块 , 适 用 于 源 程 序 , 或 那 种 简 单 的 , 用 table 和 空 格 调 整 的 文 字 .
-file
file_name 阅 读 并 显 示 跟 在 -file 标 志 后 面 的 文 件 . 原 文 模 式 被 打 开 , table 设 为 8个 字 符 宽 , 然 而 文 件 中 出 现 的 任 何 troff/-mdoc 命 令 都 将 被 处 理 .
-offset
string 如 果 -offset 指 定 为 下 面 字 符 串 之 一 , 这 些 字 符 串 解 释 为 对 以 后 的 正 文 块 的 缩 进 层 次 .

left 正 文 块 按 当 前 左 边 界 对 齐 , 这 是 ’.Bd’ 的 缺 省 模 式 .
center
应 该 是 把 正 文 块 布 在 中 间 . 不 幸 的 是 , 目 前 只 能 在 大 致 的 中 间 位 置 靠 左 对 齐 .
indent
按 缺 省 缩 进 值 或 table 值 缩 进 . 这 个 缺 省 缩 进 值 同 时 用 于 ’.D1’ 显 示 , 因 此 你 应 该 使 这 两 种 显 示 一 致 . 缩 进 值 一 般 设 为 6n, 大 约 2/3 英 寸 (六 个 字 符 宽 度 ).
indent-two
缩 进 缺 省 值 的 两 倍 .
right
在 距 离 右 边 界 大 约 两 英 寸 处 把 正 文 块 靠 对 齐 . 这 个 宏 要 试 验 效 果 , 有 可 能 troff 怎 么 都 弄 不 对 .

.Ed

End-display. 显 示 结 束 . 字 体 模 式 Font Modes 现 有 五 个 宏 用 于 改 变 手 册 页 的 文 字 外 观 :

.Em 文 字 可 以 用 ’.Em’ 宏 加 重 或 强 调 . 常 用 的 强 调 字 体 是 斜 体 (italic).

Usage: .Em argument ...

.Em does not

does not

.Em exceed 1024 .

exceed 1024.

.Em vide infra ) ) ,

vide infra)),

’.Em’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . 不 带 参 数 调 用 ’.Em’ 宏 是 一 个 错 误 .

.Li

’.Li’ 原 文 宏 用 来 显 示 字 符 , 变 量 , 常 数 , 任 何 希 望 照 输 入 文 字 原 样 显 示 的 内 容 .

Usage: .Li argument ...

.Li \en

\n

.Li M1 M2 M3 ;

M1 M2 M3;

.Li cntrl-D ) ,

cntrl-D),

.Li 1024 ...

1024 ...

’.Li’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 .

.Sy 一 般 说 来 symbolic 强 调 宏 无 论 在 象 征 主 义 角 度 , 还 是 传 统 的 英 语 里 , 都 是 用 黑 体 (bold) 显 示 .

Usage: .Sy symbol ...

.Sy Important Notice

Important Notice

’.Sy’ 宏 可 以 被 (其 他 宏 ) 分 析 和 调 用 . ’.Sy’ 的 参 数 可 以 用 引 号 括 起 .

.Bf 字 体 模 式 开 始 . ’.Bf’ 字 体 模 式 必 须 用 ’.Ef’ 宏 结 束 . 字 体 模 式 宏 可 以 嵌 套 . ’.Bf’ 宏 用 下 面 的 语 法 :

.Bf font-mode 字 体 模 式 必 须 是 下 列 三 种 之 一 : ’.Bf’.

Em | -emphasis 就 象 是 把 ’.Em’ 宏 用 在 整 个 正 文 块 一 样 .
Li
| -literal 就 象 是 把 ’.Li’ 宏 用 在 整 个 正 文 块 一 样 .
Sy
| -symbolic 就 象 是 把 ’.Sy’ 宏 用 在 整 个 正 文 块 一 样 .

.Ef 字 体 模 式 结 束 . 标 记 栏 和 列 表 Tagged Lists and Columns 有 多 种 用 ’.Bl’ 列 表 开 始 宏 初 始 化 的 列 表 . 表 项 用 ’.It’ 项 目 宏 指 定 , 每 一 个 列 表 必 须 用 ’.El’ 宏 结 束 . 列 表 可 以 嵌 套 在 列 表 和 显 示 中 . 栏 可 以 用 在 列 表 中 , 但 是 列 表 不 能 列 在 栏 里 . 另 外 还 可 以 指 定 列 表 属 性 , 像 标 记 宽 度 , 列 表 偏 移 , 以 及 紧 凑 模 式 (允 许 或 不 允 许 表 项 间 的 空 行 ) 在 本 文 中 大 多 使 用 了 标 记 风 格 (tag style) 的 列 表 (-tag). 作 为 步 距 变 化 , 表 示 列 表 类 型 的 列 表 类 型 是 个 突 出 来 (overhanging) 的 列 表 (-ohang). 这 种 列 表 类 型 在 TeX 用 户 中 很 流 行 , 但 看 过 很 多 页 的 标 记 列 表 后 可 能 会 觉 得 有 点 滑 稽 . ’.Bl’ 宏 可 以 接 受 下 面 的 列 表 类 型 :

-bullet
-item
-enum
这 三 个 是 最 简 单 的 列 表 类 型 . 一 旦 使 用 了 ’.Bl’ 宏 , 只 能 用 ’.It’ 宏 组 织 表 项 . 例 如 , 可 以 这 样 写 一 个 简 单 的 数 字 列 表 "

.Bl -enum -compact
.It
Item one goes here.
.It
And item two here.
.It
Lastly item three goes here.
.El 结 果 是 :

1.

Item one goes here.

2.

And item two here.

3.

Lastly item three goes here. 简 单 的 布 告 栏 :

.Bl -bullet -compact
.It
Bullet one goes here.
.It
Bullet two here.
.El 产 生 :

Bullet one goes here.

Bullet two here.

-tag
-diag
-hang
-ohang
-inset
这 些 列 表 类 型 收 集 ’.It’ 宏 指 定 的 参 数 , 并 且 创 建 一 个 标 签 , 它 可 能 会 插 入 inset 后 面 的 文 字 中 , 悬 挂 (hanged) 显 示 在 后 面 的 文 字 前 , 突 前 (overhanged) 显 示 在 更 高 位 置 , 并 且 不 能 缩 进 或 标 记 tagged. 这 个 列 表 由 ’-ohang’ 列 表 类 型 构 建 . ’.It’ 宏 只 能 被 插 入 (inset), 悬 挂 (hang), 和 标 记 列 表 类 型 宏 分 析 , 且 不 能 被 调 用 . 这 是 一 个 插 入 标 签 的 例 子 :

Tag

The tagged list (also called a tagged paragraph) is the most common type of list used in the Berkeley manuals.

Diag

Diag lists create section four diagnostic lists and are similar to inset lists except callable macros are ignored.

Hang

Hanged labels are a matter of taste.

Ohang

Overhanging labels are nice when space is constrained.

Inset

Inset labels are useful for controlling blocks of paragraphs and are valuable for converting -mdoc manuals to other formats. 下 面 是 产 生 这 个 例 子 的 源 文 本 :

.Bl -inset -offset indent
.It Em Tag
The tagged list (also called a tagged paragraph) is the
most common type of list used in the Berkeley manuals.
.It Em Diag
Diag lists create section four diagnostic lists
and are similar to inset lists except callable
macros are ignored.
.It Em Hang
Hanged labels are a matter of taste.
.It Em Ohang
Overhanging labels are nice when space is constrained.
.It Em Inset
Inset labels are useful for controlling blocks of
paragraphs and are valuable for converting
.Nm -mdoc
manuals to other formats.
.El 这 是 含 有 两 个 表 项 的 悬 挂 列 表 :

Hanged

labels appear similar to tagged lists when the label is smaller than the label width.

Longer hanged list labels

blend in to the paragraph unlike tagged paragraph labels. 它 们 的 源 文 本 为 :

.Bl -hang -offset indent
.It Em Hanged
labels appear similar to tagged lists when the
label is smaller than the label width.
.It Em Longer hanged list labels
blend in to the paragraph unlike
tagged paragraph labels.
.El 带 有 可 选 宽 度 项 的 标 记 列 表 可 以 控 制 标 记 的 宽 度 .

SL

sleep time of the process (seconds blocked)

PAGEIN

number of disk I/O’s resulting from references by the process to pages not loaded in core.

UID

numerical user-id of process owner

PPID

numerical id of parent of process process priority (non-positive when in non-interruptible wait) 源 文 本 是 :

.Bl -tag -width "PAGEIN" -compact -offset indent
.It SL
sleep time of the process (seconds blocked)
.It PAGEIN
number of disk
.Tn I/O Ns ’s
resulting from references
by the process to pages not loaded in core.
.It UID
numerical user-id of process owner
.It PPID
numerical id of parent of process process priority
(non-positive when in non-interruptible wait)
.El 可 接 受 的 宽 度 说 明 :

-width Fl 把 宽 度 设 置 为 标 志 (flag) 的 缺 省 宽 度 . 所 有 可 调 用 的 宏 都 有 一 个 缺 省 宽 度 值 . 目 前 ’.Fl’ 的 值 设 为 十 个 字 符 宽 度 , 大 约 5/6 英 寸 .

-width 24n 设 置 宽 度 为 24 个 字 符 宽 度 , 大 约 两 英 寸 . 要 使 比 例 调 整 正 常 , 字 母 ’n’ 必 不 可 少

-width ENAMETOOLONG 设 置 宽 度 为 所 给 串 的 长 度 .

-width "int mkfifo" 同 样 , 设 置 宽 度 为 所 给 串 的 长 度 . 如 果 没 有 为 标 记 列 表 类 型 指 定 宽 度 , 第 一 次 调 用 ’.It’ 的 时 候 , 格 式 化 软 件 试 图 决 定 适 当 的 宽 度 . 如 果 ’.It’ 的 第 一 个 参 数 是 可 调 用 宏 , 就 使 用 这 个 宏 的 缺 省 宽 度 , 就 像 把 宏 名 当 做 宽 度 . 可 是 如 果 列 表 中 的 其 他 表 项 得 到 另 一 个 可 调 用 宏 , 则 认 为 它 是 新 的 , 嵌 套 的 列 表 . 预 定 义 串 PREDEFINED STRINGS 下 面 的 串 是 预 定 义 的 , 可 以 用 在 troff 的 串 翻 译 序 列 ’\*(xx’ 中 , 这 里 的 xx 就 是 定 义 的 串 名 ; 以 及 串 翻 译 序 列 ’\*x’, 这 里 的 x 是 串 名 . 翻 译 序 列 可 以 用 在 文 本 的 任 何 地 方 .

String

Nroff

Troff

<=

<=

≤ >=

>=

Rq

’’

’’

Lq

’’

’’

ua

^

^

aa

´

ga

`

`

q

"

"

Pi

pi

pi

Ne

!=

Le

<=

Ge

>=

Lt

<

>

Gt

>

<

Pm

+-

±

If

infinity

infinity

Na

NaN

NaN

Ba

|

| 注 意 : 那 个 名 为

’q’ 的 串 应 该 写 成 ’\*q’, 因 为 它 只 有 一 个 字 符 . 诊 断 DIAGNOSTICS

-mdoc 的 除 错 系 统 比 较 有 限 , 但 是 可 以 帮 助 你 检 测 出 微 妙 的 错 误 , 例 如 参 数 名 和 内 部 寄 存 器 或 宏 名 冲 突 . (是 什 么 ?) 寄 存 器 是 troff 的 算 术 存 储 类 , 用 一 到 二 个 字 符 命 名 . -mdoc 对 troff 和 ditroff 而 言 , 所 有 -mdoc 的 内 部 寄 存 器 由 两 个 字 符 组 成 , 格 式 是 <大 写 字 母 > <小 写 字 母 > 如 ’Ar’, <小 写 字 母 > <大 写 字 母 > 如 ’aR’ 或 <字 母 > <数 字 > 如 ’C1’. 作 为 乱 上 加 乱 , troff 有 它 自 己 的 内 部 寄 存 器 , 由 两 个 小 写 字 母 组 成 , 或 者 是 一 个 点 加 上 一 个 字 母 , 或 者 是 转 义 字 符 (meta-character) 和 字 符 . 已 经 介 绍 过 的 示 例 中 展 示 过 怎 样 用 转 义 序 列 ’\&’ 防 止 解 释 宏 . 这 办 法 同 样 适 用 于 内 部 寄 存 器 名 . 如 果 未 经 转 义 的 寄 存 器 名 出 现 在 宏 请 求 的 参 数 列 表 中 , 其 后 果 不 可 预 测 . 一 般 说 来 , 如 果 大 段 的 文 字 没 有 出 现 在 该 出 现 的 地 方 , 或 者 短 句 , 如 标 签 , 消 失 了 , 多 半 是 这 个 地 方 误 解 了 参 数 列 表 中 的 参 数 类 型 . 既 然 你 的 母 亲 都 没 打 算 让 你 记 住 那 些 乱 七 八 糟 的 东 西 , 那 就 用 一 种 办 法 来 找 出 参 数 是 否 有 效 : ’.Db’ (debug) 宏 可 以 显 示 出 对 大 多 数 宏 的 参 数 列 表 的 解 释 . 诸 如 ’.Pp’ 之 类 的 宏 不 包 含 调 试 信 息 , 但 是 所 有 可 调 用 宏 包 含 , 我 们 强 烈 建 议 一 旦 有 疑 点 , 打 开 ’.Db’ 宏 .

Usage: .Db [on | off] 在 这 个 示 例 中 , 我 们 把 介 于 debug 宏 之 间 的 文 本 故 意 弄 出 点 错 误 (标 志 参 数 ’aC’ 应 该 写 成 ’\&aC’ ):

.Db on
.Op Fl aC Ar file )
.Db off 结 果 输 出 为 :

DEBUGGING ON
DEBUG(argv) MACRO: ’.Op’ Line #: 2

Argc: 1 Argv: ’Fl’ Length: 2

Space: ’’ Class: Executable

Argc: 2 Argv: ’aC’ Length: 2

Space: ’’ Class: Executable

Argc: 3 Argv: ’Ar’ Length: 2

Space: ’’ Class: Executable

Argc: 4 Argv: ’file’ Length: 4

Space: ’ ’ Class: String

Argc: 5 Argv: ’)’ Length: 1

Space: ’ ’ Class: Closing Punctuation or suffix

MACRO REQUEST: .Op Fl aC Ar file )

DEBUGGING OFF 调 试 信 息 的 第 一 行 是 调 用 的 宏 名 , 这 里 是 ’.Op’ 和 它 所 在 的 行 号 . 如 果 涉 及 了 一 个 或 多 个 文 件 (特 别 是 其 他 文 件 包 含 进 来 ), 行 号 有 可 能 失 灵 . 但 如 果 只 有 一 个 文 件 , 它 应 该 是 准 的 . 第 二 行 给 出 了 参 数 计 数 , 参 数 (’Fl’) 和 它 的 长 度 . 如 果 参 数 的 长 度 是 两 个 字 符 , 将 会 测 试 看 它 能 否 执 行 (不 幸 的 是 ,含 有 非 零 值 的 寄 存 器 看 上 去 都 能 执 行 ). 第 三 行 给 出 分 配 给 类 的 空 间 , 以 及 类 的 类 型 . 这 里 的 问 题 是 , 参 数 aC 不 应 该 可 执 行 . 类 的 四 种 类 型 是 字 符 串 , 可 执 行 类 , 结 束 标 点 , 和 开 始 标 点 . 最 后 一 行 显 示 了 读 入 的 完 整 参 数 行 . 下 个 例 子 里 , 惹 祸 的 ’aC’ 被 转 义 了 :

.Db on
.Em An escaped \&aC
.Db off

DEBUGGING ON
DEBUG(fargv) MACRO: ’.Em’ Line #: 2

Argc: 1 Argv: ’An’ Length: 2

Space: ’ ’ Class: String

Argc: 2 Argv: ’escaped’ Length: 7

Space: ’ ’ Class: String

Argc: 3 Argv: ’aC’ Length: 2

Space: ’ ’ Class: String

MACRO REQUEST: .Em An escaped &aC

DEBUGGING OFF 参 数’\&aC’ 表 现 出 同 样 的 长 度 2, 这 是 因 为 ’\&’ 序 列 的 长 度 为 零 , 但 是 不 存 在 叫 做 ’\&aC’ 的 寄 存 器 , 因 此 它 的 类 型 是 字 符 串 . 其 他 诊 断 内 容 是 使 用 报 告 等 , 能 够 自 我 解 释 的 .

GROFF, TROFF AND NROFF

The -mdoc 宏 包 不 需 要 和 groff 的 兼 容 模 式 . 为 了 便 于 在 线 阅 读 , 这 个 宏 包 阻 止 了 分 页 , 页 头 , 页 脚 之 类 常 常 在 nroff 中 出 现 的 中 断 . 此 时 即 使 在 手 册 页 尾 , groff (和 参 数 -Tascii ) 也 不 会 提 示 什 么 . 对 分 页 的 阻 止 使 得 nroff’d 文 件 不 适 合 硬 拷 贝 (hardcopy). 有 一 个 名 为 ’cR’ 的 寄 存 器 可 以 通 过 在 文 件 /usr/src/share/tmac/doc-nroff (依 赖 于 宿 主 系 统 ) 中 置 零 , 恢 复 传 统 风 格 . 相 关 文 件 FILES

/usr/share/tmac/tmac.doc 手 册 宏 包
/usr/share/misc/mdoc.template
编 写 手 册 的 模 板
/usr/share/examples/mdoc/*
一 些 手 册 页 的 例 子 另 见 SEE ALSO

man(1), troff(1), mdoc(7)

BUGS 仍 然 没 有 解 决 在 标 志 参 数 中 的 连 字 符 , 在 描 述 DESCRIPTION 小 节 偶 尔 会 出 点 麻 烦 (在 连 字 符 处 断 行 ). 文 档 中 没 有 声 明 预 定 义 串 . 还 没 有 把 3f 小 节 加 进 头 例 程 (header routine) 中 .

’.Nm’ 字 体 不 应 当 在 NAME 小 节 中 改 变 . 应 该 检 查 ’.Fn’ 防 止 行 太 短 的 时 候 断 行 . 偶 然 它 会 断 开 反 括 弧 , 而 有 时 候 如 果 某 行 已 满 时 , 看 上 去 会 很 可 笑 . 当 使 用 nroff 格 式 化 文 档 时 , 防 止 页 头 和 页 脚 (不 是 初 始 的 头 和 脚 ) 断 开 的 方 法 有 可 能 偶 尔 在 页 的 底 部 产 生 一 个 不 可 见 的 部 分 填 满 的 行 (空 行 ). 列 表 和 显 示 宏 不 做 任 何 保 存 , 显 然 它 应 该 做 的 .

[中 文 版 维 护 人 ] 徐 明 <xuming [AT] users.net>

[中 文 版 最 新 更 新 ]

2003/05/13 《 中 国 Linux论 坛 man手 册 页 翻 译 计 划 》
http://cmpp.linuxforum.net
本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh

BSD December 30, 1993 BSD