Boost C++ 库

...世界上最受推崇和设计最精妙的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

为 Boost 编写文档 - HTML 设计 - Boost C++ 函数库

为 Boost 编写文档

HTML 设计

介绍
HTML 文档中包含的通用页面
索引
概述
定义
基本原理
配置信息
常见问题
参考文献
致谢
头文件参考
布局
页面横幅
页面索引
文档内容
脚注
修订信息
版权信息
Format
层叠样式表
Boost 样式表
模板
索引页模板
概述页模板
定义页模板
原理页模板
配置页模板
FAQ (常见问题解答) 页模板
参考文献页模板
致谢页模板
头文件页模板

引言

Boost 对库提交者编写 HTML 文档的设计没有要求。如果您要提交的库已经以 HTML 格式或易于转换为 HTML 的格式提供了文档,那么您无需阅读本文档。但是,如果您尚未编写文档,或者您预计需要翻译不容易转换为 HTML 的格式的文档,那么本文档可以为您提供有关如何用 HTML 编写文档的大量信息。

本文档在几个地方假定您正在编写文档以符合 文档结构 文档中所述的结构。您的文档内容没有要求遵循这些指南,但它们提供了一种有效的方式,以简洁而精确的方式与许多 Boost 用户熟悉的技术规范进行沟通。

本文档还包含指向 HTML 模板文件 的链接,这些文件可用于快速开发库提交的文档。这些模板遵循本文档以及 文档结构 文档中提出的指南。

HTML 文档中包含的通用页面

大多数 HTML 文档项目都会包含一些通用页面。以下是这些通用页面的通用指南。

索引

索引页是用户浏览文档时看到的第一页。通常,此页面不应包含任何实际内容,而应包含指向特定内容的链接列表。至少,此列表应包含指向文档中包含的每个 HTML 页面的链接。可选地,可以为指向页面内特定主题的链接提供子列表。这些子列表应基于用于特定主题的标题标签的级别形成“树”层次结构。包含每个页面的此类子列表可能会使索引相当冗长,并且由于每个页面都应包含其自己的 页面索引,因此如果避免此类子列表,可能会使文档导航更容易。但是,此指南有一个例外:参考文档应包含指向库中每个头文件的链接,以及一个包含指向头文件中找到的每个宏、值、类型、类、函数和对象的链接的子列表(请参见 文档结构)。用户并不总是确定其中任何一个可能包含在哪个头文件中,因此索引中的这种结构可以方便地导航参考文档。

索引列表通常应使用 HTML“定义列表”(<dl> 和 <dt> 标签)构建。定义列表没有项目符号或有序的规范,并且比无序列表(<ul> 和 <li> 标签)或有序列表(<ol> 和 <li> 标签)产生更干净的布局。如果您选择使用通用的 Boost 样式表,则应将 class="index" 属性/值对添加到 <dl> 标签。

提供了索引页 模板 以供使用。

概述

概述页用于向读者介绍库。它应该对库的目的进行高层次的概述,并向读者介绍他们可能不熟悉的任何概念。这也可以是“轻度”原理介绍的合适场所,尽管对任何原理进行更彻底的介绍最好放在 原理页 中。

与大多数内容页面一样,概述页应包含 页面索引

提供了概述页 模板 以供使用。

定义

定义页用于提供用户可能不熟悉的术语定义列表。

定义列表通常应使用 HTML“定义列表”(<dl> 和 <DT> 标签)构建。定义列表没有项目符号或有序的规范,并且比无序列表(<UL> 和 <li> 标签)或有序列表(<ol> 和 <li> 标签)产生更干净的布局。如果您选择使用通用的 Boost 样式表,则应将 class="definition" 属性/值对添加到 <dl> 标签。

由于此页面的内容应仅包含定义列表,因此不应有 页面索引

提供了定义页 模板 以供使用。

原理

原理页用于提供库设计原理的长篇描述。这些信息有助于用户理解库为何按此方式设计,并可能减少许多常见问题解答的频率。有关原理重要性的更详细描述,请参阅一般提交指南中的 原理的原理

与大多数内容页面一样,原理页应包含 页面索引

提供了原理页 模板 以供使用。

配置信息

配置信息页用于记录库使用的配置宏。这些宏属于三个组之一:库实现者使用的宏,在 <boost/config.hpp> 中定义;库用户用于检测平台配置信息的宏;以及库用户定义的用于配置库行为的宏。

与大多数内容页面一样,概述页应包含 页面索引

提供了配置页 模板 以供使用。

常见问题解答

随着库的成熟,用户将会有关于库使用的问题。用户经常会反复问同一个问题。与其每次被问到时都要回答,不如使用“常见问题解答”(通常称为 FAQ)页面来记录问题和答案。这不仅对用户,而且对维护者来说都是非常有价值的文档,因此应该从一开始就提供一个 FAQ 页面。即使没有明显会成为 FAQ 的问题,初始页面也可以仅表明还没有 FAQ。这个空的占位符有助于向用户表明您计划在 FAQ 出现时进行处理。

FAQ 页的 页面索引 应包含文档中所有问题的列表。实际的问题条目应以标题标签格式化问题,以标准段落格式化答案。这提供了简洁易读的清晰展示。

提供了常见问题解答页 模板 以供使用。

参考文献

参考文献页用于记录文档中引用的外部资源的所有参考文献信息。文档中使用了括号引用,链接到参考文献页中的条目。参考文献条目提供有关外部资源的详细信息,并且可能包含指向资源的超链接(如果在线可用)。有几种正式的参考文献写作风格。您可以自行选择风格,但可以参考 此处 提供的较好风格之一。

由于参考文献页应仅包含参考文献信息,因此不需要 页面索引

提供了参考文献页 模板 以供使用。

致谢

致谢页用于在适当的时候给予赞誉。当个人对设计或实现提供输入时,或者当您使用他人的工作时,您应该感谢他们。这是您希望别人给予您的礼貌,因此您应该努力在自己的文档中感谢所有其他人的努力。

由于致谢页应仅包含致谢列表,因此不需要 页面索引

提供了致谢页 模板 以供使用。

头文件参考

头文件参考页是您文档中最重要的页面。它们记录了所有库头文件,包括其中定义的所有宏、值、类型、类、函数和对象。总的来说,遵循 文档结构 中的指南来编写这些页面的内容可能很有用。

与大多数内容页面一样,头文件参考页应包含 页面索引

提供了头文件参考页 模板 以供使用。

布局

在您的许多页面中都会频繁使用某些页面布局概念。本节概述了一些您可以遵循的通用指南,用于为您的文档设计这些布局概念。

页面横幅

页面横幅位于页面最顶部,提供关于页面内容的快速信息。这包括 Boost 标志,表明该页面是 Boost 网站的一部分;文档的标题(通常是库名);以及页面标题。Boost 标志应超链接到索引页上的 Boost 主页,以及所有其他页面上的索引页。这使用户能够轻松地浏览 Boost 网站和文档。HTML 页面的 <title> 标签应由文档标题和页面标题组成,并用连字符分隔。

页面横幅应使用 <hr> 标签与页面其余部分分隔开。这有助于清晰地区分实际内容和标题信息,并产生更清晰的文本。

页面索引

页面索引用于快速导航到页面上的文档各个部分,当存在时,应位于页面横幅正下方。

索引列表通常应使用 HTML“定义列表”(<dl> 和 <DT> 标签)构建。定义列表没有项目符号或有序的规范,并且比无序列表(<UL> 和 <li> 标签)或有序列表(<ol> 和 <li> 标签)产生更干净的布局。如果您选择使用 Boost 样式表,则应将 class="page-index" 属性/值对添加到 <dl> 标签。

大多数页面都应包含页面索引。

文档内容

页面的实际文档内容将根据各个页面的特定需求进行格式化,并且如果存在页面索引,则应放在页面索引之后,如果不存在,则放在页面横幅之后。通常,文档内容将以段落文本的形式出现在章节标题下方。

脚注

可以在页面的文档中使用脚注。在文档内容中,脚注引用应采用括号内的脚注编号(括号使读者更容易点击超链接)的形式,超链接到页面文档内容底部的实际脚注。您可以选择使用 <sup> 标签来格式化此类脚注编号,或者,更可取的是,您可以使用 CSS 样式类来区分该数字是脚注而不是实际文本的一部分。如果您选择使用通用的 Boost 样式表,则为此目的定义了一个 footnote 类。

修订信息

每页底部都应包含一些修订信息,指示页面最后一次修订的时间。此信息应使用 <hr> 标签与页面其余部分分隔开。以下 HTML 代码片段可用于跟踪此修订信息(此代码使用 Boost 网站上存在的一些服务器组件来自动跟踪修订日期,而无需手动编辑日期文本)。

<hr>
<p>Revised
  <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
  01 January, 2001
  <!--webbot bot="Timestamp" endspan i-checksum="39359" -->
</p>

版权信息

页面最底部应包含适用于该文档的任何版权信息。

格式

本节提供使用 HTML 格式化文档的通用指南。对各种“通用页面”的描述提供了特定文档部分的格式化详细信息,这些详细信息应覆盖这些指南。

代码

文档中的代码应放在 <code></code> 或 <pre></pre> 标签内。对于与文本内联的代码,使用 <code></code> 标签,而 <pre></pre> 标签用于代码“块”。如果使用层叠样式表为这些标签指定格式,则应使用固定宽度的无衬线字体。这确保代码易于与其余文本区分开。将 <pre></pre> 标签的样式设置为缩进文本也可能很有益,以帮助将代码块与其他结构 HTML 块分开。 Boost 样式表 指定了这些标签的格式。

注意:“代码”包括变量名、函数名等。

列表

列表应在 HTML 中构造为无序列表(<UL> 和 <li> 标签)、有序列表(<ol> 和 <li> 标签)或定义列表(<dl> 和 <DT> 标签)。当需要一组没有逻辑顺序的项目时,使用无序列表,例如库定义的可用于模板参数的数据类型列表。当项目集合必须按逻辑顺序分组时,使用有序列表,例如在枚举一个动作逻辑上执行的步骤时。当列表不仅包含没有逻辑顺序的项目,还包含项目的定义/描述等时,使用定义列表。一个很好的例子是 文档结构 中描述的函数规范。

图形

图形应尽可能少用,甚至不用。图形图像极大地影响许多人的下载时间,这可能会阻止用户阅读文档。如果您需要图形图像来帮助说明文档中的内容,请考虑仅在文档中提供指向图像的链接,而不是将其直接嵌入文本中。如果要在文档文本中包含图像,则应在 <img> 标签中指定图像的大小,以便在图像加载之前允许用户的浏览器优化文本格式。

不间断空格

HTML 文本中应避免使用不间断空格(&nbsp;)。通常有更合适的方式来格式化文档,例如使用列表结构或将缩进指定为样式属性或在层叠样式表中。

层叠样式表

层叠样式表允许您为 HTML 文档应用一些高级格式化样式。更重要的是,它们允许您在一个文件中更改格式,并影响使用该样式表的所有页面。与其费力地在 HTML 中生成特定格式,不如通过样式表指定格式通常更简单、更灵活。

Boost 样式表

使用层叠样式表格式化 HTML 的概念是一个好主意,因此将其应用于整个 Boost 站点可能是有益的。当然,我们不能强制要求这样做(如果 Boost 对提交有此类琐碎要求,很可能会阻止许多程序员做出贡献)。但是,我们仍然提供了一个“标准”的 Boost 样式表(https://boost.ac.cn/boost.css),以便贡献者能够快速轻松地生成清晰一致的文档,从而反映 Boost 的“品牌”,如果他们选择这样做的话。如果以后决定更新 Boost 的“品牌”,可以在此单个文件中进行,所有使用该样式表的文档将自动更新。

Boost 提供的样式表不仅指定了许多标准标签的样式,还指定了几种样式“类”。类是为给定标签指定的,而不是应用于给定标签类型的所有实例。下面是 Boost 样式表中指定的类列表以及使用它们的时间说明:

index 编写索引列表时用于 <dl> 标签。
page-index 编写页面索引列表时用于 <dl> 标签。
Footnote 编写脚注编号时使用。
function-semantics 编写函数语义列表时用于 <dl> 标签。

模板

可以使用 HTML“模板”来代替手工编写每个 HTML 页面。下面的列表提供了编写 Boost 贡献文档时可用的模板链接。这些模板中提供的链接假定文件将位于 boost/libs/library/doc 的“传统”目录层次结构中。如果文件将位于其他位置,则可能需要进行更正。

注意:由于这些“模板”只是 HTML 页面,因此只需单击下面的链接即可在浏览器中加载模板。您需要使用特定于浏览器的下载文件的方法,而不是将它们加载到浏览器中(例如,在大多数 Windows 浏览器中,您可以右键单击链接并从上下文菜单中选择相应的命令)。


Valid HTML 4.01 Transitional

修订2006 年 12 月 4 日

版权所有 © 2001 William E. Kempf

根据 Boost 软件许可 1.0 版分发。(请参阅附带文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)