Arbeta med Index- och tabellfält

Arbeta med Index- och tabellfält

Arbeta med fält för index och tabeller

Den här guiden visar hur man arbetar med Words fältfamilj “Index and Tables” — fälten bakom en innehållsförteckning, ett index, en figurförteckning och en författarförteckning. Var och en av dessa är en Field underklass i Aspose.Words.Fields namnrymden: FieldToc (innehållsförteckning eller figurförteckning), FieldIndex (index), FieldXE (indexpost), FieldToa (författarförteckning), FieldTA (post i författarförteckning, eller citat), FieldTC (post i innehållsförteckning), och FieldRD (refererat dokument, för att bygga ett kombinerat index eller en TOC över flera filer).


Bas-klass för fält

Varje fältklass i denna familj ärver från Field, som exponerar Start, Separator och End (de FieldStart, FieldSeparator och FieldEnd noder som avgränsar fältet i körströmmen), Type (ett FieldType värde — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry eller FieldRefDoc för denna familj), Result/DisplayResult (fältets för närvarande beräknade text), IsLocked och IsDirty, samt metoderna GetFieldCode(), Update(), Unlink() och Remove(). Update() beräknar om fältets resultat; för en innehållsförteckning innebär det att bygga om postlistan från dokumentets rubriker eller FieldTC markörer.

Infoga en innehållsförteckning

DocumentBuilder.InsertTableOfContents(switches) infogar en FieldToc på byggarens aktuella position, med en Word-fältväxelsträng (till exempel "\o \"1-3\" \h \z \u") för att styra vilka rubriknivåer som inkluderas och hur resultatet formateras — samma växlar som Word själv skriver när du infogar en TOC via UI. När den är infogad beräknar FieldToc.UpdatePageNumbers() om sidnumreringsdelen av befintliga poster. FieldToc exponerar också egenskaper som direkt styr TOC:ns struktur: HeadingLevelRange och EntryLevelRange (vilka konturnivåer som inkluderas), EntryIdentifier (TC-fältidentifieraren som TOC bör samla, för att bygga flera TOC:er från olika FieldTC markörer), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, och — för en figurförteckning snarare än en innehållsförteckning — TableOfFiguresLabel och CaptionlessTableOfFiguresLabel.

Markera anpassade innehållsförteckningsposter

Inte varje innehållsförteckningspost kommer från en rubrikstil. FieldTC markerar en specifik plats som en innehållsförteckningspost oberoende av styckeformat: FieldTC.Text är posttexten, EntryLevel är den nivå i dispositionen den ska visas på, TypeIdentifier länkar den till en FieldToc.EntryIdentifier när man bygger mer än en innehållsförteckning, och OmitPageNumber undertrycker sidnumret för den posten.

Bygga ett index

FieldIndex implementerar INDEX-fältet, som samlar ett dokuments FieldXE (indexpost) markörer till ett alfabetiskt index. FieldXE.Text är posttexten, EntryType grupperar poster i undernivåer med kolonseparerad syntax, PageRangeBookmarkName markerar ett bokmärke vars omfång blir ett sidintervall i indexet snarare än ett enskilt sidnummer, och IsBold/IsItalic formaterar den resulterande sidreferensen. På FieldIndex sidan, Heading infogar bokstavsrubrikseparatorer (A, B, C…), LetterRange begränsar indexet till ett delmängd av alfabetet, RunSubentriesOnSameLine styr layouten för underposter, och PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator styr interpunktionen mellan en post och dess sidreferens. FieldIndexFormat listar separat Words inbyggda visuella indexstilar (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).

Referenslista

FieldToa och FieldTA är myndigheternas motsvarighet till FieldIndex/FieldXE: FieldTA markerar en referens i texten (LongCitation och ShortCitation text, EntryCategory för att gruppera den under en rubrik som “Fall” eller “Lagrum”, och IsBold/IsItalic för formatering), och FieldToa sammanställer dessa referenser till en tabell, med EntryCategory som väljer vilken kategori som ska sammanställas, UseHeading och UsePassim som styr kategorirubriker och “passim”-konventionen för källor som citeras många gånger, samt PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting som styr layouten.

Referera innehåll från andra dokument

FieldRD implementerar RD-fältet, som instruerar ett innehållsförtecknings-, index- eller myndighetslistfält att inkludera poster från en annan fil vid sammanslagning — FieldRD.FileName är det refererade dokumentet, och IsPathRelative styr om den sökvägen ska lösas relativt till det aktuella dokumentet.


Tips och bästa praxis

  • Bygg TOC-växlingssträngen på samma sätt som Word gör (\o "1-3" \h \z \u) istället för att konfigurera varje FieldToc-egenskap individuellt, och justera sedan bara de specifika egenskaperna du behöver ändra efteråt.
  • Anropa FieldToc.UpdatePageNumbers() (eller Field.Update()) efter innehållsändringar så att en TOC, ett register eller en tabell över myndigheter återspeglar det aktuella dokumentet istället för föråldrade resultat från när den infördes.
  • Använd FieldTC.TypeIdentifier tillsammans med FieldToc.EntryIdentifier när ett dokument kräver mer än en TOC (till exempel en huvud-TOC och en separat figurförteckning) som byggs från olika uppsättningar av poster.
  • Ställ in FieldXE.PageRangeBookmarkName (eller FieldTAs motsvarande områdemarkering) istället för att manuellt formatera ett sidintervall i posttexten, så att indexet/tabellen förblir konsekvent om innehållet flyttas.
  • Kom ihåg att sidnummer i den här upplagan INDEX/TOC/TOA-resultat utvärderas till platshållarvärden snarare än faktiska sidnummer, eftersom sidlayout och sidnumrering inte ingår i denna upplaga.

Vanliga problem

ProblemOrsakÅtgärd
En innehållsförteckning innehåller inte förväntade rubrikerTOC:ens switchsträng (eller HeadingLevelRange) utesluter dessa rubriknivåerJustera switcharna som skickas till InsertTableOfContents eller sätt FieldToc.HeadingLevelRange
En indexpost visas inte där den förväntasDen motsvarande FieldXE-markören saknas, eller så matchar dess EntryType-undernivåsyntax inte vad FieldIndex förväntar sigBekräfta att FieldXE-markörerna finns och att deras EntryType-värden är formaterade konsekvent
Fältresultaten ser föråldrade ut efter att ha redigerat innehålletFältet uppdaterades inte efter redigeringenAnropa Update() på fältet (eller UpdateFields() på Document)
Poster från ett annat dokument inkluderas inte vid kompileringIngen FieldRD som refererar till det dokumentet finns, eller så matchar inte IsPathRelative hur sökvägen bör lösas uppLägg till en FieldRD med rätt FileName- och IsPathRelative-inställning

FAQ

Hur infogar jag en innehållsförteckning programatiskt?

Anropa DocumentBuilder.InsertTableOfContents(switches) med en Word-liknande växlingssträng, till exempel "\o \"1-3\" \h \z \u", på den plats där TOC ska visas.

Hur markerar jag text som en indexpost?

Infoga ett FieldXE-fält på den platsen (till exempel via DocumentBuilder.InsertField) med dess Text-egenskap inställd på posttexten; FieldIndex samlar alla FieldXE-markörer i dokumentet till indexresultatet.

Vad är skillnaden mellan FieldTC och rubrikbaserade TOC-poster?

Word:s standardbeteende för TOC samlar poster från stycken som använder rubrikformat. FieldTC låter dig markera en godtycklig plats som en TOC-post oberoende av styckeformat, vilket FieldToc kan inkludera via matchande EntryIdentifier/TypeIdentifier-värden.

Hur uppdaterar jag en TOC eller ett index efter att dokumentet har ändrats?

Anropa Update() på det specifika fältet (till exempel FieldToc.Update(), eller FieldToc.UpdatePageNumbers() för endast sidnummer), eller Document.UpdateFields() för att uppdatera alla fält i dokumentet.

Kan jag sammanställa en TOC eller ett index över flera dokument?

Ja — infoga ett FieldRD-fält som pekar på varje ytterligare dokument via FileName; kompileringsfältet (FieldToc, FieldIndex eller FieldToa) inkluderar poster från refererade dokument när det uppdateras.


API Reference Sammanfattning

Klass/MetodBeskrivning
FieldBasklass för alla fälttyper, inklusive Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)Infoga en FieldToc med Word-liknande TOC-switchar
FieldTocImplementerar TOC-fältet (innehållsförteckning eller figurförteckning)
FieldTCMarkerar en anpassad innehållsförteckningspost på en specifik plats
FieldIndexImplementerar INDEX-fältet, sammanställer FieldXE-markörer
FieldXEMarkerar en plats som en indexpost
FieldToaImplementerar table-of-authorities-fältet, sammanställer FieldTA-markörer
FieldTAMarkerar en citation för en table of authorities
FieldRDRefererar till en annan dokuments innehåll när en TOC, ett index eller en tabell över myndigheter sammanställs
FieldIndexFormatEnum för Word’s inbyggda visuella indexstilar

Se även

 Svenska