Práce s poli Index a tabulek
Práce s poli Index a Tabulky
Tento průvodce ukazuje, jak pracovat s rodinou polí „Index a Tabulky“ ve Wordu — poli stojícími za obsahem, rejstříkem, seznamem obrázků a seznamem autorit. Každý z nich je podtřídou Field v jmenném prostoru Aspose.Words.Fields: FieldToc (obsah nebo seznam obrázků), FieldIndex (rejstřík), FieldXE (položka rejstříku), FieldToa (seznam autorit), FieldTA (položka seznamu autorit nebo citace), FieldTC (položka obsahu) a FieldRD (odkazovaný dokument pro vytvoření kombinovaného rejstříku nebo obsahu napříč více soubory).
Základní třída pole
Každá třída pole v této rodině dědí z Field, která poskytuje Start, Separator a End (uzly FieldStart, FieldSeparator a FieldEnd, které ohraničují pole ve streamu běhu), Type (hodnota FieldType — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry nebo FieldRefDoc pro tuto rodinu), Result/DisplayResult (aktuálně vypočtený text pole), IsLocked a IsDirty a metody GetFieldCode(), Update(), Unlink() a Remove(). Update() přepočítá výsledek pole; pro obsah to znamená znovu vybudovat seznam položek z nadpisů dokumentu nebo značek FieldTC.
Vkládání obsahu
DocumentBuilder.InsertTableOfContents(switches) vloží FieldToc na aktuální pozici builderu pomocí řetězce přepínačů pole Word (například "\o \"1-3\" \h \z \u"), který řídí, které úrovně nadpisů jsou zahrnuty a jak je výsledek formátován — stejné přepínače, jaké Word sám zapisuje při vložení obsahu přes UI. Po vložení FieldToc.UpdatePageNumbers() přepočítá část s číslem stránky u existujících položek. FieldToc také poskytuje vlastnosti přímo řídící strukturu obsahu: HeadingLevelRange a EntryLevelRange (které úrovně osnovy jsou zahrnuty), EntryIdentifier (identifikátor pole TC, které má obsah sbírat, pro vytvoření více obsahů z různých značek FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName a — pro seznam obrázků místo obsahu — TableOfFiguresLabel a CaptionlessTableOfFiguresLabel.
Označování vlastních položek obsahu
Ne každá položka obsahu pochází ze stylu nadpisu. FieldTC označuje konkrétní místo jako položku obsahu nezávisle na stylu odstavce: FieldTC.Text je text položky, EntryLevel je úroveň osnovy, ve které se má zobrazit, TypeIdentifier ji spojuje s FieldToc.EntryIdentifier při vytváření více než jednoho obsahu a OmitPageNumber potlačuje číslo stránky pro tuto položku.
Vytváření indexu
FieldIndex implementuje pole INDEX, které sestavuje značky FieldXE (položky rejstříku) v dokumentu do abecedního rejstříku. FieldXE.Text je text položky, EntryType seskupuje položky do podúrovní pomocí syntaxe oddělené dvojtečkou, PageRangeBookmarkName označuje záložku, jejíž rozsah se v rejstříku stane rozsahem stránek místo jediné čísla stránky, a IsBold/IsItalic formátují výsledný odkaz na stránku. Na FieldIndex straně Heading vkládá oddělovače písmenových nadpisů (A, B, C…), LetterRange omezuje rejstřík na podmnožinu abecedy, RunSubentriesOnSameLine řídí rozvržení podpoložek a PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator řídí interpunkci mezi položkou a jejím odkazem na stránku. FieldIndexFormat samostatně vypisuje vestavěné vizuální styly rejstříku ve Wordu (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).
Seznam autorit
FieldToa a FieldTA jsou ekvivalenty autorit FieldIndex/FieldXE: FieldTA označuje citaci v textu (LongCitation a ShortCitation text, EntryCategory pro seskupení pod nadpis, například “Cases” nebo “Statutes”, a IsBold/IsItalic pro formátování), a FieldToa sestavuje tyto citace do tabulky, přičemž EntryCategory vybírá, kterou kategorii sestavit, UseHeading a UsePassim řídí nadpisy kategorií a konvenci “passim” pro zdroje citované mnohokrát, a PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting řídí rozvržení.
Odkazování na obsah z jiných dokumentů
FieldRD implementuje pole RD, které říká poli TOC, indexu nebo seznamu autorit, aby při kompilaci zahrnovalo položky z jiného souboru — FieldRD.FileName je odkazovaný dokument a IsPathRelative určuje, zda je tato cesta řešena relativně k aktuálnímu dokumentu.
Tipy a osvědčené postupy
- Vytvořte řetězec přepínače TOC stejným způsobem, jakým to dělá Word (
\o "1-3" \h \z \u) místo konfigurace každé vlastnostiFieldTocjednotlivě a poté upravte jen konkrétní vlastnosti, které potřebujete změnit. - Zavolejte
FieldToc.UpdatePageNumbers()(neboField.Update()) po změnách obsahu, aby TOC, rejstřík nebo seznam autorit odrážely aktuální dokument místo zastaralých výsledků z doby, kdy byly vloženy. - Použijte
FieldTC.TypeIdentifierspolu sFieldToc.EntryIdentifier, když dokument potřebuje více než jeden TOC (například hlavní TOC a samostatný seznam obrázků) vytvořený z různých sad položek. - Nastavte
FieldXE.PageRangeBookmarkName(nebo ekvivalentní označení rozsahu uFieldTA) místo ručního formátování rozsahu stránek v textu položky, aby rejstřík/tabulka zůstala konzistentní, pokud se obsah přesune. - Pamatujte, že čísla stránek ve výsledcích INDEX/TOC/TOA této edice jsou vyhodnocována jako zástupné hodnoty, nikoli jako skutečná čísla stránek, protože rozvržení stránky a číslování nejsou součástí této edice.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
| Obsah neobsahuje očekávané nadpisy | Řetězec přepínačů TOC (nebo HeadingLevelRange) vylučuje ty úrovně osnovy | Upravte přepínače předávané do InsertTableOfContents nebo nastavte FieldToc.HeadingLevelRange |
| Položka indexu se neobjevuje tam, kde se očekává | Odpovídající značka FieldXE chybí, nebo její syntaxe podúrovně EntryType neodpovídá tomu, co očekává FieldIndex. | Ověřte, že značky FieldXE existují a jejich hodnoty EntryType jsou formátovány konzistentně. |
| Výsledky pole vypadají po úpravě obsahu zastarale. | Pole nebylo po úpravě aktualizováno. | Zavolejte Update() na poli (nebo UpdateFields() na Document). |
| Položky z jiného dokumentu nejsou při kompilaci zahrnuty. | Neexistuje žádný FieldRD odkazující na tento dokument, nebo IsPathRelative neodpovídá tomu, jak má být cesta rozřešena. | Přidejte FieldRD s správným nastavením FileName a IsPathRelative. |
FAQ
Jak programově vložit obsah?
Zavolejte DocumentBuilder.InsertTableOfContents(switches) s řetězcem přepínačů ve stylu Word, například "\o \"1-3\" \h \z \u", na pozici, kde by se měl objevit TOC.
Jak označím text jako položku rejstříku?
Vložte pole FieldXE na toto místo (například pomocí DocumentBuilder.InsertField) s nastavenou vlastností Text na text položky; FieldIndex sestaví všechny značky FieldXE v dokumentu do výsledku rejstříku.
Jaký je rozdíl mezi FieldTC a položkami TOC založenými na nadpisech?
Výchozí chování TOC ve Wordu shromažďuje položky z odstavců pomocí stylů nadpisů. FieldTC vám umožní označit libovolné místo jako položku TOC nezávisle na stylu odstavce, což FieldToc může zahrnout pomocí odpovídajících hodnot EntryIdentifier/TypeIdentifier.
Jak aktualizuji TOC nebo rejstřík po změně dokumentu?
Zavolejte Update() na konkrétním poli (například FieldToc.Update() nebo FieldToc.UpdatePageNumbers() jen pro čísla stránek), nebo Document.UpdateFields() pro aktualizaci všech polí v dokumentu.
Mohu sestavit TOC nebo rejstřík napříč více dokumenty?
Ano — vložte pole FieldRD, které odkazuje na každý další dokument prostřednictvím FileName; kompilující pole (FieldToc, FieldIndex nebo FieldToa) zahrnuje položky z odkazovaných dokumentů, když je aktualizováno.
API Reference Shrnutí
| Třída/metoda | Popis: |
|---|---|
Field | Základní třída pro všechny typy polí, včetně Start/Separator/End, Type, Update() |
DocumentBuilder.InsertTableOfContents(switches) | Vložte FieldToc pomocí přepínačů stylu TOC ve Wordu |
FieldToc | Implementuje pole TOC (obsah nebo seznam obrázků) |
FieldTC | Označuje vlastní položku obsahu na konkrétním místě |
FieldIndex | Implementuje pole INDEX, shromažďující značky FieldXE |
FieldXE | Označuje umístění jako položku rejstříku |
FieldToa | Implementuje pole tabulky autorit, sestavuje značky FieldTA |
FieldTA | Označuje citaci pro tabulku autorit |
FieldRD | Odkazuje na obsah jiného dokumentu při sestavování TOC, rejstříku nebo tabulky autorit |
FieldIndexFormat | Enum vestavěných vizuálních stylů rejstříku ve Wordu |