【问题标题】:Can an index be created for a CHM file?可以为 CHM 文件创建索引吗?
【发布时间】:2011-10-28 06:52:45
【问题描述】:

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

是否可以通过某种方式反编译并使用索引重新创建?

【问题讨论】:

    标签: html indexing chm creation


    【解决方案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 突变、链接修复)。


    更新到下面的 cmets。

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

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

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

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

    【讨论】:

    • 很高兴看到一位 FPC 用户前来救援。我正在使用dephicodetodoc.sourceforge.net,而 CHM 选项不会生成索引。我忘了它会生成一个 html 版本。如果它包含和索引或者可以从它生成索引。我将尝试从中生成 chm。您不认为 fpdoc 至少可以从内联 cmets 为过程和变量定义生成代码,就像 Delphi Code To Doc 一样,它会有很大帮助吗?这就是我所需要的,我不喜欢为此使用非 FPC 程序。