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 varjeFieldToc-egenskap individuellt, och justera sedan bara de specifika egenskaperna du behöver ändra efteråt. - Anropa
FieldToc.UpdatePageNumbers()(ellerField.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.TypeIdentifiertillsammans medFieldToc.EntryIdentifiernä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(ellerFieldTAs 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
| Problem | Orsak | Åtgärd |
|---|---|---|
| En innehållsförteckning innehåller inte förväntade rubriker | TOC:ens switchsträng (eller HeadingLevelRange) utesluter dessa rubriknivåer | Justera switcharna som skickas till InsertTableOfContents eller sätt FieldToc.HeadingLevelRange |
| En indexpost visas inte där den förväntas | Den motsvarande FieldXE-markören saknas, eller så matchar dess EntryType-undernivåsyntax inte vad FieldIndex förväntar sig | Bekrä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ållet | Fältet uppdaterades inte efter redigeringen | Anropa Update() på fältet (eller UpdateFields() på Document) |
| Poster från ett annat dokument inkluderas inte vid kompilering | Ingen FieldRD som refererar till det dokumentet finns, eller så matchar inte IsPathRelative hur sökvägen bör lösas upp | Lä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/Metod | Beskrivning |
|---|---|
Field | Basklass för alla fälttyper, inklusive Start/Separator/End, Type, Update() |
DocumentBuilder.InsertTableOfContents(switches) | Infoga en FieldToc med Word-liknande TOC-switchar |
FieldToc | Implementerar TOC-fältet (innehållsförteckning eller figurförteckning) |
FieldTC | Markerar en anpassad innehållsförteckningspost på en specifik plats |
FieldIndex | Implementerar INDEX-fältet, sammanställer FieldXE-markörer |
FieldXE | Markerar en plats som en indexpost |
FieldToa | Implementerar table-of-authorities-fältet, sammanställer FieldTA-markörer |
FieldTA | Markerar en citation för en table of authorities |
FieldRD | Refererar till en annan dokuments innehåll när en TOC, ett index eller en tabell över myndigheter sammanställs |
FieldIndexFormat | Enum för Word’s inbyggda visuella indexstilar |