עבודה עם שדות אינדקס וטבלאות

עבודה עם שדות אינדקס וטבלאות

עבודה עם שדות אינדקס וטבלאות

מדריך זה מציג כיצד לעבוד עם משפחת השדות “Index and Tables” של Word — השדות שמאחורי תוכן עניינים, אינדקס, טבלה של איורים, וטבלה של רשויות. כל אחד מהם הוא תת-מחלקה של Field במרחב השמות Aspose.Words.Fields: FieldToc (תוכן עניינים או איורים), FieldIndex (אינדקס), FieldXE (ערך אינדקס), FieldToa (טבלה של רשויות), FieldTA (ערך טבלה של רשויות, או ציטוט), FieldTC (ערך טבלה של תוכן עניינים), ו-FieldRD (מסמך שמופנה, לצורך בניית אינדקס משולב או תוכן עניינים על פני קבצים מרובים).


מחלקת הבסיס של השדה

כל מחלקת שדה במשפחה זו יורשת מ-Field, שמחשפת את Start, Separator ו-End (הצמתים FieldStart, FieldSeparator ו-FieldEnd שהגביל את השדה ב-run stream), 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 כותב בעצמו כאשר אתה מוסיף טבלת תוכן דרך הממשק. לאחר ההוספה, FieldToc.UpdatePageNumbers() מחשבת מחדש את חלק מספר העמוד של הערכים הקיימים. FieldToc גם חושפת מאפיינים השולטים ישירות במבנה של הטבלה: HeadingLevelRange ו-EntryLevelRange (אילו רמות מתאר כוללות), EntryIdentifier (זיהוי שדה TC שהטבלה צריכה לאסוף, לבניית טבלאות תוכן מרובות מסמנים שונים של FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, ו-— עבור טבלת איורים במקום טבלת תוכן — TableOfFiguresLabel ו-CaptionlessTableOfFiguresLabel.

סימון ערכי תוכן עניינים מותאמים

לא כל ערך במפרט תוכן (TOC) נובע משיטת כותרת. FieldTC מסמן מיקום ספציפי כערך במפרט תוכן באופן עצמאי משיטת הפסקה: FieldTC.Text הוא טקסט הערך, EntryLevel הוא רמת המתאר שבה הוא צריך להופיע, TypeIdentifier מקשר אותו ל-FieldToc.EntryIdentifier בעת בניית יותר ממפרט תוכן אחד, ו-OmitPageNumber מדכא את מספר העמוד עבור ערך זה.

בניית אינדקס

FieldIndex מיישם את שדה INDEX, שמרכז את סימוני FieldXE (רשומת אינדקס) של מסמך לתוך אינדקס אלפביתי. FieldXE.Text הוא טקסט הרשומה, EntryType מקבץ רשומות לתתי-רמות באמצעות תחביר מופרד בנקודותיים, PageRangeBookmarkName מסמן סימנייה שההיקף שלה הופך לטווח עמודים באינדקס במקום למספר עמוד יחיד, ו-IsBold/IsItalic מעצבים את ההתייחסות לעמוד המתקבלת. בצד FieldIndex, Heading מוסיף מפרידי כותרות אותיות (A, B, C…), 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()) לאחר שינויי תוכן כך שתוכן עניינים, אינדקס או טבלת רשויות משקפת את המסמך הנוכחי במקום תוצאות מיושנות מהזמן שבו הוא הוכנס.
  • השתמש ב-FieldTC.TypeIdentifier יחד עם FieldToc.EntryIdentifier כאשר מסמך דורש יותר מתוכן עניינים אחד (למשל תוכן עניינים ראשי וטבלת ציורים נפרדת) שנבנים ממערכות ערכים שונות.
  • הגדר את 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", במיקום שבו יש להציג את תוכן העניינים.

איך אני מסמן טקסט כערך במפתח?

הכנס שדה FieldXE במיקום זה (לדוגמה דרך DocumentBuilder.InsertField) עם המאפיין Text שלו המוגדר לטקסט הערך; FieldIndex מקמפל את כל הסמנים FieldXE במסמך לתוצאה של האינדקס.

מה ההבדל בין FieldTC לבין ערכי TOC מבוססי כותרות?

התנהגות ברירת המחדל של TOC ב-Word אוספת פריטים מפסקאות באמצעות סגנונות כותרת. FieldTC מאפשרת לך לסמן מיקום שרירותי כפריט TOC באופן בלתי תלוי בסגנון הפסקה, ש-FieldToc יכולה לכלול באמצעות התאמת ערכי EntryIdentifier/TypeIdentifier.

איך מרענן תוכן עניינים או אינדקס לאחר שהמסמך השתנה?

הפעל את 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מיישם את השדה table-of-authorities, מרכיב סמנים FieldTA
FieldTAמסמן ציטוט עבור table of authorities
FieldRDמתייחס לתוכן של מסמך אחר בעת יצירת תוכן עניינים, אינדקס או טבלת רשויות
FieldIndexFormatEnum של סגנונות חזותיים מובנים של האינדקס ב-Word

ראה גם

 עברית