我正在使用一个没有索引的 CHM 文件,这使得搜索变得困难。
是否可以以某种方式对其进行反编译并使用索引重新创建?
你想要什么,一种构建工具的方法,或者一个可以为你轻松完成的工具?我没有后者,但我确实知道一种方法来做前者。(这是一个编程论坛 :-)
下面的 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 的设计决定是它不会做源内文档(被认为是混乱的),我认为这不会改变。