chm hhk 中的关键字标签

keyword tags in chm hhk

我目前正在检查 CHM 的二进制索引构建,但我注意到样本项目中的一些 hhk(例如生成的 Sphinx)有一个 "keyword" 标签,似乎没有记录在 chmspec 中. chmspec 确实暗示关键字存在。

此上下文中的 "keyword" 标签是否只是(First?)"name" 标签的别名?

来自例如ags (https://github.com/adventuregamestudio/ags-manual/issues/14) 他们的 chmfiles 里面确实有 hhks。

LI> <OBJECT type="text/sitemap">
        <param name="Keyword" value="Functions that return a value">
        <param name="See Also" value="Functions that return a value">
    </OBJECT>
    <UL> <LI> <OBJECT type="text/sitemap">
        <param name="Keyword" value="Scripting Tutorial">
        <param name="Local" value="ScriptingTutorialPart1.html#index-7">
    </OBJECT>
    </UL><LI> <OBJECT type="text/sitemap">
        <param name="Keyword" value="Game / Global functions">
        <param name="Local" value="Game.html#index-0">
    </OBJECT>
    <UL> <LI> <OBJECT type="text/sitemap">
        <param name="Keyword" value="AbortGame">
        <param name="Local" value="Game.html#index-1"> ...

短篇小说 - 我不知道为什么 name="Keyword" 在这里用于 name="Name"。似乎这两个属性都可用,但这没有记录。我倾向于 name="Keyword" 但此时我使用 name="Name".

您知道 - 为 HTML 帮助文件 (CHM) 创建一个好的索引非常耗时并且需要大量的工作。由于用户越来越多地使用全文搜索(或Google),我很少创建复杂的索引。我使用以下语法(站点地图片段)和属性 name="Name":

<LI> <OBJECT type="text/sitemap">
    <param name="Name" value="Flowers">
    <param name="Local" value="Garden/flowers.htm">
    </OBJECT>

很久以前的事了,但我记得以前看过属性name="Keyword"。经过一番搜索,我的记忆恢复了。

如果您将 WinHelp 项目转换为 HTMLHelp with HTMLHelp Workshop (HHW),您会在索引中生成这些属性(我再次尝试了这个旧东西)。

<LI> <OBJECT type="text/sitemap">
    <param name="Keyword" value="Adresse">
    <param name="Name" value="RS485-Bus durchsuchen">
    <param name="Local" value="html/sens04xe.htm">
    </OBJECT>
<LI> <OBJECT type="text/sitemap">
    <param name="Keyword" value="Baudrate">
    <param name="Name" value="Konfiguration der PC-Schnittstelle">
    <param name="Local" value="html/sens04xd.htm">
    <param name="Name" value="RS485-Interface des Transmitters">
    <param name="Local" value="html/sens04xh.htm">
    </OBJECT>

在使用HHW 进行索引时,也经常会出现重复的节点信息。当然,在这种情况下,我使用 FAR HTML 的功能 Auto-Normalize HHK Files 导致:

<LI> <OBJECT type="text/sitemap">
    <param name="Name" value="Adresse">
    <param name="Local" value="html/sens04xe.htm">
    </OBJECT>
<LI> <OBJECT type="text/sitemap">
    <param name="Name" value="Baudrate">
    <param name="Name" value="Konfiguration der PC-Schnittstelle">
    <param name="Local" value="html/sens04xd.htm">
    <param name="Name" value="RS485-Interface des Transmitters">
    <param name="Local" value="html/sens04xh.htm">
    </OBJECT>

两个 *.hhk 变体都被编译到 CHM 中,没有错误。用户看不出有什么区别。以下屏幕截图(FAR HTML GUI)显示了规范化后的索引编辑器对话框。只有关键字,例如"Baudraute" 分配给两个主题现在有一个红星。在规范化之前,所有关键字都有一个红色星号。

当编辑由 HHW 编辑的 HHK 文件时(如上所述),您可能会看到许多单个文件夹和一个弹出项。这些可以减少和简化为单个非弹出条目。您想要保留此重复信息的唯一原因是如果您使用信息类型 -​​- 一个从未正确完成的 HTML帮助 1.x 功能。如果有机会,建议您始终规范化 HHK 指数。它减少了文件大小和复杂性,并且在 运行 时对用户没有可见的变化。

我试图在 1997 年的一本书中找到一些文档 "Official Microsoft HTMLHelp Authoring Kit" 但没有找到。

附加信息:

HTML 内联关键字

在HTML帮助项目中,索引关键字可以使用未记录的函数集成为 部分中的元语句。以这种方式指定的关键字包含在已编译的帮助系统的索引中。

参见:http://www.help-info.de/en/KIT/Creating_Index/create_index.htm#UndocumentedIndex

<html>
<head>
  <title>How one grows trees </title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <meta name="keywords" content="tree, hole">
  <meta name="MS-HKWD" content="oak">
  <meta name="MS-HKWD" content="beech">
  <meta name="MS-HKWD" content="water">
  <meta name="MS-HAID" content="botany">
  <link href="../design.css" rel="stylesheet" type="text/css" />
</head>

构建器的 Sphinx 源代码 HTML帮助

这里似乎 name="Keyword" 是硬编码的(我没有针对 name="Name" 个案例进一步加深):

https://github.com/sphinx-doc/sphinx/blob/master/sphinx/builders/htmlhelp.py