man.cgi如何处理cat与mdoc手册页?

时间:2013-03-13 20:51:30

标签: terminal bsd cat man groff

我想创建一个包含BSD man-pages集合的站点,类似于man.cgi,但是静态HTML,其中包括来自ports树的所有东西。

我已经尝试从最近发布的所有OpenBSD软件包中解压缩man/,我注意到虽然有些软件包提供了mdoc个页面,但在man/man?/page.?中,仅有一些在man/cat?/page.0

中提供终端格式化页面

我可以对groff -mdoc -Thtml中的mandoc -Txhtml文件使用mdocman/man?/,但如何从cat转换man/cat?/个文件进入XHTML?

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

1 个答案:

答案 0 :(得分:0)

MirBSD中,我们将所有在线联机帮助文件作为静态HTML(实际的网络CGI非常小)提供,并使用crafty scriptnroff -Tcol foo.1 | col -x的输出转换为XHTML /1.1 - 尽管如此,为了实现这一点,我们必须稍微调整nroff(1) mdoc和man macropackages(以及ms和me等)。我们只从基地发送所有联机帮助页,以及历史上的BSD文档。

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

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

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

至于你的原始目标:我建议只从二进制包中获取联机帮助页,因为它们经常在编译期间被更改,例如在autoconf中通过AC_SUBST,或者甚至仅作为包构建的一部分生成。