Práce s poli Index a tabulek

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é vlastnosti FieldToc jednotlivě a poté upravte jen konkrétní vlastnosti, které potřebujete změnit.
  • Zavolejte FieldToc.UpdatePageNumbers() (nebo Field.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.TypeIdentifier spolu s FieldToc.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 u FieldTA) 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émPříčinaOprava
Obsah neobsahuje očekávané nadpisyŘetězec přepínačů TOC (nebo HeadingLevelRange) vylučuje ty úrovně osnovyUpravte 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/metodaPopis:
FieldZá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
FieldTocImplementuje pole TOC (obsah nebo seznam obrázků)
FieldTCOznačuje vlastní položku obsahu na konkrétním místě
FieldIndexImplementuje pole INDEX, shromažďující značky FieldXE
FieldXEOznačuje umístění jako položku rejstříku
FieldToaImplementuje pole tabulky autorit, sestavuje značky FieldTA
FieldTAOznačuje citaci pro tabulku autorit
FieldRDOdkazuje na obsah jiného dokumentu při sestavování TOC, rejstříku nebo tabulky autorit
FieldIndexFormatEnum vestavěných vizuálních stylů rejstříku ve Wordu

Viz také:

 Čeština