0

我想创建一个包含 BSD 手册页集合的站点,类似于 man.cgi,但静态 HTML,并且还包括端口树中的所有内容。

我已经尝试从最近发布的所有 OpenBSD 包中解包man/,我注意到虽然有些包提供了.mdocman/man?/page.?man/cat?/page.0

我可以使用groff -mdoc -Thtmlormandoc -Txhtml中的mdoc文件man/man?/,但是如何将cat文件从man/cat?/转换为 XHTML?

FreeBSD.org 和 NetBSD.org 上的那些 man.cgi 脚本是如何做到这一点的?

4

1 回答 1

0

MirBSD 中,我们将所有在线手册页作为静态 HTML 提供(实际的 Web CGI 非常小),并使用狡猾的脚本将输出转换nroff -Tcol foo.1 | col -x为 XHTML/1.1——尽管为了使其工作,我们不得不调整 nroff (1)mdoc 和 man 宏包(还有 ms 和 me 等)略。不过,我们只提供来自 base 的所有联机帮助页,以及历史悠久的 BSD 文档。

此外,GNU gnroff 没有 -Tcol,但 -Tascii 可以工作——但如果你想将它与 gnroff 输出一起使用,你可能需要相应地更改正则表达式。

编辑此文件时要格外小心:它包含正常的 UTF-8 内容以及额外的控制字符和无效的字节序列;如果你不小心,你的编辑器损坏它。(我自己正在使用jupp。)

如需更多关于此的实时反馈,请随时访问 MirBSD IRC 频道。

至于你最初的目标:我建议只从二进制包中收集手册页,因为它们经常在编译过程中被改变,比如在 autoconf 中被 AC_SUBST 改变,甚至只作为包构建的一部分生成。

于 2013-09-17T21:46:45.730 回答