Praca z polami indeksu i tabel

Praca z polami indeksu i tabel

Praca z polami indeksu i tabel

Ten przewodnik pokazuje, jak pracować z rodziną pól „Index and Tables” w programie Word — polami stojącymi za spisem treści, indeksem, spisem rysunków i spisem autorów. Każdy z nich jest podklasą Field w przestrzeni nazw Aspose.Words.Fields: FieldToc (spis treści lub rysunków), FieldIndex (indeks), FieldXE (pozycja indeksu), FieldToa (spis autorów), FieldTA (pozycja spisu autorów lub cytat), FieldTC (pozycja spisu treści) oraz FieldRD (dokument referencyjny, służący do budowania połączonego indeksu lub spisu treści w wielu plikach).


Klasa bazowa pola

Każda klasa pola w tej rodzinie dziedziczy po Field, który udostępnia Start, Separator i End (węzły FieldStart, FieldSeparator i FieldEnd ograniczające pole w strumieniu uruchomienia), Type (wartość FieldType — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry lub FieldRefDoc dla tej rodziny), Result/DisplayResult (obecnie obliczony tekst pola), IsLocked i IsDirty, oraz metody GetFieldCode(), Update(), Unlink() i Remove(). Update() przelicza wynik pola; w przypadku spisu treści oznacza to ponowne zbudowanie listy pozycji z nagłówków dokumentu lub znaczników FieldTC.

Wstawianie spisu treści

DocumentBuilder.InsertTableOfContents(switches) wstawia FieldToc w bieżącej pozycji budowniczego, używając ciągu przełączników pola Word (na przykład "\o \"1-3\" \h \z \u"), aby kontrolować, które poziomy nagłówków są uwzględniane i jak sformatowany jest wynik — te same przełączniki, które Word sam zapisuje, gdy wstawiasz spis treści przez interfejs użytkownika. Po wstawieniu, FieldToc.UpdatePageNumbers() przelicza część z numerem strony istniejących pozycji. FieldToc udostępnia także właściwości bezpośrednio kontrolujące strukturę spisu treści: HeadingLevelRange i EntryLevelRange (które poziomy konspektu są uwzględniane), EntryIdentifier (identyfikator pola TC, który spis treści ma zbierać, w celu budowy wielu spisów treści z różnych znaczników FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, oraz — w przypadku spisu rysunków zamiast spisu treści — TableOfFiguresLabel i CaptionlessTableOfFiguresLabel.

Oznaczanie niestandardowych pozycji spisu treści

Nie każdy wpis spisu treści pochodzi ze stylu nagłówka. FieldTC oznacza konkretne miejsce jako wpis spisu treści niezależny od stylu akapitu: FieldTC.Text to tekst wpisu, EntryLevel to poziom konspektu, na którym ma się pojawić, TypeIdentifier łączy go z FieldToc.EntryIdentifier przy tworzeniu więcej niż jednego spisu, a OmitPageNumber usuwa numer strony dla tego wpisu.

Tworzenie indeksu

FieldIndex implementuje pole INDEX, które kompiluje znaczniki FieldXE (wpis indeksowy) dokumentu w alfabetyczny indeks. FieldXE.Text to tekst wpisu, EntryType grupuje wpisy w podpoziomy przy użyciu składni oddzielonej dwukropkiem, PageRangeBookmarkName oznacza zakładkę, której zakres staje się zakresem stron w indeksie zamiast pojedynczego numeru strony, a IsBold/IsItalic formatują uzyskane odwołanie do strony. Po stronie FieldIndex, Heading wstawia separatory nagłówków literowych (A, B, C…), LetterRange ogranicza indeks do podzbioru alfabetu, RunSubentriesOnSameLine kontroluje układ podwpisów, a PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator kontrolują interpunkcję między wpisem a odwołaniem do strony. FieldIndexFormat wymienia osobno wbudowane style wizualne indeksu w Wordzie (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).

Tabela autorytetów

FieldToa i FieldTA są odpowiednikami autorytetów dla FieldIndex/FieldXE: FieldTA oznacza cytat w tekście (LongCitation i ShortCitation tekst, EntryCategory aby pogrupować go pod nagłówkiem takim jak „Cases” lub „Statutes”, oraz IsBold/IsItalic do formatowania), a FieldToa kompiluje te cytaty w tabelę, przy czym EntryCategory wybiera, którą kategorię skompilować, UseHeading i UsePassim kontrolują nagłówki kategorii oraz konwencję „passim” dla źródeł cytowanych wielokrotnie, a PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting kontrolują układ.

Odwoływanie się do treści z innych dokumentów

FieldRD implementuje pole RD, które instruuje pole spisu treści, indeksu lub tabeli autorytetów, aby podczas kompilacji uwzględniało wpisy z innego pliku — FieldRD.FileName to dokument odwoływany, a IsPathRelative kontroluje, czy ścieżka jest rozwiązywana względem bieżącego dokumentu.


Wskazówki i najlepsze praktyki

  • Zbuduj ciąg przełącznika spisu treści tak, jak robi to Word (\o "1-3" \h \z \u), zamiast konfigurować każdą właściwość FieldToc indywidualnie, a następnie dostosuj tylko te konkretne właściwości, które musisz zmienić.
  • Wywołaj FieldToc.UpdatePageNumbers() (lub Field.Update()) po zmianach treści, aby spis treści, indeks lub tabela autorytetów odzwierciedlały bieżący dokument, a nie przestarzałe wyniki z momentu ich wstawienia.
  • Użyj FieldTC.TypeIdentifier razem z FieldToc.EntryIdentifier, gdy dokument wymaga więcej niż jednego spisu treści (na przykład głównego spisu i oddzielnej tabeli rysunków) zbudowanego z różnych zestawów wpisów.
  • Ustaw FieldXE.PageRangeBookmarkName (lub równoważne oznaczenie zakresu w FieldTA) zamiast ręcznego formatowania zakresu stron w tekście wpisu, aby indeks/tabela pozostały spójne, gdy treść się przemieści.
  • Pamiętaj, że numery stron w wynikach INDEX/TOC/TOA tej edycji są wartościami zastępczymi, a nie rzeczywistymi numerami stron, ponieważ układ i paginacja nie są częścią tej edycji.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Spis treści nie zawiera oczekiwanych nagłówkówCiąg przełączników TOC (lub HeadingLevelRange) wyklucza te poziomy konspektuDostosuj przełączniki przekazywane do InsertTableOfContents lub ustaw FieldToc.HeadingLevelRange
Wpis indeksu nie pojawia się tam, gdzie powinienOdpowiedni znacznik FieldXE jest nieobecny, albo jego składnia podpoziomu EntryType nie odpowiada temu, czego oczekuje FieldIndexPotwierdź, że znaczniki FieldXE istnieją i ich wartości EntryType są sformatowane konsekwentnie
Wyniki pola wyglądają na przestarzałe po edycji treściPole nie zostało zaktualizowane po edycjiWywołaj Update() na polu (lub UpdateFields() na Document)
Pozycje z innego dokumentu nie są uwzględniane podczas kompilacjiBrak FieldRD odwołującego się do tego dokumentu lub IsPathRelative nie odpowiada temu, jak ścieżka powinna być rozwiązanaDodaj FieldRD z prawidłowym ustawieniem FileName i IsPathRelative

FAQ

Jak wstawić spis treści programowo?

Wywołaj DocumentBuilder.InsertTableOfContents(switches) z łańcuchem przełączników w stylu Word, takim jak "\o \"1-3\" \h \z \u", w miejscu, w którym ma się pojawić spis treści.

Jak oznaczyć tekst jako pozycję indeksu?

Wstaw pole FieldXE w tym miejscu (na przykład za pomocą DocumentBuilder.InsertField) z właściwością Text ustawioną na tekst wpisu; FieldIndex kompiluje wszystkie znaczniki FieldXE w dokumencie do wyniku indeksu.

Jaka jest różnica między FieldTC a pozycjami spisu treści opartymi na nagłówkach?

Domyślne zachowanie spisu treści w programie Word zbiera pozycje z akapitów wykorzystujących style nagłówków. FieldTC pozwala oznaczyć dowolne miejsce jako pozycję spisu treści niezależnie od stylu akapitu, co FieldToc może uwzględnić poprzez dopasowanie wartości EntryIdentifier/TypeIdentifier.

Jak odświeżyć spis treści lub indeks po zmianie dokumentu?

Wywołaj Update() na konkretnym polu (na przykład FieldToc.Update() lub FieldToc.UpdatePageNumbers() tylko dla numerów stron), lub Document.UpdateFields(), aby odświeżyć wszystkie pola w dokumencie.

Czy mogę skompilować spis treści lub indeks z kilku dokumentów?

Tak — wstaw pole FieldRD wskazujące na każdy dodatkowy dokument za pomocą FileName; pole kompilujące (FieldToc, FieldIndex lub FieldToa) zawiera wpisy z odwoływanych dokumentów po jego aktualizacji.


API Reference Podsumowanie

Klasa/MetodaOpis
FieldKlasa bazowa dla wszystkich typów pól, w tym Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)Wstaw FieldToc przy użyciu przełączników stylu TOC podobnych do Worda
FieldTocImplementuje pole TOC (spis treści lub spis ilustracji)
FieldTCOznacza niestandardowy wpis spisu treści w określonym miejscu
FieldIndexImplementuje pole INDEX, kompilując znaczniki FieldXE
FieldXEOznacza lokalizację jako wpis indeksu
FieldToaImplementuje pole tabeli autorytetów, kompilując znaczniki FieldTA
FieldTAOznacza cytat dla tabeli autorytetów
FieldRDOdwołuje się do treści innego dokumentu podczas tworzenia spisu treści, indeksu lub tabeli autorytetów
FieldIndexFormatEnum wbudowanych stylów wizualnych indeksu w programie Word

Zobacz także

 Polski