Hoe te werken met Word-index en tabellen in .NET

Hoe te werken met Word-index en tabellen in .NET

Hoe te werken met Word-index en tabellen in .NET

Deze gids laat zien hoe je de veldgestuurde referentiestructuren die Word-documenten gebruiken om hun eigen inhoud samen te vatten — een inhoudsopgave, een alfabetische index en een tabel van autoriteiten — kunt invoegen en opbouwen met Aspose.Words FOSS voor .NET. Elk wordt samengesteld uit markeer-velden elders in het document: FieldToc compileert op koppen gebaseerde en FieldTC-gemarkeerde items, FieldIndex compileert FieldXE-markeringen, en FieldToa compileert FieldTA-citaten. Elke veldklasse in deze familie is afgeleid van het basistype Field in de Aspose.Words.Fields namespace.


Stapsgewijze gids

Stap 1: Een inhoudsopgave invoegen

Roep DocumentBuilder.InsertTableOfContents(switches) aan op de positie waar de inhoudsopgave moet verschijnen, waarbij je een Word-achtige veld-switch-string doorgeeft — bijvoorbeeld "\o \"1-3\" \h \z \u" — om te bepalen welke kopniveaus worden opgenomen en hoe het resultaat wordt opgemaakt, dezelfde switches die Word gebruikt wanneer een inhoudsopgave via de UI wordt ingevoegd. Dit voegt een FieldToc in, die dezelfde structuur ook direct beschikbaar maakt als eigenschappen: HeadingLevelRange/EntryLevelRange voor opgenomen outline-niveaus, InsertHyperlinks, PreserveTabs/PreserveLineBreaks en BookmarkName. Voor een tabel van figuren in plaats van een inhoudsopgave, stel TableOfFiguresLabel of CaptionlessTableOfFiguresLabel in op dezelfde FieldToc.


Stap 2: Aangepaste inhoudsopgave-items markeren

Niet elke invoer die een TOC moet bevatten, komt van een kopstijl. Voeg een FieldTC op een specifieke locatie in om het als een TOC-item te markeren, onafhankelijk van de alinea-stijl: FieldTC.Text is de itemtekst, EntryLevel is het niveaunummer waarop het moet verschijnen, en OmitPageNumber onderdrukt het paginanummer voor dat item. Wanneer een document meer dan één TOC nodig heeft — bijvoorbeeld een hoofd-TOC en een aparte tabel met figuren — stel FieldTC.TypeIdentifier in zodat het overeenkomt met de EntryIdentifier van de FieldToc die het moet verzamelen.


Stap 3: Maak een index van gemarkeerde items

Markeer elke locatie die tot de index behoort met een FieldXE, waarbij Text wordt ingesteld op de itemtekst; EntryType groepeert items in subniveaus met behulp van een dubbele-punt-gescheiden syntaxis, en PageRangeBookmarkName markeert een bladwijzer waarvan de omvang een paginabereik in de index wordt in plaats van een enkel paginanummer. FieldIndex compileert elke FieldXE-markering in het document tot het alphabetische resultaat — stel Heading in om letterscheidingkoppen (A, B, C…) in te voegen, LetterRange om de index te beperken tot een deel van het alfabet, en RunSubentriesOnSameLine om de lay-out van sub-items te bepalen. PageNumberSeparator, PageRangeSeparator, SequenceSeparator en CrossReferenceSeparator regelen de interpunctie tussen een item en zijn paginareferentie. De ingebouwde index-visual-stijlen van Word zijn beschikbaar als de FieldIndexFormat-enum (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).


Stap 4: Maak een tabel van autoriteiten op basis van citaten

Markeer elke citatie in de tekst met een FieldTA: LongCitation en ShortCitation bevatten de citatietekst, EntryCategory groepeert deze onder een kop zoals “Cases” of “Statutes”, en IsBold/IsItalic regelen de opmaak. FieldToa compileert die citaties in een tabel — EntryCategory selecteert welke categorie moet worden gecompileerd, UseHeading bepaalt of categoriekoppen verschijnen, UsePassim past de “passim”-conventie toe voor bronnen die vaak worden geciteerd, en PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting regelen de lay-out.


Stap 5: Ververs velden na wijzigingen in het document

Een TOC, index of tabel van autoriteiten werkt zichzelf niet bij wanneer de omringende inhoud verandert. Roep Update() aan op het specifieke veld — bijvoorbeeld FieldToc.Update() — om het resultaat opnieuw te berekenen, of FieldToc.UpdatePageNumbers() wanneer alleen het paginanummer-gedeelte moet worden ververst. Om elk veld in een document in één keer te verversen in plaats van één voor één, roep je Document.UpdateFields() aan. Houd er rekening mee dat paginanummers in de resultaten van deze velden in deze editie placeholder-waarden zijn, aangezien paginavormgeving en paginering niet onderdeel ervan zijn.


Stap 6: Neem items op uit andere documenten

Insert een FieldRD om een inhoudsopgave, index of tabel van autoriteiten bij het compileren invoer uit een ander bestand te laten halen. FieldRD.FileName geeft de naam van het gerefereerde document, en IsPathRelative bepaalt of dat pad relatief ten opzichte van het huidige document wordt opgelost. Voeg één FieldRD per extra document toe en werk daarna het compilatieveld bij zodat het gecombineerde resultaat de gerefereerde inhoud bevat.


Veelvoorkomende problemen en oplossingen

Een inhoudsopgave bevat niet de verwachte koppen. De switch-string van de inhoudsopgave (of HeadingLevelRange) sluit die overzichtsniveaus uit. Pas de switches aan die worden doorgegeven aan InsertTableOfContents, of stel FieldToc.HeadingLevelRange direct.

Een indexvermelding verschijnt niet op de verwachte plaats. De corresponderende FieldXE markering ontbreekt, of zijn EntryType sub-level syntax komt niet overeen met wat FieldIndex verwacht. Bevestig de FieldXE markeringen bestaan en hun EntryType waarden zijn consequent opgemaakt.

Veldresultaten lijken verouderd na het bewerken van inhoud. Het veld werd niet bijgewerkt na de bewerking. Roep Update() op het specifieke veld, of Document.UpdateFields() om alle velden tegelijk te vernieuwen.

Items uit een ander document worden niet opgenomen bij het compileren. Nee FieldRD verwijzing naar dat document bestaat, of IsPathRelative komt niet overeen met hoe het pad moet worden opgelost. Voeg een FieldRD met de juiste FileName and IsPathRelative instelling.


Veelgestelde vragen

Hoe kan ik een inhoudsopgave programmatisch invoegen?

Roep DocumentBuilder.InsertTableOfContents(switches) aan met een Word-achtige switchreeks, zoals "\o \"1-3\" \h \z \u", op de positie waar de inhoudsopgave moet verschijnen.

Hoe markeer ik tekst als een indexvermelding?

Voeg een FieldXE-veld in op die locatie met de eigenschap Text ingesteld op de vermeldingstekst; FieldIndex compileert alle FieldXE-markeringen in het document tot het indexresultaat.

Wat is het verschil tussen FieldTC en een op koppen gebaseerde inhoudsopgavevermelding?

Het standaard gedrag van Word’s inhoudsopgave verzamelt vermeldingen uit alinea’s die kopstijlen gebruiken. FieldTC markeert een willekeurige locatie als een inhoudsopgavevermelding, onafhankelijk van de alinea-stijl, die FieldToc kan opnemen via overeenkomende EntryIdentifier/TypeIdentifier-waarden.

Hoe ververs ik een inhoudsopgave of index nadat het document is gewijzigd?

Roep Update() aan op het specifieke veld (of UpdatePageNumbers() op een FieldToc alleen voor paginanummers), of Document.UpdateFields() om elk veld in het document te verversen.

Kan een TOC of index worden samengesteld over meerdere documenten?

Ja — voeg een FieldRD in die naar elk extra document wijst via FileName. Het compilatieveld (FieldToc, FieldIndex of FieldToa) bevat entries van de gerefereerde documenten zodra het is bijgewerkt.


Zie ook

 Nederlands