Word html 格式:通过域代码插入自定义目录

Word html format: insert a custom TOC via field code

我正在从 html 生成 Word 文档。基本上,我用 html 构建一个文件并将其保存为 .doc。然后我在 Word 中打开它并应用模板。目前一切顺利。

我想在构建文档时通过 HTML 自动生成自定义目录。我需要插入域代码来执行此操作,就像我通过 HML 添加页码一样。例如:

 <span style="mso-field-code: PAGE " class="page-field"></span>

如果我将我的 html 文档保存为 docx 并应用模板,我可以按照通常在 Word 中创建目录的方式制作基于样式的目录。我自定义了 TOC,因此标题样式是顶级,然后是 H1、H2,然后是 H3。如果我随后切换 TOC 上的字段代码,则字段代码如下所示:

{ TOC \t "Heading 1,2,Heading 2,3,Heading 3,4,Title,1" }

现在,我可以像这样添加 HTML 来插入目录:

<div style="mso-field-code: TOC " class="toc-field">TOC goes HERE</div>

当我这样做时,如果我右键单击文本 "TOC goes HERE",我会得到 "Update field" 的选项,如果我这样做,则会使用默认的 H1、H2、H3 标签生成目录。

但是,我无法解决的是如何包含

\t "Heading 1,2,Heading 2,3,Heading 3,4,Title,1"

部分应用了我的自定义样式序列。我尝试了各种组合,似乎在 TOC 之后添加 anything 会导致 Word not 生成域代码。

有人有什么建议吗?


更新: 基于下面@slightlysnarky 的基本帮助,我想我应该在这里总结结果,因为我需要的信息在多年前被删除的 Microsoft chm file 中。如果您阅读该帮助手册中的以下摘录并将其与下面的解决方案进行比较,您将了解这一切是如何工作的。

Word marks and stores information for simple fields by means of the Span element with the mso-field-code style. The mso-field-code value represents the string value of the field code. Formatting in the original field code might be lost when saving as HTML if only the string value of the code is necessary for its calculation.

Word has a different way of storing field information to HTML for more complex fields, such as ones that have formatted text or long values. Word marks these fields with so the data is not displayed in the browser. Word uses the Span element with the mso-element: field-begin, mso-element: field-separator, and mso-element: field-end attributes to contain the three respective parts of the field code: the field start, the separator between field code and field results, and the field end. Whenever possible, Word will save the field to HTML in the method that uses the least file space.

因此,基本上,在您希望 TOC 出现的位置将如下所示的标签添加到您的 HTML。

:-)

Word 识别 HTML 中的 "complex field format",与它在 Office Open XML 格式中的识别方式相同。所以你可以使用

<span style='mso-element:field-begin'></span>TOC \t "Heading 1,2,Heading 2,3,Heading 3,4,Title,1" 
<span style='mso-element:field-separator'></span>This text will show but the user will need to update the field 
<span style='mso-element:field-end'></span>

此构造在名为 "Microsoft Office HTML and XML Reference" 的 Microsoft 文档中进行了概述。它是一个 Windows .exe,可解压缩为 .chm 帮助文件。你可以得到它here

信息。关于编码字段的内容在 Microsoft Office 2000 入门 HTML 和 XML->Microsoft Word->字段

可能有更高版本,但这是我能找到的唯一版本。