Поля нумерації (AUTONUM, PAGE, SEQ та інші)
Поля нумерації (AUTONUM, PAGE, SEQ та інші)
Цей посібник показує, як працювати з полями автоматичної нумерації Word у Aspose.Words FOSS для .NET, і як вони відрізняються від нумерації, заснованої на списках. Робота зі списками covers List, ListFormat, і ListLevel – модель об’єктів, що стоїть за нумерованими та маркованими абзацами списків Word. Word також має окрему сімейство нумерації fields яке обчислює номер у місці поля в тексті, а не через форматування абзацу списку: юридична та контурна автонумерація, лічильники сторінок і розділів, нумерація, пов’язана зі списком, та іменовані послідовності. Вона моделює кожну як Field підклас у the Aspose.Words.Fields namespace, а також NumberStyle enum, спільний між рівнями списків, виносками та кінцевими виносками, і номерами сторінок для вибору способу відображення числа.
Поля автонумерації: 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 — це перелік (enum), який використовується на різних рівнях списків, нумерації виносок/кінцевих нот, а також номерів сторінок, щоб вибрати спосіб відображення числа. Загальні стилі включають 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") у всіх екземплярах поля; кожен показує наступне число в цій послідовності.
Як керувати тим, у якому числовому чи буквальному стилі число відображається?
Використовуйте enum NumberStyle — значення, такі як Arabic, UppercaseRoman, LowercaseLetter та OrdinalText, вибирають стиль рендерингу, а також Bullet, None і Custom для нечислових або заданих користувачем форматів.
API Reference Підсумок
| Клас / Перелічення | Опис |
|---|---|
FieldAutoNum | AUTONUM поле; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL поле; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT поле |
FieldListNum | LISTNUM поле; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE поле (залежить від макету; оцінюється як 0 у цьому випуску) |
FieldSection | SECTION поле |
FieldSectionPages | SECTIONPAGES поле (залежить від макету; оцінюється як 0 у цьому випуску) |
FieldSeq | SEQ поле; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM поле |
NumberStyle | Перелік стилів відображення номерів, що використовуються рівнями списків, виносками/кінцевими виносками та номерами сторінок |