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 Usage 在 troff(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 术 语 中 , infile 和 outfile 称 为 参 数 . 产 生 上 述 效 果 的 宏 是 这 样 的 :
.Nm filter
.Op Fl flag
.Ar infile outfile 第 三 种 情
况 讨 论 命 令 及
其 语 法 , 包 括 它
们 的 例 子 , 可 能
还 有 更 多 细 节 .
上 面 的 例 子 里 ,
可 以 把 infile 和
outfile 理 解 为 操
作 参 数 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
.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 |
||||
|
.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 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
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