ทำงานกับฟิลด์ Index และ Tables

ทำงานกับฟิลด์ Index และ Tables

ทำงานกับฟิลด์ดัชนีและตาราง

คู่มือนี้แสดงวิธีการทำงานกับชุดฟิลด์ “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 สร้างเมื่อคุณแทรก TOC ผ่าน UI. หลังจากแทรกแล้ว, FieldToc.UpdatePageNumbers() คำนวณส่วนหมายเลขหน้าของรายการที่มีอยู่ใหม่. FieldToc ยังเปิดเผยคุณสมบัติที่ควบคุมโครงสร้างของ TOC โดยตรง: HeadingLevelRange และ EntryLevelRange (ระดับโครงร่างที่รวม), EntryIdentifier (ตัวระบุฟิลด์ TC ที่ TOC ควรรวบรวม, เพื่อสร้างหลาย TOC จากเครื่องหมาย FieldTC ที่ต่างกัน), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, และ — สำหรับตารางรูปภาพแทนสารบัญ — TableOfFiguresLabel และ CaptionlessTableOfFiguresLabel.

การทำเครื่องหมายรายการสารบัญที่กำหนดเอง

ไม่ได้ทุกรายการในสารบัญมาจากสไตล์หัวข้อ. 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 เพื่อจัดกลุ่มภายใต้หัวข้อเช่น “Cases” หรือ “Statutes”, และ IsBold/IsItalic สำหรับการจัดรูปแบบ), และ FieldToa รวบรวมการอ้างอิงเหล่านั้นเป็นตาราง, โดย EntryCategory เลือกหมวดหมู่ที่จะรวบรวม, UseHeading และ UsePassim ควบคุมหัวข้อหมวดหมู่และการใช้คำว่า “passim” สำหรับแหล่งข้อมูลที่อ้างอิงหลายครั้ง, และ PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting ควบคุมการจัดวาง.

อ้างอิงเนื้อหาจากเอกสารอื่น

FieldRD ใช้ฟิลด์ RD ซึ่งบอกฟิลด์สารบัญ, ดัชนี, หรือ ตารางอ้างอิงให้รวมรายการจากไฟล์อื่นเมื่อทำการคอมไพล์ — 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" ที่ตำแหน่งที่ต้องการให้สารบัญปรากฏ.

ฉันจะทำเครื่องหมายข้อความเป็นรายการดัชนีได้อย่างไร?

แทรกฟิลด์ FieldXE ที่ตำแหน่งนั้น (เช่น ผ่าน DocumentBuilder.InsertField) โดยตั้งค่าคุณสมบัติ Text ให้เป็นข้อความรายการ; FieldIndex จะรวบรวมเครื่องหมาย FieldXE ทั้งหมดในเอกสารเป็นผลลัพธ์ดัชนี.

ความแตกต่างระหว่าง FieldTC กับรายการสารบัญที่อิงหัวข้อคืออะไร?

พฤติกรรมสารบัญเริ่มต้นของ Word จะรวบรวมรายการจากย่อหน้าที่ใช้สไตล์หัวข้อ. FieldTC ให้คุณทำเครื่องหมายตำแหน่งใดก็ได้เป็นรายการสารบัญโดยไม่ขึ้นกับสไตล์ย่อหน้า ซึ่ง FieldToc สามารถรวมได้โดยการจับคู่ค่าของ EntryIdentifier/TypeIdentifier.

ฉันจะรีเฟรชสารบัญหรือดัชนีหลังจากเอกสารเปลี่ยนแปลงได้อย่างไร?

เรียก Update() บนฟิลด์เฉพาะ (เช่น FieldToc.Update() หรือ FieldToc.UpdatePageNumbers() สำหรับหมายเลขหน้าเท่านั้น) หรือ Document.UpdateFields() เพื่อรีเฟรชทุกฟิลด์ในเอกสาร.

ฉันสามารถสร้างสารบัญหรือดัชนีข้ามหลายเอกสารได้หรือไม่?

ใช่ — แทรกฟิลด์ FieldRD ที่ชี้ไปยังเอกสารเพิ่มเติมแต่ละฉบับผ่าน FileName; ฟิลด์การคอมไพล์ (FieldToc, FieldIndex หรือ FieldToa) จะรวมรายการจากเอกสารที่อ้างอิงเมื่อมีการอัปเดต.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
Fieldคลาสฐานสำหรับประเภทฟิลด์ทั้งหมด รวมถึง Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)แทรก FieldToc โดยใช้สวิตช์แบบ Word-style TOC
FieldTocทำหน้าที่เป็นฟิลด์ TOC (สารบัญหรือสารบัญรูปภาพ)
FieldTCทำเครื่องหมายรายการสารบัญที่กำหนดเองในตำแหน่งเฉพาะ
FieldIndexดำเนินการฟิลด์ INDEX, คอมไพล์เครื่องหมาย FieldXE
FieldXEทำเครื่องหมายตำแหน่งเป็นรายการดัชนี
FieldToaดำเนินการฟิลด์ table-of-authorities, คอมไพล์เครื่องหมาย FieldTA
FieldTAทำเครื่องหมายการอ้างอิงสำหรับ table of authorities
FieldRDอ้างอิงเนื้อหาของเอกสารอื่นเมื่อทำการรวบรวม TOC, ดัชนี หรือ ตารางอ้างอิง
FieldIndexFormatEnum ของสไตล์การแสดงผลดัชนีที่มาพร้อมใน Word

ดูเพิ่มเติม

 ภาษาไทย