Jak pracować z indeksem i tabelami Word w .NET

Jak pracować z indeksem i tabelami Word w .NET

Jak pracować z indeksem i tabelami Word w .NET

Ten przewodnik pokazuje, jak wstawić i zbudować oparte na polach struktury odniesień, których dokumenty Word używają do podsumowywania własnej zawartości — spis treści, indeks alfabetyczny i tabela autorytetów — przy użyciu Aspose.Words FOSS dla .NET. Każda jest kompilowana z pól znaczników w innych miejscach dokumentu: FieldToc kompiluje wpisy oparte na nagłówkach i oznaczone FieldTC, FieldIndex kompiluje znaczniki FieldXE, a FieldToa kompiluje cytaty FieldTA. Każda klasa pola w tej rodzinie dziedziczy po bazowym typie Field w przestrzeni nazw Aspose.Words.Fields.


Przewodnik krok po kroku

Krok 1: Wstaw spis treści

Wywołaj DocumentBuilder.InsertTableOfContents(switches) w miejscu, w którym ma pojawić się spis treści, przekazując ciąg przełączników pola w stylu Word — na przykład "\o \"1-3\" \h \z \u" — aby kontrolować, które poziomy nagłówków są uwzględniane i jak wynik jest formatowany, tak jak przełączniki, które Word zapisuje przy wstawianiu spisu treści przez interfejs użytkownika. To wstawia FieldToc, które także udostępnia tę samą strukturę bezpośrednio jako właściwości: HeadingLevelRange/EntryLevelRange dla uwzględnionych poziomów konspektu, InsertHyperlinks, PreserveTabs/PreserveLineBreaks oraz BookmarkName. Aby utworzyć tabelę ilustracji zamiast spisu treści, ustaw TableOfFiguresLabel lub CaptionlessTableOfFiguresLabel na tym samym FieldToc.


Krok 2: Oznacz niestandardowe wpisy w spisie treści

Nie każdy wpis, który spis treści (TOC) powinien zawierać, pochodzi ze stylu nagłówka. Wstaw FieldTC w określonym miejscu, aby oznaczyć go jako wpis spisu treści niezależny od stylu akapitu: FieldTC.Text jest tekstem wpisu, EntryLevel określa poziom konspektu, na którym ma się pojawić, a OmitPageNumber usuwa numer strony dla tego wpisu. Gdy dokument wymaga więcej niż jednego spisu treści — na przykład głównego spisu i osobnego spisu rysunków — ustaw FieldTC.TypeIdentifier tak, aby pasował do EntryIdentifier FieldToc, które ma go zebrać.


Krok 3: Utwórz indeks z oznaczonych wpisów

Oznacz każdą lokalizację, która ma znaleźć się w indeksie, za pomocą FieldXE, ustawiając Text na tekst wpisu; EntryType grupuje wpisy w podpoziomy przy użyciu składni oddzielonej dwukropkami, a PageRangeBookmarkName oznacza zakładkę, której zakres staje się zakresem stron w indeksie zamiast pojedynczego numeru strony. FieldIndex kompiluje wszystkie znaczniki FieldXE w dokumencie do wyniku alfabetycznego — ustaw Heading, aby wstawić separatory nagłówków liter (A, B, C…), LetterRange, aby ograniczyć indeks do części alfabetu, oraz RunSubentriesOnSameLine, aby kontrolować układ podwpisów. PageNumberSeparator, PageRangeSeparator, SequenceSeparator i CrossReferenceSeparator kontrolują interpunkcję między wpisem a jego odwołaniem do strony. Wbudowane style wizualne indeksu w Wordzie są dostępne jako wyliczenie FieldIndexFormat (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).


Krok 4: Utwórz tabelę autorytetów z cytowań

Oznacz każdy cytat w tekście za pomocą FieldTA: LongCitation i ShortCitation zawierają tekst cytatu, EntryCategory grupuje go pod nagłówkiem, takim jak „Cases” lub „Statutes”, a IsBold/IsItalic kontrolują jego formatowanie. FieldToa kompiluje te cytaty w tabelę — EntryCategory wybiera, którą kategorię skompilować, UseHeading kontroluje, czy nagłówki kategorii są wyświetlane, UsePassim stosuje konwencję „passim” dla źródeł cytowanych wiele razy, a PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting kontrolują układ.


Krok 5: Odśwież pola po zmianach w dokumencie

Spis treści, indeks ani tabela autorytetów nie aktualizują się automatycznie, gdy zmienia się otaczająca zawartość. Wywołaj Update() na konkretnym polu — na przykład FieldToc.Update() — aby przeliczyć jego wynik, lub FieldToc.UpdatePageNumbers(), gdy potrzebne jest odświeżenie tylko części z numerem strony. Aby odświeżyć wszystkie pola w dokumencie jednocześnie, a nie po jednym, wywołaj Document.UpdateFields(). Pamiętaj, że numery stron w wynikach tych pól są w tej edycji wartościami zastępczymi, ponieważ układ strony i paginacja nie są jej częścią.


Krok 6: Uwzględnij wpisy z innych dokumentów

Wstaw FieldRD, aby spis treści (TOC), indeks lub tabela autorytetów pobierały wpisy z innego pliku podczas kompilacji. FieldRD.FileName określa nazwę odwołanego dokumentu, a IsPathRelative kontroluje, czy ścieżka jest rozwiązywana względem bieżącego dokumentu. Dodaj jeden FieldRD dla każdego dodatkowego dokumentu i zaktualizuj pole kompilacji później, aby połączony wynik zawierał odwołaną treść.


Typowe problemy i rozwiązania

Spis treści nie zawiera oczekiwanych nagłówków. Ciąg przełączników TOC (lub HeadingLevelRange) wyklucza te poziomy konspektu. Dostosuj przełączniki przekazywane do InsertTableOfContents, lub ustaw FieldToc.HeadingLevelRange bezpośrednio.

Wpis indeksu nie pojawia się w oczekiwanym miejscu. Odpowiedni FieldXE znacznik jest brakujący, lub jego EntryType składnia podpoziomu nie pasuje do tego, co FieldIndex oczekuje. FieldXE markery istnieją i ich EntryType wartości są formatowane konsekwentnie.

Wyniki pola wyglądają na przestarzałe po edycji treści. Pole nie zostało zaktualizowane po edycji. Wywołaj Update() na określonym polu, lub Document.UpdateFields() aby odświeżyć wszystkie pola jednocześnie.

Pozycje z innego dokumentu nie są uwzględniane przy kompilacji. Nie FieldRD odwołanie do tego dokumentu istnieje, lub IsPathRelative nie pasuje do tego, jak ścieżka powinna być rozwiązana. Dodaj a FieldRD z prawidłowym FileName and IsPathRelative ustawieniem.


Najczęściej zadawane pytania

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 wpis indeksu?

Wstaw pole FieldXE w tym miejscu 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 pozycją spisu treści opartą na nagłówkach?

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

Jak odświeżyć spis treści lub indeks po zmianach w dokumencie?

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

Czy spis treści lub indeks może być kompilowany w wielu dokumentach?

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


Zobacz także

 Polski