Робота з полями індексу та таблиць

Робота з полями індексу та таблиць

Робота з полями індексу та таблиць

Цей посібник показує, як працювати з сімейством полів Word «Index and Tables» — полями, що стоять за таблицею змісту, індексом, таблицею рисунків та таблицею авторитетних джерел. Кожне з них є підкласом Field у просторі імен Aspose.Words.Fields: FieldToc (таблиця змісту або рисунків), FieldIndex (індекс), FieldXE (запис індексу), FieldToa (таблиця авторитетних джерел), FieldTA (запис таблиці авторитетних джерел або цитата), FieldTC (запис таблиці змісту) та FieldRD (документ-посилання, для створення комбінованого індексу або змісту в декількох файлах).


Базовий клас поля

Кожен клас поля в цьому сімействі успадковується від Field, який надає Start, Separator та End (вузли FieldStart, FieldSeparator і FieldEnd, що обмежують поле у потоці run), 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") для керування рівнями заголовків, які включаються, та форматуванням результату — ті ж перемикачі, які Word сам записує під час вставки змісту через інтерфейс. Після вставки FieldToc.UpdatePageNumbers() переобчислює частину номеру сторінки існуючих записів. FieldToc також надає властивості, що безпосередньо керують структурою змісту: HeadingLevelRange і EntryLevelRange (які рівні структури включені), EntryIdentifier (ідентифікатор поля TC, який має збирати зміст, для створення кількох змістів з різних маркерів FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, і — для таблиці рисунків замість таблиці змісту — TableOfFiguresLabel і CaptionlessTableOfFiguresLabel.

Позначення користувацьких записів таблиці змісту

Не кожен запис у змісті (TOC) походить зі стилю заголовка. 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 контролює, чи шлях розв’язується відносно поточного документа.


Поради та найкращі практики

  • Створюйте рядок перемикача TOC так само, як це робить Word (\o "1-3" \h \z \u), замість того щоб налаштовувати кожну властивість FieldToc окремо, а потім корегуйте лише ті конкретні властивості, які потрібно змінити.
  • Викликайте FieldToc.UpdatePageNumbers() (або Field.Update()) після змін вмісту, щоб зміст, покажчик або таблиця авторитетів відображали поточний документ, а не застарілі результати з моменту їх вставки.
  • Використовуйте FieldTC.TypeIdentifier разом з FieldToc.EntryIdentifier, коли документ потребує більше ніж один TOC (наприклад, основний TOC і окрему таблицю рисунків), створених з різних наборів записів.
  • Встановіть FieldXE.PageRangeBookmarkName (або еквівалентне позначення діапазону у FieldTA), замість того щоб вручну форматувати діапазон сторінок у тексті запису, щоб покажчик/таблиця залишалися послідовними, якщо вміст переміщується.
  • Пам’ятайте, що номери сторінок у результатах INDEX/TOC/TOA цього випуску оцінюються як заповнювачі, а не як реальні номери сторінок, оскільки розмітка сторінок і пагінація не входять до цього випуску.

Поширені проблеми

ПроблемаПричинаВиправлення
Зміст не включає очікувані заголовкиРядок перемикачів змісту (або HeadingLevelRange) виключає ці рівні структуриВідкоригуйте перемикачі, що передаються до InsertTableOfContents, або встановіть FieldToc.HeadingLevelRange
Запис індексу не з’являється там, де очікувалосяВідповідний маркер FieldXE відсутній, або його підрівневий синтаксис EntryType не відповідає тому, що очікує FieldIndexПідтвердьте, що маркери FieldXE існують, і їхні значення EntryType форматуються послідовно
Результати поля виглядають застарілими після редагування контентуПоле не оновилось після редагуванняВикличте Update() на полі (або UpdateFields() на Document)
Записи з іншого документа не включаються під час компіляціїНе існує FieldRD, що посилається на цей документ, або IsPathRelative не відповідає тому, як має розв’язуватись шляхДодайте FieldRD з правильними налаштуваннями FileName та IsPathRelative

FAQ

Як вставити зміст програмно?

Викличте DocumentBuilder.InsertTableOfContents(switches) зі строкою перемикачів у стилі Word, наприклад "\o \"1-3\" \h \z \u", у позиції, де має з’явитися зміст.

Як позначити текст як запис індексу?

Вставте поле 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)Вставити FieldToc за допомогою перемикачів TOC у стилі Word
FieldTocРеалізує поле TOC (таблиця змісту або таблиця рисунків)
FieldTCПозначає користувацький запис у змісті в певному місці
FieldIndexРеалізує поле INDEX, компілюючи маркери FieldXE
FieldXEПозначає місце як запис індексу
FieldToaРеалізує поле table-of-authorities, компілюючи маркери FieldTA
FieldTAПозначає цитату для таблиці посилань
FieldRDПосилається на вміст іншого документа під час складання TOC, покажчика або таблиці авторитетів
FieldIndexFormatEnum вбудованих візуальних стилів індексу Word

Дивіться також

 Українська