Jak pracovat s indexem a tabulkami ve Wordu v .NET
Jak pracovat s indexem a tabulkami Word v .NET
Tento průvodce ukazuje, jak vložit a vytvořit polemi řízené referenční struktury, které dokumenty Word používají k shrnutí svého obsahu — obsah, abecední index a seznam autorit — s Aspose.Words FOSS pro .NET. Každá je sestavena z markerových polí jinde v dokumentu: FieldToc sestavuje položky založené na nadpisech a FieldTC-označené položky, FieldIndex sestavuje FieldXE značky a FieldToa sestavuje citace FieldTA. Každá třída pole v této rodině dědí z základního typu Field v jmenném prostoru Aspose.Words.Fields.
Průvodce krok za krokem
Krok 1: Vložte obsah
Zavolejte DocumentBuilder.InsertTableOfContents(switches) na pozici, kde má být obsah zobrazen, a předávejte řetězec přepínačů pole ve stylu Wordu — například "\o \"1-3\" \h \z \u" — k řízení, které úrovně nadpisů jsou zahrnuty a jak je výsledek formátován, stejné přepínače, které Word zapíše při vložení obsahu přes uživatelské rozhraní. Tím se vloží FieldToc, který také přímo vystavuje stejnou strukturu jako vlastnosti: HeadingLevelRange/EntryLevelRange pro zahrnuté úrovně osnovy, InsertHyperlinks, PreserveTabs/PreserveLineBreaks a BookmarkName. Pro seznam obrázků místo obsahu nastavte TableOfFiguresLabel nebo CaptionlessTableOfFiguresLabel na stejném FieldToc.
Krok 2: Označte vlastní položky obsahu
Ne každá položka, kterou by měl obsah (TOC) zahrnovat, pochází ze stylu nadpisu. Vložte FieldTC na konkrétní místo, aby se označila jako položka obsahu nezávislá na stylu odstavce: FieldTC.Text je text položky, EntryLevel je úroveň osnovy, ve které by se měla zobrazit, a OmitPageNumber potlačuje číslo stránky pro tuto položku. Když dokument potřebuje více než jeden obsah — například hlavní obsah a samostatný seznam obrázků — nastavte FieldTC.TypeIdentifier tak, aby odpovídal EntryIdentifier FieldToc, který by ho měl shromažďovat.
Krok 3: Vytvořit rejstřík ze značkovaných položek
Označte každou lokaci, která má patřit do rejstříku, pomocí FieldXE, přičemž Text nastavíte na text položky; EntryType seskupuje položky do podúrovní pomocí syntaxe oddělené dvojtečkou a PageRangeBookmarkName označuje záložku, jejíž rozsah se v rejstříku stane rozsahem stránek místo jediné číslice stránky. FieldIndex sestaví všechny značky FieldXE v dokumentu do abecedního výsledku — nastavte Heading pro vložení oddělovačů s písmeny (A, B, C…), LetterRange pro omezení rejstříku na část abecedy a RunSubentriesOnSameLine pro řízení rozvržení podpoložek. PageNumberSeparator, PageRangeSeparator, SequenceSeparator a CrossReferenceSeparator řídí interpunkci mezi položkou a odkazem na stránku. Vestavěné vizuální styly rejstříku ve Wordu jsou k dispozici jako výčtový typ FieldIndexFormat (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).
Krok 4: Vytvořit seznam autorit ze citací
Označte každou citaci v textu pomocí FieldTA: LongCitation a ShortCitation obsahují text citace, EntryCategory ji seskupuje pod nadpis, například „Případy“ nebo „Statuty“, a IsBold/IsItalic řídí její formátování. FieldToa sestaví tyto citace do tabulky — EntryCategory vybírá, kterou kategorii sestavit, UseHeading určuje, zda se zobrazí nadpisy kategorií, UsePassim používá konvenci „passim“ pro zdroje citované mnohokrát a PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting řídí rozvržení.
Krok 5: Obnovit pole po změnách v dokumentu
Obsah (TOC), rejstřík nebo seznam autorit se neaktualizuje automaticky, když se změní okolní obsah. Zavolejte Update() na konkrétní pole — například FieldToc.Update() — aby se přepočítal jeho výsledek, nebo FieldToc.UpdatePageNumbers(), pokud je potřeba obnovit jen část s číslem stránky. Pro obnovení všech polí v dokumentu najednou místo po jednom zavolejte Document.UpdateFields(). Pamatujte, že čísla stránek ve výsledcích těchto polí jsou v tomto vydání pouze zástupné hodnoty, protože rozvržení stránky a číslování nejsou součástí.
Krok 6: Zahrnout položky z jiných dokumentů
Vložte FieldRD, aby se při kompilaci obsah TOC, rejstříku nebo tabulky autorit načetl z jiného souboru. FieldRD.FileName určuje název odkazovaného dokumentu a IsPathRelative řídí, zda se cesta vyhodnocuje relativně k aktuálnímu dokumentu. Přidejte jeden FieldRD pro každý další dokument a poté aktualizujte pole kompilace, aby kombinovaný výsledek zahrnoval odkazovaný obsah.
Běžné problémy a opravy
Obsah neobsahuje očekávané nadpisy. Řetězec přepínačů TOC (nebo HeadingLevelRange) vylučuje tyto úrovně osnovy. Upravte přepínače předávané do InsertTableOfContents, nebo nastavte FieldToc.HeadingLevelRange přímo.
Položka rejstříku se nezobrazuje tam, kde se očekává. Příslušný FieldXE značka chybí, nebo je její EntryType syntaxe podúrovně neodpovídá tomu, co FieldIndex očekává. FieldXE značky existují a jejich EntryType hodnoty jsou formátovány konzistentně.
Výsledky pole vypadají po úpravě obsahu zastarale. Pole nebylo po úpravě aktualizováno. Zavolejte Update() na konkrétním poli, nebo Document.UpdateFields() pro obnovení všech polí najednou.
Položky z jiného dokumentu nejsou při kompilaci zahrnuty. Ne FieldRD odkazování, že tento dokument existuje, nebo IsPathRelative neodpovídá tomu, jak by měla cesta být vyřešena. Přidejte a FieldRD s správným FileName and IsPathRelative nastavením.
Často kladené otázky
Jak programově vložit obsah?
Zavolejte DocumentBuilder.InsertTableOfContents(switches) s řetězcem přepínačů ve stylu Wordu, například "\o \"1-3\" \h \z \u", na pozici, kde má být obsah zobrazen.
Jak označit text jako položku rejstříku?
Vložte pole FieldXE na dané místo s jeho vlastností Text nastavenou 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žkou obsahu založenou na nadpisu?
Výchozí chování obsahu ve Wordu sbírá položky z odstavců pomocí stylů nadpisů. FieldTC označuje libovolné místo jako položku obsahu nezávisle na stylu odstavce, kterou FieldToc může zahrnout pomocí shodných hodnot EntryIdentifier/TypeIdentifier.
Jak obnovit obsah nebo rejstřík po změnách v dokumentu?
Zavolejte Update() na konkrétním poli (nebo UpdatePageNumbers() na FieldToc jen pro čísla stránek), nebo Document.UpdateFields() pro obnovení všech polí v dokumentu.
Lze sestavit TOC nebo rejstřík napříč více dokumenty?
Ano — vložte FieldRD, který odkazuje na každý další dokument pomocí FileName. Sestavovací pole (FieldToc, FieldIndex nebo FieldToa) zahrnuje položky z odkazovaných dokumentů po jeho aktualizaci.