使用索引和表字段

使用索引和表字段

使用索引和表格字段

本指南展示了如何使用 Word 的 “索引和表格” 字段族——这些字段位于目录、索引、图表目录和权威目录背后。这些都是 Field 子类,位于 Aspose.Words.Fields 命名空间中:FieldToc(目录或图表),FieldIndex(索引),FieldXE(索引条目),FieldToa(权威目录),FieldTA(权威目录条目或引用),FieldTC(目录条目),以及 FieldRD(引用的文档,用于在多个文件之间构建组合索引或目录)。


字段基类

该族中的每个字段类都继承自 Field,它公开了 Start、Separator 和 End(将字段绑定在运行流中的 FieldStart、FieldSeparator、FieldEnd 节点),Type(一个 FieldType 值——FieldTOC、FieldIndex、FieldTOA、FieldTOCEntry、FieldIndexEntry、FieldTOAEntry 或 FieldRefDoc,对应此族),Result/DisplayResult(字段当前计算的文本),IsLocked 和 IsDirty,以及方法 GetFieldCode()、Update()、Unlink() 和 Remove()。Update() 重新计算字段的结果;对于目录,这意味着根据文档的标题或 FieldTC 标记重建条目列表。

插入目录

DocumentBuilder.InsertTableOfContents(switches) 在构建器的当前位置插入一个 FieldToc,使用 Word 字段开关字符串(例如 "\o \"1-3\" \h \z \u")来控制包含哪些标题级别以及结果的格式——这与通过 UI 插入目录时 Word 本身写入的开关相同。插入后,FieldToc.UpdatePageNumbers() 重新计算现有条目的页码部分。FieldToc 还直接公开了控制目录结构的属性:HeadingLevelRange 和 EntryLevelRange(包含哪些大纲级别),EntryIdentifier(目录应收集的 TC 字段标识符,用于从不同的 FieldTC 标记构建多个目录),InsertHyperlinks、PreserveTabs/PreserveLineBreaks、EntrySeparator/SequenceSeparator、BookmarkName,以及——对于图表目录而非目录——TableOfFiguresLabel 和 CaptionlessTableOfFiguresLabel。

标记自定义目录条目

并非所有目录条目都来自标题样式。FieldTC 将特定位置标记为独立于段落样式的目录条目:FieldTC.Text 是条目文本,EntryLevel 是它应出现的纲要级别,TypeIdentifier 在构建多个目录时将其链接到一个 FieldToc.EntryIdentifier,而 OmitPageNumber 则抑制该条目的页码。

构建索引

FieldIndex 实现了 INDEX 域,用于将文档的 FieldXE(索引条目)标记汇编成按字母顺序排列的索引。FieldXE.Text 是条目文本,EntryType 使用冒号分隔语法将条目分组为子级,PageRangeBookmarkName 标记一个书签,其范围在索引中显示为页码范围而非单个页码,IsBold/IsItalic 用于格式化生成的页码引用。在 FieldIndex 方面,Heading 插入字母标题分隔符(A、B、C…),LetterRange 将索引限制在字母表的子集,RunSubentriesOnSameLine 控制子条目的布局,PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator 控制条目与页码引用之间的标点。FieldIndexFormat 单独列举了 Word 内置的索引视觉样式(Template、Classic、Fancy、Modern、Bulleted、Formal、Simple)。

权威目录

FieldToa 和 FieldTA 是对应于 FieldIndex/FieldXE 的权威项:FieldTA 标记文本中的引用(LongCitation 和 ShortCitation 文本,EntryCategory 用于将其归入如 “案例” 或 “法规” 等标题下,以及 IsBold/IsItalic 用于格式化),FieldToa 将这些引用编入表格,其中 EntryCategory 选择要编入的类别,UseHeading 和 UsePassim 控制类别标题以及对多次引用的来源使用的 “passim” 约定,PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting 控制布局。

引用其他文档的内容

FieldRD 实现了 RD 域,用于在编制目录、索引或权威目录时指示其包含来自另一个文件的条目——FieldRD.FileName 是被引用的文档,IsPathRelative 控制该路径是否相对于当前文档解析。


技巧与最佳实践

  • 像 Word 那样构建目录切换字符串(\o "1-3" \h \z \u),而不是单独配置每个 FieldToc 属性,然后仅调整后续需要更改的特定属性。
  • 在内容更改后调用 FieldToc.UpdatePageNumbers()(或 Field.Update()),使目录、索引或权威表能够反映当前文档,而不是插入时的过时结果。
  • 当文档需要多个目录(例如主目录和单独的图表目录),且它们基于不同的条目集合构建时,请将 FieldTC.TypeIdentifier 与 FieldToc.EntryIdentifier 结合使用。
  • 设置 FieldXE.PageRangeBookmarkName(或 FieldTA 的等效范围标记),而不是在条目文本中手动格式化页码范围,这样在内容移动时索引/目录仍保持一致。
  • 请记住,此版本的 INDEX/TOC/TOA 结果中的页码会被评估为占位符值,而非真实页码,因为页面布局和分页不属于本版本。

常见问题

问题原因修复
目录未包含预期的标题目录的切换字符串(或 HeadingLevelRange)排除了这些大纲级别调整传递给 InsertTableOfContents 的开关,或设置 FieldToc.HeadingLevelRange
索引条目未出现在预期位置相应的 FieldXE 标记缺失,或其 EntryType 子级语法与 FieldIndex 的期望不匹配确认 FieldXE 标记存在,并且它们的 EntryType 值格式保持一致
编辑内容后,字段结果看起来仍然是旧的编辑后字段未更新对字段调用 Update()(或在 Document 上调用 UpdateFields())
编译时未包含来自其他文档的条目不存在引用该文档的 FieldRD,或者 IsPathRelative 与路径应解析的方式不匹配添加一个具有正确 FileName 和 IsPathRelative 设置的 FieldRD

FAQ

如何以编程方式插入目录?

在目录应出现的位置,使用 Word 风格的开关字符串(例如 "\o \"1-3\" \h \z \u")调用 DocumentBuilder.InsertTableOfContents(switches)。

如何将文本标记为索引条目?

在该位置插入一个 FieldXE 域(例如通过 DocumentBuilder.InsertField),并将其 Text 属性设置为条目文本;FieldIndex 会将文档中所有 FieldXE 标记汇编成索引结果。

FieldTC 与基于标题的目录条目之间有什么区别?

Word 默认的目录行为会从使用标题样式的段落中收集条目。FieldTC 允许您将任意位置标记为目录条目,且不受段落样式限制,FieldToc 可以通过匹配 EntryIdentifier/TypeIdentifier 值将其包含进来。

文档更改后,如何刷新目录或索引?

对特定域调用 Update()(例如 FieldToc.Update(),或仅针对页码使用 FieldToc.UpdatePageNumbers()),或使用 Document.UpdateFields() 刷新文档中的所有域。

我可以跨多个文档编制目录或索引吗?

是 — 插入一个 FieldRD 字段,通过 FileName 指向每个额外的文档;编译字段(FieldToc、FieldIndex或FieldToa)在更新时会包含来自被引用文档的条目。


API Reference 摘要

类/方法描述
Field所有字段类型的基类,包括 Start/Separator/End,Type,Update()
DocumentBuilder.InsertTableOfContents(switches)使用 Word 风格的 TOC 开关插入一个 FieldToc
FieldToc实现 TOC 字段(目录或图表目录)
FieldTC在特定位置标记自定义目录条目
FieldIndex实现 INDEX 字段,编译 FieldXE 标记
FieldXE将位置标记为索引条目
FieldToa实现 table-of-authorities 字段,编译 FieldTA 标记
FieldTA将引用标记为权威目录
FieldRD在编制目录、索引或权威目录时引用另一个文档的内容
FieldIndexFormatWord 内置索引视觉样式的枚举

另请参阅

 中文