Cum să lucrați cu Indexul și tabelele Word în .NET

Cum să lucrați cu Indexul și tabelele Word în .NET

Cum să lucrați cu indexul și tabelele Word în .NET

Acest ghid arată cum să inserați și să construiți structurile de referință bazate pe câmpuri pe care documentele Word le folosesc pentru a rezuma propriul conținut — un cuprins, un index alfabetic și un tabel de autorități — cu Aspose.Words FOSS pentru .NET. Fiecare este generat din câmpuri marcatoare în alte părți ale documentului: FieldToc compilează intrări bazate pe titluri și marcate cu FieldTC, FieldIndex compilează marcatori FieldXE, și FieldToa compilează citări FieldTA. Fiecare clasă de câmp din această familie derivă din tipul de bază Field în spațiul de nume Aspose.Words.Fields.


Ghid pas cu pas

Pasul 1: Inserare cuprins

Apelați DocumentBuilder.InsertTableOfContents(switches) în poziția în care ar trebui să apară cuprinsul, transmitând un șir de comutare de tip câmp Word — de exemplu "\o \"1-3\" \h \z \u" — pentru a controla ce niveluri de titluri sunt incluse și cum este formatat rezultatul, aceleași comutări pe care Word le scrie când un cuprins este inserat prin interfața sa. Aceasta inserează un FieldToc, care expune, de asemenea, aceeași structură direct ca proprietăți: HeadingLevelRange/EntryLevelRange pentru nivelurile de structură incluse, InsertHyperlinks, PreserveTabs/PreserveLineBreaks și BookmarkName. Pentru un tabel de ilustrații în loc de un cuprins, setați TableOfFiguresLabel sau CaptionlessTableOfFiguresLabel pe același FieldToc.


Pasul 2: Marcați intrări personalizate în cuprins

Nu toate intrările pe care un TOC ar trebui să le includă provin dintr-un stil de titlu. Inserează un FieldTC într-o locație specifică pentru a o marca ca intrare în TOC independentă de stilul paragrafului: FieldTC.Text este textul intrării, EntryLevel este nivelul de structură la care ar trebui să apară, iar OmitPageNumber suprima numărul paginii pentru acea intrare. Când un document are nevoie de mai mult de un TOC — de exemplu un TOC principal și un tabel separat de figuri — setează FieldTC.TypeIdentifier pentru a se potrivi cu EntryIdentifier al FieldToc care ar trebui să îl colecteze.


Pasul 3: Construiește un Index din Intrările Marcate

Marchează fiecare locație care aparține indexului cu un FieldXE, setând Text la textul intrării; EntryType grupează intrările în subniveluri utilizând sintaxa separată prin două puncte, iar PageRangeBookmarkName marchează un semn de carte a cărui extindere devine un interval de pagini în index în loc de un singur număr de pagină. FieldIndex compilează fiecare marcator FieldXE din document în rezultatul alfabetic — setează Heading pentru a insera separatoare de titluri de literă (A, B, C…), LetterRange pentru a restricționa indexul la o parte a alfabetului și RunSubentriesOnSameLine pentru a controla aspectul subintrărilor. PageNumberSeparator, PageRangeSeparator, SequenceSeparator și CrossReferenceSeparator controlează punctuația dintre o intrare și referința sa de pagină. Stilurile vizuale încorporate ale indexului din Word sunt disponibile ca enumerația FieldIndexFormat (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).


Pasul 4: Construiește un Tabel de Autorități din Citații

Marchează fiecare citare în text cu un FieldTA: LongCitation și ShortCitation conțin textul citării, EntryCategory o grupează sub un titlu precum „Cases” sau „Statutes”, iar IsBold/IsItalic controlează formatarea acesteia. FieldToa compilează acele citări într-un tabel — EntryCategory selectează categoria de compilat, UseHeading controlează dacă titlurile de categorie apar, UsePassim aplică convenția „passim” pentru sursele citate de multe ori, și PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting controlează aspectul.


Pasul 5: Reîmprospătează Câmpurile După Modificările Documentului

Un TOC, index sau tabel de autorități nu se actualizează singur când conținutul înconjurător se modifică. Apelează Update() pe câmpul specific — de exemplu FieldToc.Update() — pentru a recalcula rezultatul său, sau FieldToc.UpdatePageNumbers() când doar partea cu numărul paginii necesită reîmprospătare. Pentru a reîmprospăta toate câmpurile dintr-un document simultan, în loc de unul câte unul, apelează Document.UpdateFields(). Reține că numerele de pagină din rezultatele acestor câmpuri se evaluează la valori de substituent în această ediție, deoarece aranjamentul paginii și paginarea nu fac parte din ea.


Pasul 6: Include Intrări din Alte Documente

Introduceți un FieldRD pentru ca un TOC, index sau tabel de autorități să preia intrări dintr-un alt fișier la compilare. FieldRD.FileName denumește documentul referențiat, iar IsPathRelative controlează dacă acea cale se rezolvă relativ la documentul curent. Adăugați un FieldRD pentru fiecare document suplimentar și actualizați câmpul de compilare ulterior, astfel încât rezultatul combinat să includă conținutul referențiat.


Probleme comune și rezolvări

Un cuprins nu include titlurile așteptate. Șirul de comutare al cuprinsului (sau HeadingLevelRange) excludează nivelurile de structură respective. Ajustați comutatoarele transmise către InsertTableOfContents, sau setați FieldToc.HeadingLevelRange direct.

O intrare din index nu apare acolo unde era așteptată. Marcatorul corespunzător FieldXE marker lipsește, sau al său EntryType sintaxa sub-nivel nu se potrivește cu ce FieldIndex se așteaptă. FieldXE marcatorii există și ale lor EntryType valorile sunt formatate în mod consecvent.

Rezultatele câmpului par învechite după editarea conținutului. Câmpul nu a fost actualizat după editare. Apelă Update() pe câmpul specific, sau Document.UpdateFields() pentru a reîmprospăta toate câmpurile simultan.

Intrările dintr-un alt document nu sunt incluse la compilare. No FieldRD referințând că documentul există, sau IsPathRelative nu se potrivește cu modul în care calea ar trebui să se rezolve. Adaugă un FieldRD cu cel corect FileName and IsPathRelative setare.


Întrebări frecvente

Cum pot insera un cuprins programatic?

Apelați DocumentBuilder.InsertTableOfContents(switches) cu un șir de comutare în stil Word, cum ar fi "\o \"1-3\" \h \z \u", la poziția unde ar trebui să apară cuprinsul.

Cum marchez textul ca o intrare în index?

Introduceți un câmp FieldXE în acea locație cu proprietatea Text setată la textul intrării; FieldIndex compilează toate marcajele FieldXE din document în rezultatul indexului.

Care este diferența dintre FieldTC și o intrare de cuprins bazată pe titlu?

Comportamentul implicit al cuprinsului în Word colectează intrările din paragrafe utilizând stiluri de titlu. FieldTC marchează o locație arbitrară ca o intrare de cuprins independentă de stilul de paragraf, pe care FieldToc o poate include prin potrivirea valorilor EntryIdentifier/TypeIdentifier.

Cum actualizez un cuprins sau un index după ce documentul se modifică?

Apelați Update() pe câmpul specific (sau UpdatePageNumbers() pe un FieldToc doar pentru numere de pagină), sau Document.UpdateFields() pentru a actualiza toate câmpurile din document.

Poate un TOC sau un index să fie compilat pe mai multe documente?

Da — inserează un FieldRD care indică fiecare document suplimentar prin FileName. Câmpul de compilare (FieldToc, FieldIndex sau FieldToa) include intrările din documentele de referință odată ce este actualizat.


Vezi și:

 Română