9. 迁移工具

DocBook 的第二个最大问题是将旧式演示标记转换为 DocBook 标记所需的工作量。人类通常可以自动解析文档的演示文稿为逻辑结构,因为(例如)他们可以从上下文中判断何时斜体字体表示“强调”,何时表示其他含义,例如“这是一个外来短语”。

在将文档转换为 DocBook 的过程中,需要明确区分这些类型的差异。有时它们会出现在旧标记中;但通常不会,并且缺失的结构信息必须通过巧妙的启发式方法推断出来,或者由人工添加。

以下是各种其他格式的转换工具的状态摘要

GNU Texinfo

自由软件基金会已做出政策决定,支持 DocBook 作为交换格式。Texinfo 具有足够的结构来实现相当不错的自动转换,并且 4.x 版本的 makeinfo 具有--docbook开关,用于生成 DocBook。更多信息请访问 makeinfo 项目页面

POD

有一个 POD::DocBook 模块,可以将 Plain Old Documentation 标记转换为 DocBook。它声称可以转换除 L<> 斜体标签之外的所有 POD 标签。该手册页还指出“DocBook 中不支持嵌套的 =over/=back 列表。” 但指出该模块已经过大量测试。

LaTeX

LaTeX 是一种(主要是)结构化标记宏语言,构建于 TeX 格式化程序之上。有一个名为 TeX4ht 的项目(根据 PassiveTeX 的作者所述)可以从 LaTeX 生成 DocBook。

man 页面和其他基于 troff 的标记

这通常被认为是最大且最棘手的转换问题。事实上,基本的 troff(1) 标记处于太低的演示级别,自动转换工具无法发挥太大作用。但是,如果我们考虑从用宏包(如 man(7))编写的文档源进行转换,情况会明显好转。这些具有足够的结构特征,可以进行一些自动翻译。

我自己编写了一个工具来完成这项工作,因为我找不到任何其他工具可以完成一半像样的工作(而且这个问题很有趣)。它被称为 doclifter。它可以将 man(7)mdoc(7)ms(7)me(7) 宏转换为 SGML 或 XML DocBook。有关详细信息,请参阅文档。