ฟิลด์การกำหนดหมายเลข (AUTONUM, PAGE, SEQ, และอื่น ๆ)
ฟิลด์การนับเลข (AUTONUM, PAGE, SEQ, และอื่น ๆ)
คู่มือนี้แสดงวิธีการทำงานกับฟิลด์การนับเลขอัตโนมัติของ Word ใน Aspose.Words FOSS สำหรับ .NET, และวิธีที่แตกต่างจากการนับเลขแบบรายการ. การทำงานกับรายการ covers List, ListFormat, และ ListLevel – โมเดลวัตถุที่อยู่เบื้องหลังย่อหน้ารายการที่มีหมายเลขและหัวข้อย่อยของ Word. Word ยังมีชุดการนับเลขแยกต่างหาก fields ซึ่งคำนวณหมายเลขที่ตำแหน่งของฟิลด์ในข้อความ แทนที่จะผ่านการจัดรูปแบบรายการของย่อหน้า: การนับเลขอัตโนมัติแบบกฎหมายและโครงร่าง, ตัวนับหน้าและส่วน, การนับเลขเชื่อมโยงรายการ, และลำดับที่ตั้งชื่อ. มันจำลองแต่ละอย่างเป็น Field คลาสย่อยใน the Aspose.Words.Fields เนมสเปซ, พร้อมกับ NumberStyle enum ที่ใช้ร่วมกันโดยระดับรายการ, หมายเหตุท้ายบันทัดและหมายเหตุตอนท้าย, และเลขหน้าเพื่อเลือกวิธีการแสดงตัวเลข.
ฟิลด์การนับเลขอัตโนมัติ: AUTONUM, AUTONUMLGL, AUTONUMOUT
FieldAutoNum ทำการ implements the AUTONUM field (simple sequential numbering) และเปิดเผย SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (legal/outline-style numbering), เพิ่ม RemoveTrailingPeriod เคียงคู่กับของมันเอง SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline numbering) และไม่มีคุณสมบัติของมันเองนอกเหนือจาก base Field สมาชิกที่อธิบายใน ทำงานกับฟิลด์.
การนับเลขเชื่อมโยงกับรายการด้วย FieldListNum
FieldListNum ใช้ฟิลด์ LISTNUM: ListName ระบุคำนิยามการนับเลขแบบนามธรรมที่จะใช้, และ HasListName รายงานว่ารหัสของฟิลด์จริง ๆ แล้วให้ชื่อหรือไม่. ListLevel แทนที่ระดับรายการเริ่มต้นที่ฟิลด์ทำการนับเลข, และ StartingNumber กำหนดค่าที่การนับเลขของฟิลด์เริ่มต้นจาก.
ตัวนับหน้าและส่วน: FieldPage, FieldSection, FieldSectionPages
FieldPage ดำเนินการ PAGE ฟิลด์และ FieldSectionPages implements SECTIONPAGES. ทั้งสองขึ้นอยู่กับการคำนวณเลย์เอาต์ของหน้าเพื่อให้ได้ผลลัพธ์; เช่นเดียวกับ NUMPAGES ฟิลด์ที่อธิบายไว้ใน ทำงานกับฟิลด์, ค่าฟิลด์ที่ขึ้นกับเลย์เอาต์ไม่ถูกคำนวณในฉบับนี้เนื่องจากไม่มีเอนจิ้นการวางหน้า/การเรนเดอร์, ดังนั้นฟิลด์เหล่านี้จะประเมินเป็นตัวแทนชั่วคราว 0. FieldSection implements SECTION, ส่งคืนหมายเลขส่วนปัจจุบันของเอกสาร – ไม่ขึ้นกับการแบ่งหน้าและไม่ได้รับผลกระทบจากข้อจำกัดนั้น.
ลำดับที่ตั้งชื่อด้วย FieldSeq
FieldSeq ทำหน้าที่เป็นฟิลด์ SEQ สำหรับลำดับที่ตั้งชื่อและมีการกำหนดหมายเลขอิสระ (เช่น รูปภาพหรือ ตาราง): SequenceIdentifier ตั้งชื่อลำดับ, และ BookmarkName สามารถชี้ฟิลด์ไปยังรายการอื่นในเอกสารแทนตำแหน่งของฟิลด์เองได้. InsertNextNumber ใส่หมายเลขถัดไปในลำดับโดยไม่แสดงค่าของตำแหน่งปัจจุบัน, และ ResetNumber / ResetHeadingLevel รีเซ็ตตัวนับของลำดับเป็นหมายเลขที่ระบุ, หรือเริ่มใหม่ที่ระดับหัวข้อที่กำหนด.
FieldRevNum
FieldRevNum ทำหน้าที่เป็นฟิลด์ REVNUM, และไม่มีคุณสมบัติของตนเองนอกจากสมาชิกฐาน Field.
การจัดรูปแบบตัวเลขด้วย NumberStyle
NumberStyle คือ enum ที่ใช้ในระดับรายการ, การนับหมายเลขเชิงอรรถ/บันทึกท้าย, และหมายเลขหน้าเพื่อเลือกวิธีการแสดงตัวเลข. รูปแบบทั่วไปได้แก่ Arabic, UppercaseRoman / LowercaseRoman, UppercaseLetter / LowercaseLetter, Ordinal, และ OrdinalText, พร้อมกับชุดใหญ่ของรูปแบบเฉพาะภูมิภาค (Kanji, Hangul, Hanja, ThaiLetter, HindiLetter1, และอื่น ๆ อีกหลายรายการ) รวมถึง Bullet, LeadingZero, None, และ Custom สำหรับรูปแบบที่ผู้เรียกกำหนดเอง.
เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ใช้
FieldListNumเมื่อเลขต้องอ้างอิงการกำหนดรายการที่มีอยู่ตามชื่อ; ใช้FieldAutoNum/FieldAutoNumLgl/FieldAutoNumOutสำหรับการนับเลขที่ไม่ได้ผูกกับListเฉพาะ. - จำไว้ว่า
FieldPageและFieldSectionPagesขึ้นกับการจัดวางเช่นเดียวกับNUMPAGES– อย่าพึ่งพาResultของพวกมันที่จะแสดงจำนวนหน้าที่คำนวณจริงในฉบับนี้. - ใช้
FieldSeq.BookmarkNameเมื่อฟิลด์ SEQ ต้องอ้างอิงเลขที่กำหนดไว้ที่อื่นในเอกสารแทนที่จะเพิ่มตัวนับของตัวเองที่ตำแหน่งของฟิลด์. - ตั้งค่า
FieldSeq.ResetHeadingLevelเมื่อลำดับเลข (เช่นเลขรูปภาพ) ควรเริ่มใหม่ที่แต่ละบทหรือหัวข้อส่วนใหม่.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
FieldPage หรือ FieldSectionPages เสมอจะแสดง 0 | ฟิลด์เหล่านี้ขึ้นอยู่กับการจัดหน้าแบบคำนวณ ซึ่งไม่ได้เป็นส่วนหนึ่งของฉบับนี้ | พฤติกรรมที่คาดหวัง – ใช้เวอร์ชันเชิงพาณิชย์ Aspose.Words สำหรับ .NET หากต้องการจำนวนหน้าที่คำนวณ |
FieldListNum ไม่ได้ใช้รูปแบบรายการที่คาดหวัง | ListName ไม่ตรงกับคำนิยามการจัดลำดับแบบนามธรรมที่มีอยู่ในเอกสาร | ยืนยันชื่อรายการที่แน่นอน หรือ ตรวจสอบ HasListName เพื่อดูว่ารหัสของฟิลด์มีการจัดหาชื่อหรือไม่ |
หมายเลข FieldSeq ไม่เริ่มต้นใหม่ตามที่คาดหวัง | ResetNumber หรือ ResetHeadingLevel ไม่ได้ถูกตั้งค่าในฟิลด์ที่ควรเริ่มลำดับใหม่ | ตั้งค่าคุณสมบัติการรีเซ็ตที่เหมาะสมบนอินสแตนซ์ FieldSeq นั้น |
FAQ
ความแตกต่างระหว่างการนับเลขรายการกับฟิลด์การนับเลขเหล่านี้คืออะไร?
การจัดลำดับรายการ (List, ListFormat, ListLevel, ครอบคลุมใน การทำงานกับรายการ) จัดรูปแบบย่อหน้าทั้งหมดเป็นรายการ. ฟิลด์ในหน้านี้คำนวณตัวเลข ณ จุดเฉพาะในข้อความ – สำหรับลำดับ, ตัวนับหน้า/ส่วน, หรือการจัดหมายเลขอัตโนมัติแบบกฎหมาย – แยกจากการจัดรูปแบบรายการของย่อหน้า.
ทำไมฟิลด์ PAGE จึงประเมินค่าเป็น 0 เสมอ?
FieldPage ขึ้นอยู่กับการคำนวณเลย์เอาต์ของหน้า, และรุ่นนี้ไม่ได้รวมเอ็นจิ้นการจัดหน้า/การเรนเดอร์ – เหตุผลเดียวกันที่ NUMPAGES ประเมินค่าเป็นค่าตัวแทน.
ฉันจะสร้างลำดับที่มีชื่อและมีการนับเลขแยกกัน เช่น “Figure 1”, “Figure 2” อย่างไร?
ใช้ FieldSeq พร้อมกับ SequenceIdentifier ที่สอดคล้องกัน (เช่น "Figure") ในแต่ละอินสแตนซ์ของฟิลด์; แต่ละอันจะแสดงหมายเลขถัดไปในลำดับนั้น.
ฉันจะควบคุมสไตล์ตัวเลขหรืออักษรที่ตัวเลขถูกแสดงอย่างไร?
ใช้ enum NumberStyle – ค่าต่าง ๆ เช่น Arabic, UppercaseRoman, LowercaseLetter และ OrdinalText เลือกสไตล์การเรนเดอร์, พร้อมกับ Bullet, None และ Custom สำหรับรูปแบบที่ไม่เป็นตัวเลขหรือรูปแบบที่ผู้เรียกกำหนดเอง.
API Reference สรุป
| คลาส / Enum | คำอธิบาย |
|---|---|
FieldAutoNum | AUTONUM field; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL field; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT ฟิลด์ |
FieldListNum | LISTNUM ฟิลด์; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE ฟิลด์ (ขึ้นกับเลย์เอาต์; ให้ค่าเป็น 0 ในฉบับนี้) |
FieldSection | SECTION ฟิลด์ |
FieldSectionPages | SECTIONPAGES ฟิลด์ (ขึ้นกับเลย์เอาต์; ให้ค่าเป็น 0 ในฉบับนี้) |
FieldSeq | SEQ ฟิลด์; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM ฟิลด์ |
NumberStyle | Enum ของสไตล์การแสดงตัวเลขที่ใช้โดยระดับรายการ, เชิงอรรถ/เชิงอรรถท้าย, และหมายเลขหน้า |