编号字段(AUTONUM、PAGE、SEQ 等)

编号字段(AUTONUM、PAGE、SEQ 等)

编号字段(AUTONUM、PAGE、SEQ 等)

本指南展示了如何在 Word 中使用自动编号字段 Aspose.Words FOSS 用于 .NET,以及它们与基于列表的编号方式有何不同。 使用列表 covers List, ListFormat,以及 ListLevel – Word 中编号和项目符号列表段落背后的对象模型。Word 也有一套独立的编号系列 fields 它在文本中字段所在位置计算编号,而不是通过段落列表格式化:法律和大纲自动编号、页码和章节计数器、列表关联编号以及命名序列。它将每一种都建模为一个 Field 子类 Aspose.Words.Fields 命名空间,以及 NumberStyle 枚举被列表级别、脚注和尾注以及页码共享,用于选择数字的呈现方式。


自动编号字段:AUTONUM、AUTONUMLGL、AUTONUMOUT

FieldAutoNum 实现了 AUTONUM 字段(简单顺序编号)并公开 SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (legal/outline-style 编号),添加 RemoveTrailingPeriod 与其自身一起 SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline 编号),且除基础之外没有其自身的属性 Field 成员如上所述 使用字段.


使用 FieldListNum 的列表关联编号

FieldListNum 实现了 LISTNUM 字段:ListName 指定要使用的抽象编号定义,HasListName 报告字段代码是否实际提供了名称。ListLevel 覆盖字段计数的默认列表级别,StartingNumber 设置字段编号的起始值。


页码和章节计数器:FieldPage、FieldSection、FieldSectionPages

FieldPage 实现了 PAGE 字段和 FieldSectionPages implements SECTIONPAGES。 两者都依赖于计算得到的页面布局来生成结果;正如 NUMPAGES 在中描述的字段 使用字段,布局依赖的字段值在此版本中未计算,因为它不包含页面布局/渲染引擎,所以这些字段的求值为占位符 0. FieldSection implements SECTION,返回文档当前的章节号——它不依赖分页,也不受该限制影响。


使用 FieldSeq 的命名序列

FieldSeq 实现了用于命名、独立编号序列(例如图形或表格)的 SEQ 字段:SequenceIdentifier 为序列命名,BookmarkName 可选地将字段指向文档中其他位置的项目,而不是字段自身的位置。InsertNextNumber 插入序列中的下一个编号,而不显示当前位置的值,ResetNumber / ResetHeadingLevel 将序列计数器重置为特定数字,或在特定标题层级重新开始。


FieldRevNum

FieldRevNum 实现了 REVNUM 字段,且除了基础的 Field 成员外没有自己的属性。


使用 NumberStyle 格式化数字

NumberStyle 是在列表层级、脚注/尾注编号以及页码中使用的枚举,用于选择数字的呈现方式。常见样式包括 Arabic、UppercaseRoman / LowercaseRoman、UppercaseLetter / LowercaseLetter、Ordinal 和 OrdinalText,以及大量地区特定的样式(Kanji、Hangul、Hanja、ThaiLetter、HindiLetter1 等),再加上用于调用方提供格式的 Bullet、LeadingZero、None、Custom。


技巧与最佳实践

  • 当数字需要通过名称引用已有的列表定义时,请使用FieldListNum;对于不关联特定List的编号,请使用FieldAutoNum/FieldAutoNumLgl/FieldAutoNumOut。
  • 请记住,FieldPage和FieldSectionPages是布局相关的,NUMPAGES也是如此——不要依赖它们的Result在本版中反映真实的计算页数。
  • 当 SEQ 字段需要引用文档其他位置定义的数字,而不是在字段所在位置递增自己的计数时,请使用FieldSeq.BookmarkName。
  • 当编号序列(例如图号)应在每个新章节或章节标题处重新开始时,设置FieldSeq.ResetHeadingLevel。

常见问题

问题原因修复
FieldPage 或 FieldSectionPages 总是显示 0这些字段取决于计算后的页面布局,而该布局不属于此版本预期行为 – 使用商业版 Aspose.Words 用于 .NET 如果需要计算页面计数
FieldListNum 未使用预期的列表格式ListName 与文档中存在的抽象编号定义不匹配确认确切的列表名称,或检查 HasListName 以查看字段代码是否提供了列表名称
FieldSeq 的编号未在预期位置重新开始应重新开始序列的字段上未设置 ResetNumber 或 ResetHeadingLevel在该 FieldSeq 实例上设置适当的重置属性

FAQ

列表编号与这些编号字段有何区别?

列表编号 (List, ListFormat, ListLevel, 涵盖于 使用列表) 将整段文本格式化为列表项。此页面上的字段在文本的特定位置计算一个数字——用于序列、页码/章节计数或法律式自动编号——独立于段落列表格式。

为什么 PAGE 字段总是求值为 0?

FieldPage 取决于计算后的页面布局,而此版本不包含页面布局/渲染引擎——这也是 NUMPAGES 计算为占位符值的原因。

如何创建一个具名的、独立编号的序列,例如 “Figure 1”、 “Figure 2”?

在每个字段实例中使用 FieldSeq 并配合一致的 SequenceIdentifier(例如 "Figure");每个实例会显示该序列中的下一个编号。

如何控制数字以何种数字或字母样式呈现?

使用 NumberStyle 枚举——诸如 Arabic、UppercaseRoman、LowercaseLetter、OrdinalText 等值可选择渲染样式,同时可使用 Bullet、None、Custom 处理非数字或调用方提供的格式。


API Reference 摘要

类 / 枚举描述
FieldAutoNumAUTONUM 字段; SeparatorCharacter
FieldAutoNumLglAUTONUMLGL 字段; RemoveTrailingPeriod, SeparatorCharacter
FieldAutoNumOutAUTONUMOUT 字段
FieldListNumLISTNUM 字段; ListName, HasListName, ListLevel, StartingNumber
FieldPagePAGE 字段(布局相关;在本版中评估为 0)
FieldSectionSECTION 字段
FieldSectionPagesSECTIONPAGES 字段(布局相关;在本版中评估为 0)
FieldSeqSEQ 字段; SequenceIdentifier,BookmarkName,InsertNextNumber,ResetNumber,ResetHeadingLevel
FieldRevNumREVNUM 字段
NumberStyle用于列表层级、脚注/尾注和页码的数字渲染样式枚举

另请参阅

 中文