下一节: , 上一级: 文档   [目录][索引]


6.1 GNU 手册

GNU 系统首选的文档格式是 Texinfo 格式化语言。每个 GNU 软件包都应该(理想情况下)有 Texinfo 格式的文档,既用于参考也用于学习。Texinfo 允许使用 TeX 生成高质量的格式化书籍,并生成 Info 文件。也可以从 Texinfo 源代码生成 HTML 输出。请参阅 Texinfo 手册,可以是纸质版,也可以是通过 info 或 Emacs Info 子系统(C-h i)获取的在线版本。

现在,一些其他格式(如 Docbook 和 Sgmltexi)可以自动转换为 Texinfo。如果转换结果良好,通过这种方式生成 Texinfo 文档是可以的。

确保你的手册对于对该主题一无所知并且从头开始阅读的读者来说是清晰易懂的。这意味着在开头涵盖基本主题,而高级主题仅在后面介绍。这也意味着在首次使用时定义每个专业术语。

请记住,GNU 手册(和其他 GNU 文档)的受众是全球性的,并且会被使用多年,甚至几十年。这意味着读者可能具有非常不同的文化参考点。几十年后,除了老年人之外,所有人都会有非常不同的文化参考点;今天“每个人都知道”的许多事情可能大多会被遗忘。

因此,尽量避免以依赖文化参考点才能正确理解的方式进行写作,或者以会阻碍不认识这些参考点的人阅读的方式提及它们。

同样,在选择词语(技术术语除外)、语言结构和拼写时要保守:目标是使十年前的读者也能理解它们。在任何关于时尚的竞争中,GNU 写作甚至不应该有参赛资格。

如果直接相关或作为题外话,偶尔提及一次空间或时间上本地化的参考点或事实是可以的。当这些少数内容(无论如何都会很突出)不再有意义时,更改它们不会花费太多精力。

相比之下,在相关时,始终适合提及 GNU 和自由软件运动的概念。这些是我们信息的中心部分,因此我们应该抓住机会提及它们。它们是基本的道德立场,因此几乎永远不会改变。

程序员倾向于将程序的结构作为其文档的结构。但是,这种结构不一定适合解释如何使用程序;对于用户来说,它可能是无关紧要和令人困惑的。

相反,组织文档的正确方法是根据用户在阅读时会想到的概念和问题。该原则适用于每个级别,从最低级别(段落中句子的排序)到最高级别(手册中章节主题的排序)。有时,这种思想结构与所记录的软件实现的结构相匹配,但通常它们是不同的。学习编写好的文档的重要部分是学会注意何时你在不经意间将文档的结构设置得像实现一样,阻止自己,并寻找更好的替代方案。

例如,GNU 系统中的每个程序都应该在一个手册中进行文档记录;但这并不意味着每个程序都应该有自己的手册。那是在遵循实现的结构,而不是帮助用户理解的结构。

相反,每个手册都应该涵盖一个连贯的主题。例如,我们不为 diff 编写一个手册,为 diff3 编写一个手册,而是为一个“文件比较”编写一个手册,其中涵盖了这两个程序以及 cmp。通过将这些程序放在一起记录,我们可以使整个主题更加清晰。

讨论程序的手册当然应该记录程序的所有命令行选项和所有命令。它应该给出它们的使用示例。但是,不要将手册组织为功能列表。相反,按子主题逻辑地组织它。解决用户在考虑程序所做的工作时会提出的问题。不要只是告诉读者每个功能可以做什么,而要说出它适合做什么工作,并展示如何将其用于这些工作。解释推荐的用法,以及用户应该避免使用的用法。

通常,GNU 手册应该既作为教程又作为参考。它应该设置为通过 Info 方便地访问每个主题,并适合从头到尾阅读(附录除外)。GNU 手册应该为从头开始阅读的初学者提供良好的入门介绍,并且还应该提供黑客想要的所有细节。Bison 手册就是一个很好的例子 - 请看一看,了解我们的意思。

这并不像初听起来那么难。将每个章节安排为主题的逻辑分解,但对节进行排序,并编写它们的文本,以便通读本章是有意义的。在将书组织成章节时,以及将节组织成段落时,也要这样做。需要记住的是,在每个点上,解决前面文本提出的最基本和最重要的问题。

如有必要,在手册的开头添加一些纯粹是教程并涵盖该主题基础知识的额外章节。这些为初学者理解手册的其余部分提供了框架。Bison 手册提供了一个如何做到这一点的很好的例子。

为了作为参考,手册应该有一个索引,其中列出了程序的所有函数、变量、选项和重要概念。一个组合索引应该足以满足短手册的需求,但是对于复杂的软件包,有时最好使用多个索引。Texinfo 手册包含有关准备好的索引条目的建议,请参阅 制作索引条目,出自 GNU Texinfo,并参阅 定义索引条目,出自 GNU Texinfo

不要使用 Unix 手册页作为编写 GNU 文档的模型;它们中的大多数都很简洁、结构不良,并且对基本概念的解释不充分。(当然,也有一些例外。)此外,Unix 手册页使用一种特定的格式,该格式与我们在 GNU 手册中使用的格式不同。

请在手册中包含一个电子邮件地址,用于报告手册文本中的错误。

请不要使用 Unix 文档中使用的术语“pathname”;请使用“file name”(两个词)代替。我们仅将术语“path”用于搜索路径,即目录名称列表。

请不要使用术语“illegal”来指代计算机程序的错误输入。请使用“invalid”来指代它,并将术语“illegal”保留给法律禁止的活动。

请不要在函数名称后写 '()' 只是为了表明它是一个函数。foo () 不是一个函数,它是一个没有参数的函数调用。

在可能的情况下,请坚持使用主动语态,避免使用被动语态,并使用现在时,而不是将来时。例如,写“函数 foo 返回一个包含 ab 的列表”,而不是“将返回一个包含 ab 的列表。”主动语态的一个优点是它要求你陈述句子的主语;使用被动语态,你可能会省略主语,这会导致模糊。

当语法要求时,使用将来时是正确的,例如,“如果键入 x,计算机将在 10 秒后自毁。”


下一节: , 上一级: 文档   [目录][索引]