Lucrul cu câmpurile Index și Tables

Lucrul cu câmpurile Index și Tables

Lucrul cu câmpurile Index și Tabele

Acest ghid arată cum să lucraţi cu familia de câmpuri „Index și Tables” din Word — câmpurile din spatele unui cuprins, unui index, unui tabel de figuri şi unui tabel de autorităţi. Fiecare dintre acestea este o subclasă Field în spaţiul de nume Aspose.Words.Fields: FieldToc (cuprins sau figuri), FieldIndex (index), FieldXE (intrare de index), FieldToa (tabel de autorităţi), FieldTA (intrare de tabel de autorităţi, sau citare), FieldTC (intrare de cuprins), şi FieldRD (document referenţiat, pentru construirea unui index sau cuprins combinat pe mai multe fişiere).


Clasa de bază a câmpului

Fiecare clasă de câmp din această familie moşteneşte din Field, care expune Start, Separator şi End (nodurile FieldStart, FieldSeparator şi FieldEnd care încadrează câmpul în fluxul de rulare), Type (o valoare FieldType — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry sau FieldRefDoc pentru această familie), Result/DisplayResult (textul în prezent calculat al câmpului), IsLocked şi IsDirty, şi metodele GetFieldCode(), Update(), Unlink() şi Remove(). Update() recalculează rezultatul câmpului; pentru un cuprins, asta înseamnă reconstruirea listei de intrări din titlurile documentului sau marcajele FieldTC.

Inserarea unui cuprins

DocumentBuilder.InsertTableOfContents(switches) inserează un FieldToc la poziţia curentă a constructorului, utilizând un şir de comutatori de 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 — aceiaşi comutatori pe care Word îi scrie când inseraţi un cuprins prin interfaţă. Odată inserat, FieldToc.UpdatePageNumbers() recalculează partea cu numărul de pagină a intrărilor existente. FieldToc expune, de asemenea, proprietăţi care controlează direct structura cuprinsului: HeadingLevelRange şi EntryLevelRange (ce niveluri de contur sunt incluse), EntryIdentifier (identificatorul câmpului TC pe care cuprinsul ar trebui să îl colecteze, pentru construirea mai multor cuprinsuri din diferite marcaje FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, şi — pentru un tabel de figuri în loc de un cuprins — TableOfFiguresLabel şi CaptionlessTableOfFiguresLabel.

Marcarea intrărilor personalizate ale cuprinsului

Nu fiecare intrare din Cuprins provine dintr-un stil de titlu. FieldTC marchează o locație specifică ca o intrare în cuprins independentă de stilul de paragraf: FieldTC.Text este textul intrării, EntryLevel este nivelul de structură la care ar trebui să apară, TypeIdentifier o leagă de un FieldToc.EntryIdentifier când se construiesc mai multe cuprinsuri, și OmitPageNumber suprimă numărul paginii pentru acea intrare.

Construirea unui index

FieldIndex implementează câmpul INDEX, care compilează marcatorii FieldXE (intrare în index) dintr-un document într-un index alfabetic. FieldXE.Text este textul intrării, EntryType grupează intrările în subniveluri utilizând sintaxa separată prin două puncte, PageRangeBookmarkName marchează un semn de carte a cărui extensie devine un interval de pagini în index în loc de un singur număr de pagină, iar IsBold/IsItalic formatează referința de pagină rezultată. Pe partea FieldIndex, Heading inserează separatori de litere (A, B, C…), LetterRange restricționează indexul la un subset al alfabetului, RunSubentriesOnSameLine controlează aspectul subintrărilor, și PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator controlează punctuația dintre o intrare și referința ei de pagină. FieldIndexFormat enumeră separat stilurile vizuale încorporate ale indexului în Word (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).

Tabel de autorități

FieldToa și FieldTA sunt echivalentele autorităților pentru FieldIndex/FieldXE: FieldTA marchează o citare în text (LongCitation și ShortCitation text, EntryCategory pentru a o grupa sub un titlu precum „Cazuri” sau „Statute”, și IsBold/IsItalic pentru formatare), iar FieldToa compilează acele citări într-un tabel, cu EntryCategory care selectează categoria de compilat, UseHeading și UsePassim care controlează titlurile de categorie și convenția „passim” pentru sursele citate de multe ori, și PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting care controlează aspectul.

Referențierea conținutului din alte documente

FieldRD implementează câmpul RD, care spune unui câmp de Cuprins, index sau tabel de autorități să includă intrări dintr-un alt fișier la compilare — FieldRD.FileName este documentul referențiat, iar IsPathRelative controlează dacă acea cale este rezolvată relativ la documentul curent.


Sfaturi și bune practici

  • Construiți șirul de comutare al cuprinsului (TOC) în același mod în care o face Word (\o "1-3" \h \z \u) în loc să configurați fiecare proprietate FieldToc individual, apoi ajustați doar proprietățile specifice pe care trebuie să le modificați ulterior.
  • Apelați FieldToc.UpdatePageNumbers() (sau Field.Update()) după modificările de conținut, astfel încât un cuprins, un index sau o listă de autorități să reflecte documentul curent în loc de rezultate învechite de la momentul inserării.
  • Utilizați FieldTC.TypeIdentifier împreună cu FieldToc.EntryIdentifier când un document are nevoie de mai mult de un cuprins (de exemplu un cuprins principal și o listă separată de figuri) construit din seturi diferite de înregistrări.
  • Setați FieldXE.PageRangeBookmarkName (sau marcajul de interval echivalent al lui FieldTA) în loc să formatați manual un interval de pagini în textul înregistrării, astfel încât indexul/lista să rămână consistentă dacă conținutul se mută.
  • Rețineți că numerele de pagină din rezultatele INDEX/TOC/TOA ale acestei ediții sunt evaluate ca valori de substituent, nu ca numere reale de pagină, deoarece aspectul paginii și paginarea nu fac parte din această ediție.

Probleme comune

ProblemăCauzăRemediere
Un cuprins nu include titlurile așteptateȘirul de comutare al cuprinsului (sau HeadingLevelRange) exclude acele niveluri de structurăAjustați comutatoarele transmise către InsertTableOfContents sau setați FieldToc.HeadingLevelRange
O intrare în index nu apare în locul așteptatMarcatorul FieldXE corespunzător lipsește sau sintaxa subnivelului EntryType nu corespunde cu așteptările lui FieldIndexConfirmă că marcatorii FieldXE există și valorile lor EntryType sunt formatate în mod consistent
Rezultatele câmpului par învechite după editarea conținutuluiCâmpul nu a fost actualizat după editareApelează Update() pe câmp (sau UpdateFields() pe Document)
Intrările dintr-un alt document nu sunt incluse la compilareNu există niciun FieldRD care să facă referire la acel document, sau IsPathRelative nu corespunde cu modul în care ar trebui să se rezolve caleaAdaugă un FieldRD cu setarea corectă FileName și IsPathRelative

FAQ

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ă TOC.

Cum marchez textul ca o intrare în index?

Introduceți un câmp FieldXE la acea locație (de exemplu prin DocumentBuilder.InsertField) 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 intrările de TOC bazate pe titluri?

Comportamentul implicit al TOC în Word colectează intrările din paragrafe utilizând stiluri de titlu. FieldTC vă permite să marcați o locație arbitrară ca o intrare de TOC independent de stilul paragrafului, pe care FieldToc o poate include prin potrivirea valorilor EntryIdentifier/TypeIdentifier.

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

Apelați Update() pe câmpul specific (de exemplu FieldToc.Update(), sau FieldToc.UpdatePageNumbers() doar pentru numerele de pagină), sau Document.UpdateFields() pentru a actualiza fiecare câmp din document.

Pot să compilez un TOC sau un index în mai multe documente?

Da — inseraţi un câmp FieldRD care indică fiecare document suplimentar prin FileName; câmpul de compilare (FieldToc, FieldIndex sau FieldToa) include intrări din documentele referenţiate când este actualizat.


API Reference Rezumat

Clasă/MetodăDescriere:
FieldClasa de bază pentru toate tipurile de câmpuri, inclusiv Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)Introduceți un FieldToc folosind comutatori de tip TOC în stil Word
FieldTocImplementează câmpul TOC (cuprins sau listă de figuri)
FieldTCMarchează o intrare personalizată în cuprins la o locație specifică
FieldIndexImplementează câmpul INDEX, compilând marcatorii FieldXE
FieldXEMarchează o locație ca intrare în index
FieldToaImplementează câmpul tabelului de autorități, compilând marcatorii FieldTA
FieldTAMarchează o citare pentru un tabel de autorități
FieldRDFace referire la conținutul altui document atunci când compilează un TOC, un index sau o tabelă de autorități
FieldIndexFormatEnum al stilurilor vizuale de index încorporate în Word

Vezi și:

 Română