Εργασία με Πεδία Δείκτη και Πινάκων
Δουλεύοντας με πεδία Ευρετηρίου και Πινάκων
Αυτός ο οδηγός δείχνει πώς να δουλέψετε με την οικογένεια πεδίων «Index and Tables» του Word — τα πεδία πίσω από έναν πίνακα περιεχομένων, ένα ευρετήριο, έναν πίνακα εικόνων και έναν πίνακα αρχών. Κάθε ένα από αυτά είναι μια υποκλάση Field στον χώρο ονομάτων Aspose.Words.Fields: FieldToc (πίνακας περιεχομένων ή εικόνων), FieldIndex (ευρετήριο), FieldXE (καταχώριση ευρετηρίου), FieldToa (πίνακας αρχών), FieldTA (καταχώριση πίνακα αρχών ή παραπομπή), FieldTC (καταχώριση πίνακα περιεχομένων), και FieldRD (αναγνωρισμένο έγγραφο, για τη δημιουργία ενός ενωμένου ευρετηρίου ή ΠΙ μέσω πολλαπλών αρχείων).
Η Βασική Κλάση Πεδίου
Κάθε κλάση πεδίου σε αυτήν την οικογένεια κληρονομεί από το Field, το οποίο εκθέτει τα Start, Separator και End (τους κόμβους FieldStart, FieldSeparator και FieldEnd που περιβάλλουν το πεδίο στη ροή εκτέλεσης), το Type (μια τιμή FieldType — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry ή FieldRefDoc για αυτήν την οικογένεια), τα Result/DisplayResult (το τρέχον υπολογισμένο κείμενο του πεδίου), τα IsLocked και IsDirty, καθώς και τις μεθόδους GetFieldCode(), Update(), Unlink() και Remove(). Το Update() επανυπολογίζει το αποτέλεσμα του πεδίου· για έναν πίνακα περιεχομένων, αυτό σημαίνει την ανακατασκευή της λίστας καταχωρίσεων από τις επικεφαλίδες του εγγράφου ή τους δείκτες FieldTC.
Εισαγωγή Πίνακα Περιεχομένων
DocumentBuilder.InsertTableOfContents(switches) εισάγει ένα FieldToc στη τρέχουσα θέση του δημιουργού, χρησιμοποιώντας μια συμβολοσειρά εναλλαγής πεδίου του Word (π.χ. "\o \"1-3\" \h \z \u") για να ελέγξει ποια επίπεδα επικεφαλίδων περιλαμβάνονται και πώς μορφοποιείται το αποτέλεσμα — οι ίδιες εναλλαγές που γράφει το Word όταν εισάγετε έναν ΠΙ μέσω του UI. Μόλις εισαχθεί, το FieldToc.UpdatePageNumbers() επανυπολογίζει το τμήμα αριθμού σελίδας των υπάρχουσων καταχωρίσεων. Το FieldToc επίσης εκθέτει ιδιότητες που ελέγχουν άμεσα τη δομή του ΠΙ: HeadingLevelRange και EntryLevelRange (ποια επίπεδα περιγράμματος περιλαμβάνονται), EntryIdentifier (το αναγνωριστικό πεδίου TC που πρέπει να συλλέξει ο ΠΙ, για τη δημιουργία πολλαπλών ΠΙ από διαφορετικούς δείκτες FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, και — για πίνακα εικόνων αντί για πίνακα περιεχομένων — TableOfFiguresLabel και CaptionlessTableOfFiguresLabel.
Σήμανση Προσαρμοσμένων Καταχωρίσεων Πίνακα Περιεχομένων
Δεν κάθε καταχώρηση TOC προέρχεται από στυλ επικεφαλίδας. FieldTC σημειώνει μια συγκεκριμένη θέση ως καταχώρηση πίνακα περιεχομένων ανεξάρτητα από το στυλ παραγράφου: FieldTC.Text είναι το κείμενο της καταχώρησης, EntryLevel είναι το επίπεδο διάρθρωσης στο οποίο πρέπει να εμφανίζεται, TypeIdentifier την συνδέει με ένα FieldToc.EntryIdentifier όταν δημιουργούνται περισσότερα από ένα TOC, και OmitPageNumber καταστέλλει τον αριθμό σελίδας για εκείνη την καταχώρηση.
Δημιουργία ευρετηρίου
FieldIndex υλοποιεί το πεδίο INDEX, το οποίο συγκεντρώνει τα σημεία FieldXE (καταχώρηση ευρετηρίου) ενός εγγράφου σε έναν αλφαβητικό ευρετήριο. FieldXE.Text είναι το κείμενο της καταχώρησης, EntryType ομαδοποιεί τις καταχωρήσεις σε υποεπίπεδα χρησιμοποιώντας σύνταξη χωρισμένη με άνω-κάτω τελείες, PageRangeBookmarkName σηματοδοτεί ένα σελιδοδείκτη του οποίου η έκταση γίνεται εύρος σελίδων στο ευρετήριο αντί για μοναδικό αριθμό σελίδας, και τα IsBold/IsItalic μορφοποιούν την προκύπτουσα αναφορά σελίδας. Από την πλευρά του FieldIndex, Heading εισάγει διαχωριστές με γράμματα (Α, Β, Γ…), LetterRange περιορίζει το ευρετήριο σε ένα υποσύνολο του αλφαβήτου, RunSubentriesOnSameLine ελέγχει τη διάταξη των υποκαταχωρήσεων, και τα PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator ελέγχουν τη στίξη μεταξύ μιας καταχώρησης και της αναφοράς σελίδας. FieldIndexFormat απαριθμεί ξεχωριστά τα ενσωματωμένα οπτικά στυλ ευρετηρίου του Word (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).
Πίνακας Αρχών
FieldToa και FieldTA είναι το ισοδύναμο των αρχών του FieldIndex/FieldXE: FieldTA σημειώνει μια παραπομπή στο κείμενο (LongCitation και ShortCitation κείμενο, EntryCategory για ομαδοποίηση κάτω από μια επικεφαλίδα όπως “Υποθέσεις” ή “Νόμοι”, και IsBold/IsItalic για μορφοποίηση), και το FieldToa συγκεντρώνει αυτές τις παραπομπές σε έναν πίνακα, με το EntryCategory να επιλέγει ποια κατηγορία θα συγκεντρωθεί, τα UseHeading και UsePassim να ελέγχουν τις επικεφαλίδες κατηγοριών και τη σύμβαση “passim” για πηγές που παρατίθενται πολλές φορές, και τα PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting να ελέγχουν τη διάταξη.
Αναφορά Περιεχομένου από Άλλα Έγγραφα
FieldRD υλοποιεί το πεδίο RD, το οποίο λέει σε ένα πεδίο TOC, ευρετήριο ή πίνακα αρχών να συμπεριλάβει καταχωρήσεις από άλλο αρχείο κατά τη σύνθεση — FieldRD.FileName είναι το αναφερόμενο έγγραφο, και το IsPathRelative ελέγχει αν αυτή η διαδρομή θα επιλυθεί σχετικά με το τρέχον έγγραφο.
Συμβουλές και Καλές Πρακτικές
- Δημιουργήστε τη συμβολοσειρά εναλλαγής TOC με τον ίδιο τρόπο όπως το Word (
\o "1-3" \h \z \u) αντί να διαμορφώνετε κάθε ιδιότηταFieldTocξεχωριστά, και, στη συνέχεια, προσαρμόστε μόνο τις συγκεκριμένες ιδιότητες που χρειάζεται να αλλάξετε μετά. - Καλέστε το
FieldToc.UpdatePageNumbers()(ή τοField.Update()) μετά τις αλλαγές περιεχομένου ώστε ένα TOC, ευρετήριο ή πίνακας αρχών να αντανακλά το τρέχον έγγραφο αντί για παλαιά αποτελέσματα από τη στιγμή που εισήχθη. - Χρησιμοποιήστε το
FieldTC.TypeIdentifierμαζί με τοFieldToc.EntryIdentifierόταν ένα έγγραφο χρειάζεται περισσότερα από ένα TOC (για παράδειγμα ένα κύριο TOC και έναν ξεχωριστό πίνακα εικόνων) που έχουν δημιουργηθεί από διαφορετικά σύνολα καταχωρήσεων. - Ορίστε το
FieldXE.PageRangeBookmarkName(ή το ισοδύναμο σήμανση εύρους τουFieldTA) αντί να μορφοποιείτε χειροκίνητα ένα εύρος σελίδων στο κείμενο της καταχώρησης, ώστε το ευρετήριο/πίνακας να παραμένει συνεπές εάν το περιεχόμενο μετακινηθεί. - Θυμηθείτε ότι οι αριθμοί σελίδων στα αποτελέσματα INDEX/TOC/TOA αυτής της έκδοσης αξιολογούνται ως τιμές υπόδειξης και όχι ως πραγματικοί αριθμοί σελίδων, καθώς η διάταξη σελίδας και η αρίθμηση δεν αποτελούν μέρος αυτής της έκδοσης.
Κοινά προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Ο πίνακας περιεχομένων δεν περιλαμβάνει τις αναμενόμενες επικεφαλίδες | Η συμβολοσειρά διακόπτη του TOC (ή HeadingLevelRange) εξαιρεί αυτά τα επίπεδα διάρθρωσης | Ρυθμίστε τους διακόπτες που περνούν στο InsertTableOfContents ή ορίστε το FieldToc.HeadingLevelRange |
| Μια καταχώριση ευρετηρίου δεν εμφανίζεται όπου αναμένεται | Το αντίστοιχο σημάδι FieldXE λείπει, ή η σύνταξη υπο-επιπέδου EntryType δεν ταιριάζει με αυτό που αναμένει το FieldIndex | Επιβεβαιώστε ότι οι δείκτες FieldXE υπάρχουν και ότι οι τιμές EntryType τους είναι μορφοποιημένες με συνέπεια |
| Τα αποτελέσματα του πεδίου φαίνονται μη ενημερωμένα μετά την επεξεργασία του περιεχομένου | Το πεδίο δεν ενημερώθηκε μετά την επεξεργασία | Καλέστε το Update() στο πεδίο (ή το UpdateFields() στο Document) |
| Οι καταχωρήσεις από άλλο έγγραφο δεν περιλαμβάνονται κατά τη σύνθεση | Δεν υπάρχει κανένα FieldRD που να αναφέρεται σε αυτό το έγγραφο, ή το IsPathRelative δεν ταιριάζει με τον τρόπο που πρέπει να επιλυθεί η διαδρομή | Προσθέστε ένα FieldRD με τη σωστή ρύθμιση FileName και IsPathRelative |
FAQ
Πώς μπορώ να εισάγω έναν πίνακα περιεχομένων προγραμματιστικά;
Καλέστε το DocumentBuilder.InsertTableOfContents(switches) με μια συμβολοσειρά εναλλαγής τύπου Word, όπως το "\o \"1-3\" \h \z \u", στη θέση όπου πρέπει να εμφανιστεί ο TOC.
Πώς μπορώ να σημειώσω κείμενο ως καταχώρηση ευρετηρίου;
Εισάγετε ένα πεδίο FieldXE σε αυτήν τη θέση (για παράδειγμα μέσω DocumentBuilder.InsertField) με την ιδιότητα Text ορισμένη στο κείμενο της καταχώρησης· το FieldIndex συγκεντρώνει όλους τους δείκτες FieldXE στο έγγραφο στο αποτέλεσμα του ευρετηρίου.
Ποια είναι η διαφορά μεταξύ του FieldTC και των καταχωρήσεων TOC βασισμένων σε επικεφαλίδες;
Η προεπιλεγμένη συμπεριφορά του TOC του Word συλλέγει καταχωρήσεις από παραγράφους χρησιμοποιώντας στυλ επικεφαλίδων. Το FieldTC σας επιτρέπει να σημειώσετε μια αυθαίρετη θέση ως καταχώρηση TOC ανεξάρτητα από το στυλ παραγράφου, το οποίο το FieldToc μπορεί να συμπεριλάβει μέσω αντιστοίχισης τιμών EntryIdentifier/TypeIdentifier.
Πώς μπορώ να ενημερώσω έναν TOC ή ένα ευρετήριο μετά τις αλλαγές στο έγγραφο;
Καλέστε το Update() στο συγκεκριμένο πεδίο (για παράδειγμα FieldToc.Update(), ή FieldToc.UpdatePageNumbers() μόνο για αριθμούς σελίδων), ή το Document.UpdateFields() για να ενημερώσετε όλα τα πεδία στο έγγραφο.
Μπορώ να δημιουργήσω έναν TOC ή ένα ευρετήριο σε πολλαπλά έγγραφα;
Ναι — εισάγετε ένα πεδίο FieldRD που δείχνει σε κάθε επιπλέον έγγραφο μέσω FileName; το πεδίο συναρμολόγησης (FieldToc, FieldIndex ή FieldToa) περιλαμβάνει καταχωρήσεις από τα αναφερθέντα έγγραφα όταν ενημερώνεται.
API Reference Περίληψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
Field | Βασική κλάση για όλους τους τύπους πεδίων, συμπεριλαμβανομένων των Start/Separator/End, Type, Update() |
DocumentBuilder.InsertTableOfContents(switches) | Εισάγετε ένα FieldToc χρησιμοποιώντας διακόπτες στυλ Word TOC |
FieldToc | Υλοποιεί το πεδίο TOC (πίνακας περιεχομένων ή πίνακας εικόνων) |
FieldTC | Σημαδεύει μια προσαρμοσμένη καταχώρηση πίνακα περιεχομένων σε μια συγκεκριμένη θέση |
FieldIndex | Υλοποιεί το πεδίο INDEX, συγκεντρώνοντας τις σημάνσεις FieldXE |
FieldXE | Σημαδεύει μια θέση ως καταχώρηση ευρετηρίου |
FieldToa | Υλοποιεί το πεδίο πίνακα εξουσιών, συγκεντρώνοντας τους FieldTA δείκτες |
FieldTA | Σημαίνει μια παραπομπή για πίνακα εξουσιών |
FieldRD | Αναφέρει το περιεχόμενο άλλου εγγράφου κατά τη δημιουργία ενός TOC, ευρετηρίου ή πίνακα εξουσιών |
FieldIndexFormat | Enum των ενσωματωμένων στυλ εμφάνισης ευρετηρίου του Word |