Arbeiten mit Index- und Tabellenfeldern

Arbeiten mit Index- und Tabellenfeldern

Arbeiten mit Index- und Tabellenfeldern

Dieser Leitfaden zeigt, wie man mit der Word-„Index und Tabellen“-Feldfamilie arbeitet – den Feldern hinter einem Inhaltsverzeichnis, einem Index, einem Abbildungsverzeichnis und einem Gesetzesverzeichnis. Jeder dieser ist eine Field-Unterklasse im Aspose.Words.Fields-Namensraum: FieldToc (Inhaltsverzeichnis oder Abbildungen), FieldIndex (Index), FieldXE (Indexeintrag), FieldToa (Gesetzesverzeichnis), FieldTA (Eintrag des Gesetzesverzeichnisses bzw. Zitat), FieldTC (Inhaltsverzeichniseintrag) und FieldRD (referenziertes Dokument, zum Erstellen eines kombinierten Index oder Inhaltsverzeichnisses über mehrere Dateien hinweg).


Die Basisklasse des Feldes

Jede Feldklasse in dieser Familie erbt von Field, das Start, Separator und End (die FieldStart, FieldSeparator und FieldEnd-Knoten, die das Feld im Laufstrom begrenzen), Type (ein FieldType-Wert – FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry oder FieldRefDoc für diese Familie), Result/DisplayResult (der derzeit vom Feld berechnete Text), IsLocked und IsDirty sowie die Methoden GetFieldCode(), Update(), Unlink() und Remove(). Update() berechnet das Ergebnis des Feldes neu; für ein Inhaltsverzeichnis bedeutet das, die Eintragsliste aus den Überschriften des Dokuments oder FieldTC-Markern neu aufzubauen.

Einfügen eines Inhaltsverzeichnisses

DocumentBuilder.InsertTableOfContents(switches) fügt an der aktuellen Position des Builders ein FieldToc ein, wobei eine Word-Feldschalter-Zeichenkette (zum Beispiel "\o \"1-3\" \h \z \u") verwendet wird, um zu steuern, welche Überschriftsebenen einbezogen werden und wie das Ergebnis formatiert wird – dieselben Schalter, die Word selbst schreibt, wenn Sie ein TOC über die Benutzeroberfläche einfügen. Nach dem Einfügen berechnet FieldToc.UpdatePageNumbers() den Seitenzahlen-Teil der bestehenden Einträge neu. FieldToc stellt außerdem Eigenschaften bereit, die die Struktur des Inhaltsverzeichnisses direkt steuern: HeadingLevelRange und EntryLevelRange (welche Gliederungsebenen einbezogen werden), EntryIdentifier (die TC-Feld-Kennung, die das Inhaltsverzeichnis sammeln soll, um mehrere Inhaltsverzeichnisse aus verschiedenen FieldTC-Markern zu erstellen), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName und – für ein Abbildungsverzeichnis statt eines Inhaltsverzeichnisses – TableOfFiguresLabel und CaptionlessTableOfFiguresLabel.

Markieren benutzerdefinierter Inhaltsverzeichniseinträge

Nicht jeder TOC-Eintrag stammt aus einer Überschriftenformatvorlage. FieldTC markiert einen bestimmten Ort als Inhaltsverzeichnis-Eintrag, unabhängig vom Absatzstil: FieldTC.Text ist der Eintragstext, EntryLevel ist die Gliederungsebene, auf der er erscheinen soll, TypeIdentifier verknüpft ihn mit einem FieldToc.EntryIdentifier, wenn mehr als ein Inhaltsverzeichnis erstellt wird, und OmitPageNumber unterdrückt die Seitenzahl für diesen Eintrag.

Ein Index erstellen

FieldIndex implementiert das INDEX-Feld, das die FieldXE-Markierungen (Indexeinträge) eines Dokuments zu einem alphabetischen Index zusammenstellt. FieldXE.Text ist der Eintragstext, EntryType gruppiert Einträge in Unterebenen mittels durch Doppelpunkte getrenntem Syntax, PageRangeBookmarkName kennzeichnet ein Lesezeichen, dessen Umfang im Index zu einem Seitenbereich wird statt einer einzelnen Seitenzahl, und IsBold/IsItalic formatieren die resultierende Seitenreferenz. Auf der FieldIndex-Seite fügt Heading Buchstaben-Überschrifts-Trenner (A, B, C…) ein, LetterRange beschränkt den Index auf einen Teil des Alphabets, RunSubentriesOnSameLine steuert das Layout von Untereinträgen, und PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator regeln die Interpunktion zwischen einem Eintrag und seiner Seitenreferenz. FieldIndexFormat listet separat die in Word integrierten visuellen Indexstile auf (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).

Tabelle der Autoritäten

FieldToa und FieldTA sind die Autoritäten-Entsprechungen von FieldIndex/FieldXE: FieldTA markiert ein Zitat im Text (LongCitation und ShortCitation Text, EntryCategory um es unter einer Überschrift wie „Fälle“ oder „Gesetze“ zu gruppieren, und IsBold/IsItalic zur Formatierung), und FieldToa fasst diese Zitate zu einer Tabelle zusammen, wobei EntryCategory auswählt, welche Kategorie zusammengestellt wird, UseHeading und UsePassim die Kategorienüberschriften und die „passim“-Konvention für häufig zitierte Quellen steuern, und PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting das Layout kontrollieren.

Referenzieren von Inhalten aus anderen Dokumenten

FieldRD implementiert das RD-Feld, das einem TOC-, Index- oder Autoritäten-Feld beim Zusammenstellen anweist, Einträge aus einer anderen Datei einzubeziehen — FieldRD.FileName ist das referenzierte Dokument, und IsPathRelative steuert, ob dieser Pfad relativ zum aktuellen Dokument aufgelöst wird.


Tipps und bewährte Vorgehensweisen

  • Erstellen Sie die TOC-Schaltzeichenfolge auf die gleiche Weise wie Word (\o "1-3" \h \z \u), anstatt jede FieldToc-Eigenschaft einzeln zu konfigurieren, und passen Sie anschließend nur die spezifischen Eigenschaften an, die Sie ändern müssen.
  • Rufen Sie FieldToc.UpdatePageNumbers() (oder Field.Update()) nach Änderungen am Inhalt auf, damit ein Inhaltsverzeichnis, Index oder ein Verzeichnis der Autoritäten das aktuelle Dokument widerspiegelt und nicht veraltete Ergebnisse von dem Zeitpunkt, als es eingefügt wurde.
  • Verwenden Sie FieldTC.TypeIdentifier zusammen mit FieldToc.EntryIdentifier, wenn ein Dokument mehr als ein Inhaltsverzeichnis benötigt (zum Beispiel ein Haupt-Inhaltsverzeichnis und ein separates Abbildungsverzeichnis), die aus unterschiedlichen Eintragssätzen erstellt werden.
  • Setzen Sie FieldXE.PageRangeBookmarkName (oder die äquivalente Bereichsmarkierung von FieldTA), anstatt einen Seitenbereich im Eintragstext manuell zu formatieren, damit der Index/das Verzeichnis konsistent bleibt, wenn sich der Inhalt verschiebt.
  • Denken Sie daran, dass Seitenzahlen in den INDEX/TOC/TOA-Ergebnissen dieser Ausgabe zu Platzhalterwerten ausgewertet werden und nicht zu echten Seitenzahlen, da Seitenlayout und Seitennummerierung nicht Teil dieser Ausgabe sind.

Häufige Probleme

ProblemUrsacheLösung
Ein Inhaltsverzeichnis enthält nicht die erwarteten ÜberschriftenDer Schalter-String des Inhaltsverzeichnisses (oder HeadingLevelRange) schließt diese Gliederungsebenen ausPassen Sie die an InsertTableOfContents übergebenen Schalter an oder setzen Sie FieldToc.HeadingLevelRange
Ein Indexeintrag erscheint nicht an der erwarteten StelleDer entsprechende FieldXE-Marker fehlt, oder seine EntryType-Unterebenen-Syntax stimmt nicht mit dem überein, was FieldIndex erwartetBestätigen Sie, dass die FieldXE-Markierungen existieren und ihre EntryType-Werte einheitlich formatiert sind
Feldresultate sehen nach dem Bearbeiten des Inhalts veraltet ausDas Feld wurde nach der Bearbeitung nicht aktualisiertRufen Sie Update() für das Feld auf (oder UpdateFields() auf dem Document)
Einträge aus einem anderen Dokument werden beim Kompilieren nicht einbezogenEs gibt kein FieldRD, das auf dieses Dokument verweist, oder IsPathRelative stimmt nicht mit der erwarteten Pfadauflösung übereinFügen Sie ein FieldRD mit der richtigen FileName- und IsPathRelative-Einstellung hinzu

FAQ

Wie füge ich ein Inhaltsverzeichnis programmgesteuert ein?

Rufen Sie DocumentBuilder.InsertTableOfContents(switches) mit einer Word-artigen Schalterzeichenfolge auf, z.B. "\o \"1-3\" \h \z \u", an der Position, an der das TOC erscheinen soll.

Wie markiere ich Text als Indexeintrag?

Fügen Sie an dieser Stelle ein FieldXE-Feld ein (zum Beispiel über DocumentBuilder.InsertField) und setzen Sie dessen Text-Eigenschaft auf den Eintragstext; FieldIndex sammelt alle FieldXE-Markierungen im Dokument zu dem Indexergebnis.

Was ist der Unterschied zwischen FieldTC und überschriftenbasierten TOC-Einträgen?

Das Standard-TOC-Verhalten von Word sammelt Einträge aus Absätzen, die Überschriften-Formate verwenden. FieldTC ermöglicht es, einen beliebigen Ort als TOC-Eintrag zu markieren, unabhängig vom Absatzformat, das FieldToc über passende EntryIdentifier/TypeIdentifier-Werte einbeziehen kann.

Wie aktualisiere ich ein TOC oder einen Index, nachdem das Dokument geändert wurde?

Rufen Sie Update() für das jeweilige Feld auf (z.B. FieldToc.Update() oder FieldToc.UpdatePageNumbers() nur für Seitenzahlen), oder Document.UpdateFields(), um jedes Feld im Dokument zu aktualisieren.

Kann ich ein TOC oder einen Index über mehrere Dokumente hinweg zusammenstellen?

Ja — fügen Sie ein FieldRD-Feld ein, das über FileName auf jedes zusätzliche Dokument verweist; das zusammenstellende Feld (FieldToc, FieldIndex oder FieldToa) enthält Einträge aus referenzierten Dokumenten, wenn es aktualisiert wird.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
FieldBasisklasse für alle Feldtypen, einschließlich Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)Ein FieldToc mit Word-ähnlichen TOC-Schaltern einfügen
FieldTocImplementiert das TOC-Feld (Inhaltsverzeichnis oder Abbildungsverzeichnis)
FieldTCMarkiert einen benutzerdefinierten Inhaltsverzeichnis-Eintrag an einer bestimmten Position
FieldIndexImplementiert das INDEX-Feld und kompiliert FieldXE-Marker
FieldXEMarkiert einen Ort als Indexeintrag
FieldToaImplementiert das table-of-authorities-Feld und kompiliert FieldTA-Marker
FieldTAMarkiert eine Zitierung für ein Tabelle der Autoritäten
FieldRDVerweist auf den Inhalt eines anderen Dokuments beim Zusammenstellen eines Inhaltsverzeichnisses, Index oder Verzeichnisses der Autoritäten
FieldIndexFormatAufzählung der in Word integrierten visuellen Index-Designs

Siehe auch

 Deutsch