0

我正在使用一个没有索引的 CHM 文件,这使得搜索变得困难。

是否可以以某种方式对其进行反编译并使用索引重新创建?

4

1 回答 1

1

你想要什么,一种构建工具的方法,或者一个可以为你轻松完成的工具?我没有后者,但我确实知道一种方法来做前者。(这是一个编程论坛 :-)

下面的 delphi/freepascal 程序/脚本从 latex 2 html 转换器 (tex4ht) 加载多文件 HTML 输出,修复断开的链接,重建 TOC 并折叠在一个单独的 (kwd) 文件中,其中包含关键字到索引中。

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/compilelatexchm.pp?view=markup&root=docs

您可以尝试使用 html 解析例程来增强此功能,以扫描关键字、手动过滤它们,然后将其反馈给修改后的脚本,从 CHM 解压缩器的输出开始。(CHM解压工具是Free Pascal 2.4.4自带的,这些也可以把CHM内部文件存成普通文件,生成时可以复用)

该脚本看起来很复杂,但这部分是因为它重写了 HTML 代码(主题标题、TOC 突变、链接修复)。


更新到下面的评论。

CHM 包不生成索引。文档工具(delphicodetodoc 或 fpdoc)必须将相关的索引信息传递给 CHM 编译器。作为 XML 或通过构建调用各种方法的树。如果你的 html 是从 delphitodoc 之类的工具生成的,那么尝试使用上述方法自己重建索引是很疯狂的。该工具具有更高级别的视图,可以生成更高质量的索引,并且适应它的工作可能会更少。

请注意,我假设您真正的意思是索引,而不是全文搜索,它是自动的。

我不知道 delphicodetodoc 是如何工作的(并且由于严格的构建要求,我不会尝试),但听起来 delphicodetodoc 的问题在 CHM 生成中并不是那么好。

fpdoc 的设计决定是它不会做源内文档(被认为是混乱的),我认为这不会改变。

于 2011-08-17T09:48:17.133 回答