Нумерация полей (AUTONUM, PAGE, SEQ и др.)

Нумерация полей (AUTONUM, PAGE, SEQ и др.)

Полев нумерации (AUTONUM, PAGE, SEQ и другие)

Это руководство показывает, как работать с полями автоматической нумерации в Word Aspose.Words FOSS для .NET, и как они отличаются от нумерации, основанной на списках. Работа со списками covers List, ListFormat, и ListLevel – объектная модель, лежащая в основе нумерованных и маркированных абзацев списков Word. У Word также есть отдельная семья нумерации fields которая вычисляет номер в месте расположения поля в тексте, а не через форматирование списка абзацев: автоматическая нумерация юридических и структурных документов, счётчики страниц и разделов, нумерация, привязанная к списку, и именованные последовательности. Она моделирует каждую как Field подкласс в the Aspose.Words.Fields пространство имён, плюс NumberStyle перечисление, используемое уровнями списков, сносками и концевыми сносками, а также номерами страниц для выбора способа отображения числа.


Поля автоматической нумерации: AUTONUM, AUTONUMLGL, AUTONUMOUT

FieldAutoNum реализует AUTONUM поле (простая последовательная нумерация) и предоставляет SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (нумерация в стиле legal/outline), добавляя RemoveTrailingPeriod наряду со своим SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline numbering) и не имеет собственных свойств, кроме базовых 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, когда число должно ссылаться на существующее определение списка по имени; используйте FieldAutoNum/FieldAutoNumLgl/FieldAutoNumOut для нумерации, не привязанной к конкретному List.
  • Помните, что FieldPage и FieldSectionPages зависят от макета, так же как и NUMPAGES — не полагайтесь на то, что их Result отражают реальное вычисленное количество страниц в этом издании.
  • Используйте FieldSeq.BookmarkName, когда поле SEQ должно ссылаться на число, определённое в другом месте документа, а не увеличивать собственный счётчик в месте поля.
  • Установите 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 Сводка

Класс / EnumОписание:
FieldAutoNumAUTONUM поле; SeparatorCharacter
FieldAutoNumLglAUTONUMLGL поле; RemoveTrailingPeriod, SeparatorCharacter
FieldAutoNumOutAUTONUMOUT поле
FieldListNumLISTNUM поле; ListName, HasListName, ListLevel, StartingNumber
FieldPagePAGE поле (зависит от макета; даёт значение 0 в этом издании)
FieldSectionSECTION поле
FieldSectionPagesSECTIONPAGES поле (зависит от макета; даёт значение 0 в этом издании)
FieldSeqSEQ поле; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel
FieldRevNumREVNUM поле
NumberStyleПеречисление стилей отображения чисел, используемых уровнями списков, сносками/концевыми сносками и номерами страниц

См. также:

 Русский