Werken met Index- en Tabelvelden
Werken met Index- en Tabellenvelden
Deze gids laat zien hoe je werkt met de “Index en Tabellen”-veldengroep van Word — de velden achter een inhoudsopgave, een index, een tabel met figuren en een tabel met autoriteiten. Elk van deze is een Field subklasse in de Aspose.Words.Fields namespace: FieldToc (inhoudsopgave of figuren), FieldIndex (index), FieldXE (indexvermelding), FieldToa (tabel met autoriteiten), FieldTA (tabel-met-autoriteiten-vermelding, of citaat), FieldTC (inhoudsopgave-vermelding), en FieldRD (gerefereerd document, voor het bouwen van een gecombineerde index of inhoudsopgave over meerdere bestanden).
De basisveldklasse
Elke veldklasse in deze familie erft van Field, die Start, Separator en End blootlegt (de FieldStart, FieldSeparator en FieldEnd knooppunten die het veld in de run-stroom begrenzen), Type (een FieldType waarde — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry of FieldRefDoc voor deze familie), Result/DisplayResult (de momenteel berekende tekst van het veld), IsLocked en IsDirty, en de methoden GetFieldCode(), Update(), Unlink() en Remove(). Update() herberekent het resultaat van het veld; voor een inhoudsopgave betekent dat het opnieuw opbouwen van de vermeldinglijst vanaf de koppen van het document of FieldTC markeringen.
Een inhoudsopgave invoegen
DocumentBuilder.InsertTableOfContents(switches) voegt een FieldToc in op de huidige positie van de builder, met behulp van een Word-veld-schakelaarreeks (bijvoorbeeld "\o \"1-3\" \h \z \u") om te bepalen welke kopniveaus worden opgenomen en hoe het resultaat wordt opgemaakt — dezelfde schakelaars die Word zelf schrijft wanneer je een TOC invoegt via de UI. Zodra ingevoegd, FieldToc.UpdatePageNumbers() herberekent het paginanummerdeel van bestaande vermeldingen. FieldToc maakt ook direct eigenschappen beschikbaar die de structuur van de TOC regelen: HeadingLevelRange en EntryLevelRange (welke outline-niveaus zijn opgenomen), EntryIdentifier (de TC-veld-identifier die de TOC moet verzamelen, voor het bouwen van meerdere TOC’s vanuit verschillende FieldTC-markeringen), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, en — voor een tabel met figuren in plaats van een inhoudsopgave — TableOfFiguresLabel en CaptionlessTableOfFiguresLabel.
Aangepaste inhoudsopgave-vermeldingen markeren
Niet elke inhoudsopgave-vermelding komt van een kopstijl. FieldTC markeert een specifieke locatie als een inhoudsopgave-vermelding onafhankelijk van de alinea-stijl: FieldTC.Text is de vermeldings-tekst, EntryLevel is het overzichtsniveau waarop deze moet verschijnen, TypeIdentifier koppelt het aan een FieldToc.EntryIdentifier bij het bouwen van meer dan één inhoudsopgave, en OmitPageNumber onderdrukt het paginanummer voor die vermelding.
Een index opbouwen
FieldIndex implementeert het INDEX-veld, dat de FieldXE (indexvermelding) markeringen van een document samenstelt tot een alfabetische index. FieldXE.Text is de vermeldings-tekst, EntryType groepeert vermeldingen in subniveaus met behulp van een door dubbele punten gescheiden syntaxis, PageRangeBookmarkName markeert een bladwijzer waarvan de omvang een paginabereik in de index wordt in plaats van een enkel paginanummer, en IsBold/IsItalic formatteren de resulterende paginaverwijzing. Aan de FieldIndex kant voegt Heading letter-kop scheidingstekens in (A, B, C…), LetterRange beperkt de index tot een deel van het alfabet, RunSubentriesOnSameLine regelt de lay-out van sub-vermeldingen, en PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator bepalen de interpunctie tussen een vermelding en zijn paginaverwijzing. FieldIndexFormat somt apart de ingebouwde index-visualisaties van Word op (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).
Tabel van autoriteiten
FieldToa en FieldTA zijn het autoriteiten-equivalent van FieldIndex/FieldXE: FieldTA markeert een citaat in de tekst (LongCitation en ShortCitation tekst, EntryCategory om het onder een kop zoals “Cases” of “Statutes” te groeperen, en IsBold/IsItalic voor opmaak), en FieldToa stelt die citaten samen in een tabel, met EntryCategory die selecteert welke categorie moet worden samengesteld, UseHeading en UsePassim die de categorie-koppen en de “passim”-conventie voor vaak geciteerde bronnen regelen, en PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting die de lay-out bepalen.
Inhoud uit andere documenten refereren
FieldRD implementeert het RD-veld, dat een inhoudsopgave-, index- of tabel-van-autoriteiten-veld vertelt om bij het samenstellen vermeldingen uit een ander bestand op te nemen — FieldRD.FileName is het gerefereerde document, en IsPathRelative bepaalt of dat pad relatief wordt opgezocht ten opzichte van het huidige document.
Tips en beste praktijken
- Bouw de TOC-schakelreeks op dezelfde manier als Word (
\o "1-3" \h \z \u) in plaats van elkeFieldToc-eigenschap afzonderlijk te configureren, en pas daarna alleen de specifieke eigenschappen aan die je moet wijzigen. - Roep
FieldToc.UpdatePageNumbers()(ofField.Update()) aan nadat de inhoud is gewijzigd, zodat een TOC, index of tabel van autoriteiten het huidige document weergeeft in plaats van verouderde resultaten van het moment van invoegen. - Gebruik
FieldTC.TypeIdentifiersamen metFieldToc.EntryIdentifierwanneer een document meer dan één TOC nodig heeft (bijvoorbeeld een hoofd-TOC en een aparte tabel van figuren) gebouwd uit verschillende sets items. - Stel
FieldXE.PageRangeBookmarkName(of de equivalente bereikmarkering vanFieldTA) in plaats van handmatig een paginabereik in de itemtekst te formatteren, zodat de index/tabel consistent blijft als de inhoud verschuift. - Onthoud dat paginanummers in de INDEX/TOC/TOA-resultaten van deze editie evalueren tot placeholder-waarden in plaats van echte paginanummers, omdat paginalay-out en paginering geen onderdeel van deze editie zijn.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Een inhoudsopgave bevat niet de verwachte koppen | De TOC-switch-string (of HeadingLevelRange) sluit die outline-niveaus uit | Pas de switches aan die naar InsertTableOfContents worden doorgegeven of stel FieldToc.HeadingLevelRange in |
| Een indexvermelding verschijnt niet op de verwachte plaats | De corresponderende FieldXE-marker ontbreekt, of de EntryType-subniveau-syntaxis komt niet overeen met wat FieldIndex verwacht | Bevestig dat de FieldXE markers bestaan en dat hun EntryType waarden consistent zijn opgemaakt |
| Veldresultaten lijken verouderd na het bewerken van inhoud | Het veld werd niet bijgewerkt na de bewerking | Roep Update() aan op het veld (of UpdateFields() op de Document) |
| Items uit een ander document worden niet meegenomen bij het compileren | Er bestaat geen FieldRD die naar dat document verwijst, of IsPathRelative komt niet overeen met hoe het pad moet worden opgelost | Voeg een FieldRD toe met de juiste FileName en IsPathRelative instelling |
FAQ
Hoe kan ik een inhoudsopgave programmatisch invoegen?
Roep DocumentBuilder.InsertTableOfContents(switches) aan met een Word-achtige schakelstring, zoals "\o \"1-3\" \h \z \u", op de positie waar de TOC moet verschijnen.
Hoe markeer ik tekst als een indexvermelding?
Voeg een FieldXE-veld in op die locatie (bijvoorbeeld via DocumentBuilder.InsertField) met de eigenschap Text ingesteld op de tekst van de vermelding; FieldIndex compileert alle FieldXE-markeringen in het document tot het indexresultaat.
Wat is het verschil tussen FieldTC en op koptekst gebaseerde TOC-vermeldingen?
Het standaard TOC-gedrag van Word verzamelt vermeldingen uit alinea’s met behulp van kopstijlen. FieldTC stelt je in staat om een willekeurige locatie als TOC-vermelding te markeren, onafhankelijk van de alinea-stijl, die FieldToc kan opnemen via overeenkomende EntryIdentifier/TypeIdentifier-waarden.
Hoe ververs ik een TOC of index nadat het document is gewijzigd?
Roep Update() aan op het specifieke veld (bijvoorbeeld FieldToc.Update(), of FieldToc.UpdatePageNumbers() alleen voor paginanummers), of Document.UpdateFields() om elk veld in het document te verversen.
Kan ik een TOC of index samenstellen over meerdere documenten?
Ja — voeg een FieldRD veld in dat wijst naar elk extra document via FileName; het samenstellende veld (FieldToc, FieldIndex of FieldToa) bevat invoer uit de gerefereerde documenten wanneer het wordt bijgewerkt.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Field | Basisklasse voor alle veldtypen, inclusief Start/Separator/End, Type, Update() |
DocumentBuilder.InsertTableOfContents(switches) | Voeg een FieldToc in met Word-achtige TOC-schakelaars |
FieldToc | Implementeert het TOC-veld (inhoudsopgave of tabel met figuren) |
FieldTC | Markeert een aangepast inhoudsopgave-item op een specifieke locatie |
FieldIndex | Implementeert het INDEX-veld, waarbij FieldXE-markeringen worden gecompileerd |
FieldXE | Markeert een locatie als een indexvermelding |
FieldToa | Implementeert het tabel-van-autoriteiten-veld, waarbij FieldTA-markeringen worden gecompileerd |
FieldTA | Markeert een citaat voor een tabel van autoriteiten |
FieldRD | Verwijst naar de inhoud van een ander document bij het samenstellen van een TOC, index of tabel van autoriteiten |
FieldIndexFormat | Enum van Word’s ingebouwde indexvisualisatiestijlen |