การทำงานกับสารบัญ
บ่อยครั้งที่คุณจะทำงานกับเอกสารที่มีสารบัญ (TOC) การใช้ Aspose.Words คุณสามารถแทรกสารบัญของคุณเองหรือสร้างสารบัญที่มีอยู่ในเอกสารขึ้นมาใหม่ทั้งหมดโดยใช้โค้ดเพียงไม่กี่บรรทัด บทความนี้สรุปวิธีการทำงานกับเขตข้อมูลสารบัญและสาธิต:
- วิธีแทรก
TOC
ใหม่ - อัปเดต TOC ใหม่หรือที่มีอยู่ในเอกสาร
- ระบุสวิตช์เพื่อควบคุมการจัดรูปแบบและโครงสร้างโดยรวมของ TOC
- วิธีปรับเปลี่ยนสไตล์และรูปลักษณ์ของสารบัญ
- วิธีลบฟิลด์
TOC
ทั้งหมดพร้อมกับรายการทั้งหมดในเอกสาร
แทรกสารบัญโดยทางโปรแกรม
คุณสามารถแทรกฟิลด์ TOC
(สารบัญ) ลงในเอกสารที่ตำแหน่งปัจจุบันได้โดยการเรียกเมธอด DocumentBuilder.insert_table_of_contents
สารบัญในเอกสาร Word สามารถสร้างได้หลายวิธีและจัดรูปแบบโดยใช้ตัวเลือกที่หลากหลาย ฟิลด์จะสลับที่คุณส่งไปยังวิธีการควบคุมวิธีการสร้างตารางและแสดงในเอกสารของคุณ
สวิตช์เริ่มต้นที่ใช้ใน TOC
ที่แทรกใน Microsoft Word คือ "\o “1-3 \เอช \z \u” คำอธิบายของสวิตช์เหล่านี้รวมถึงรายการสวิตช์ที่รองรับมีอยู่ในบทความถัดไป คุณสามารถใช้คำแนะนำนั้นเพื่อรับสวิตช์ที่ถูกต้อง หรือหากคุณมีเอกสารที่มี TOC
ที่คล้ายกันที่คุณต้องการอยู่แล้ว คุณสามารถแสดงโค้ดฟิลด์ (ALT+F9) และคัดลอกสวิตช์จากฟิลด์ได้โดยตรง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแทรกฟิลด์สารบัญลงในเอกสาร:
รหัสนี้แสดงให้เห็นถึงสารบัญใหม่ที่ถูกแทรกลงในเอกสารเปล่า จากนั้นคลาส DocumentBuilder จะใช้เพื่อแทรกการจัดรูปแบบเนื้อหาตัวอย่างด้วยสไตล์ส่วนหัวที่เหมาะสม ซึ่งใช้เพื่อทำเครื่องหมายเนื้อหาที่จะรวมไว้ใน TOC บรรทัดถัดไปเติมข้อมูล TOC
โดยการอัปเดตฟิลด์และเค้าโครงหน้าของเอกสาร
TOC
แต่ไม่มีเนื้อหาที่มองเห็นได้ เนื่องจากมีการแทรกช่อง TOC
แล้ว แต่ยังไม่ได้เติมข้อมูลจนกว่าจะมีการอัปเดตในเอกสาร ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้จะกล่าวถึงในหัวข้อถัดไป
อัพเดตสารบัญ
Aspose.Words ช่วยให้คุณสามารถอัปเดต TOC
ได้อย่างสมบูรณ์ด้วยโค้ดเพียงไม่กี่บรรทัด ซึ่งสามารถทำได้เพื่อเติมข้อมูล TOC
ที่แทรกใหม่หรือเพื่ออัปเดต TOC
ที่มีอยู่หลังจากทำการเปลี่ยนแปลงเอกสารแล้ว ต้องใช้สองวิธีต่อไปนี้เพื่ออัปเดตฟิลด์ TOC
ในเอกสาร:
โปรดทราบว่าจำเป็นต้องเรียกใช้วิธีการอัพเดตทั้งสองนี้ตามลำดับ หากกลับรายการสารบัญจะถูกเติมแต่จะไม่มีหมายเลขหน้าแสดง สามารถอัปเดต TOC ที่แตกต่างกันจำนวนเท่าใดก็ได้ วิธีการเหล่านี้จะอัปเดต TOC ทั้งหมดที่พบในเอกสารโดยอัตโนมัติ
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างฟิลด์ TOC
ใหม่ในเอกสารโดยเรียกใช้การอัปเดตฟิลด์:
การเรียก Document.update_fields ครั้งแรกจะสร้าง TOC
รายการข้อความทั้งหมดจะถูกเติม และ TOC
จะปรากฏขึ้นเกือบเสร็จสมบูรณ์ สิ่งเดียวที่ขาดหายไปคือหมายเลขหน้าซึ่งตอนนี้แสดงด้วย “?” การเรียก Document.update_page_layout ครั้งที่สองจะสร้างเค้าโครงของเอกสารในหน่วยความจำ จำเป็นต้องดำเนินการนี้เพื่อรวบรวมหมายเลขหน้าของรายการ หมายเลขหน้าที่ถูกต้องซึ่งคำนวณจากการโทรนี้จะถูกแทรกลงใน TOC
ใช้สวิตช์เพื่อควบคุมพฤติกรรมของสารบัญ
เช่นเดียวกับฟิลด์อื่นๆ ฟิลด์ TOC
สามารถยอมรับสวิตช์ที่กำหนดภายในโค้ดฟิลด์ที่ควบคุมวิธีการสร้างสารบัญ สวิตช์บางตัวใช้เพื่อควบคุมว่ารายการใดบ้างที่รวมอยู่และระดับใด ในขณะที่สวิตช์บางตัวใช้เพื่อควบคุมลักษณะที่ปรากฏของ TOC สวิตช์สามารถรวมเข้าด้วยกันเพื่อให้สามารถผลิตสารบัญที่ซับซ้อนได้
ตามค่าเริ่มต้น สวิตช์ด้านบนเหล่านี้จะรวมไว้เมื่อแทรก TOC
เริ่มต้นในเอกสาร TOC
ที่ไม่มีสวิตช์จะรวมเนื้อหาจากรูปแบบส่วนหัวที่มีอยู่แล้วภายใน (เหมือนกับว่าสวิตช์ \O ถูกตั้งค่าไว้) สวิตช์ TOC
ที่พร้อมใช้งานที่รองรับโดย Aspose.Words มีดังต่อไปนี้และมีการอธิบายการใช้งานโดยละเอียด สามารถแบ่งออกเป็นส่วนต่างๆ ตามประเภทได้ สวิตช์ในส่วนแรกจะกำหนดเนื้อหาที่จะรวมไว้ใน TOC
และสวิตช์ในส่วนที่สองจะควบคุมลักษณะที่ปรากฏของ TOC หากไม่มีสวิตช์แสดงอยู่ที่นี่ แสดงว่าสวิตช์ไม่รองรับในขณะนี้ สวิตช์ทั้งหมดจะได้รับการสนับสนุนในเวอร์ชันต่อๆ ไป เรากำลังเพิ่มการสนับสนุนเพิ่มเติมในทุกรุ่น
สวิตช์ทำเครื่องหมายรายการ
สวิตช์ | คำอธิบาย |
---|---|
Heading Styles (\O สวิตช์) |
สวิตช์นี้กำหนดว่า |
![working-with-table-of-contents-styles](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-2.png)
เนื้อหาใดๆ ที่จัดรูปแบบด้วยสไตล์เหล่านี้จะรวมอยู่ในสารบัญ ระดับของส่วนหัวจะกำหนดระดับลำดับชั้นที่สอดคล้องกันของรายการใน TOC ตัวอย่างเช่น ย่อหน้าที่มีลักษณะหัวเรื่อง 1 จะถือเป็นระดับแรกใน `TOC` ในขณะที่ย่อหน้าที่มีหัวเรื่อง 2 จะถือเป็นระดับถัดไปในลำดับชั้นและอื่นๆ
| | **Outline Levels***(\U สวิตช์)* |
แต่ละย่อหน้าสามารถกำหนดระดับเค้าร่างภายใต้ตัวเลือกย่อหน้า
![working-with-table-of-contents-paragraph](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-3.png)
การตั้งค่านี้กำหนดระดับที่ย่อหน้านี้ควรได้รับการปฏิบัติในลำดับชั้นของเอกสาร นี่เป็นแนวทางปฏิบัติที่ใช้กันทั่วไปซึ่งใช้ในการจัดโครงสร้างเค้าโครงของเอกสารได้อย่างง่ายดาย สามารถดูลำดับชั้นนี้ได้โดยเปลี่ยนเป็นมุมมองโครงร่างใน Microsoft Word เช่นเดียวกับสไตล์ส่วนหัว สามารถมีระดับเค้าร่างได้ 1 - 9 ระดับ นอกเหนือจากระดับ "ข้อความเนื้อหา" เค้าร่างระดับ 1 – 9 จะปรากฏใน `TOC` ในระดับที่สอดคล้องกันของลำดับชั้น
เนื้อหาใดๆ ที่มีระดับเค้าร่างที่ตั้งค่าในรูปแบบย่อหน้าหรือบนย่อหน้าโดยตรงจะรวมอยู่ใน TOC ใน Aspose.Words ระดับเค้าร่างจะแสดงด้วยคุณสมบัติ `ParagraphFormat.OutlineLevel` ของโหนดย่อหน้า ระดับเค้าร่างของลักษณะย่อหน้าจะแสดงในลักษณะเดียวกันโดยคุณสมบัติ `Style.ParagraphFormat`
โปรดทราบว่าสไตล์ส่วนหัวที่มีอยู่แล้วภายใน เช่น หัวเรื่อง 1 มีการตั้งค่าบังคับระดับเค้าร่างในการตั้งค่าสไตล์
*(\T สวิตช์)* |
สวิตช์นี้จะอนุญาตให้ใช้สไตล์ที่กำหนดเองเมื่อรวบรวมรายการที่จะใช้ใน TOC ซึ่งมักจะใช้ร่วมกับสวิตช์ \O เพื่อรวมสไตล์ที่กำหนดเองพร้อมกับสไตล์หัวเรื่องที่มีอยู่แล้วภายใน TOC
พารามิเตอร์ของสวิตช์ควรอยู่ภายในเครื่องหมายคำพูด สามารถใส่สไตล์ที่กำหนดเองได้หลายแบบ โดยสำหรับแต่ละสไตล์ ควรระบุชื่อ ตามด้วยเครื่องหมายจุลภาค ตามด้วยระดับที่สไตล์ควรปรากฏใน `TOC` สไตล์เพิ่มเติมยังคั่นด้วยเครื่องหมายจุลภาคเช่นกัน
เช่น
{ TOC \o "1-3" \t "CustomHeading1, 1, CustomHeading2, 2"}
จะใช้เนื้อหาที่จัดสไตล์ด้วย CustomHeading1 เป็นเนื้อหาระดับ 1 ใน `TOC` และ CustomHeading2 เป็นระดับ 2
| | **Use TC Fields***(สวิตช์ \F และ \L)* |
ในเวอร์ชันเก่าของ Microsoft Word วิธีเดียวที่จะสร้าง `TOC` คือการใช้ฟิลด์ TC ฟิลด์เหล่านี้จะถูกแทรกที่ซ่อนอยู่ในเอกสาร แม้ว่ารหัสฟิลด์จะแสดงก็ตาม รวมถึงข้อความที่ควรแสดงในรายการและ `TOC` ถูกสร้างขึ้นจากข้อความเหล่านั้น ขณะนี้ฟังก์ชันการทำงานนี้ไม่ได้ใช้บ่อยนัก แต่อาจยังมีประโยชน์ในบางโอกาสเพื่อรวมรายการใน `TOC` ซึ่งไม่ได้เยื้องเพื่อให้มองเห็นได้ในเอกสาร
เมื่อแทรกฟิลด์เหล่านี้จะปรากฏถูกซ่อนไว้แม้ว่าจะมีการแสดงโค้ดฟิลด์ก็ตาม ไม่สามารถมองเห็นได้โดยไม่แสดงเนื้อหาที่ซ่อนอยู่ หากต้องการดูฟิลด์เหล่านี้ ต้องเลือกแสดงการจัดรูปแบบย่อหน้า
![working-with-table-of-contents-paragraph-settings](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-4.png)
ฟิลด์เหล่านี้สามารถแทรกลงในเอกสารในตำแหน่งใดก็ได้เช่นเดียวกับฟิลด์อื่นๆ และแสดงด้วยการแจงนับ `FieldType.FieldTOCEntry`สวิตช์ \F ใน `TOC` ใช้เพื่อระบุว่าควรใช้เขตข้อมูล TC เป็นรายการ สวิตช์เองโดยไม่มีตัวระบุเพิ่มเติมหมายความว่าช่อง TC ใดๆ ในเอกสารจะถูกรวมไว้ด้วย พารามิเตอร์พิเศษใดๆ ซึ่งมักจะเป็นตัวอักษรตัวเดียวจะกำหนดว่าเฉพาะฟิลด์ TC ซึ่งมีสวิตช์ \f ที่ตรงกันเท่านั้นที่จะรวมอยู่ใน TOC เช่น *
{ TOC \f t }
จะรวมเฉพาะช่อง TC เช่น
{ TC \f t }
ฟิลด์ `TOC` ยังมีสวิตช์ที่เกี่ยวข้อง สวิตช์ "\L" ระบุว่ารวมเฉพาะฟิลด์ TC ที่มีระดับภายในช่วงที่ระบุเท่านั้น
![todo:image_alt_text](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-5.png)
ฟิลด์ `TC` เองก็สามารถตั้งค่าสวิตช์ได้หลายตัวเช่นกัน เหล่านี้คือ:
- *\F – อธิบายไว้ข้างต้น*
- *\L – กำหนดระดับใน `TOC` ฟิลด์ TC นี้จะปรากฏใน `TOC` ซึ่งใช้สวิตช์เดียวกันนี้จะรวมฟิลด์ TC นี้เท่านั้นหากอยู่ภายในช่วงที่ระบุ*
- `_\N` – หมายเลขหน้าสำหรับรายการ `TOC` นี้จะไม่แสดง โค้ดตัวอย่างของวิธีการแทรกฟิลด์ TC สามารถพบได้ในส่วนถัดไป
|ลักษณะที่ปรากฏที่เกี่ยวข้องกับสวิตช์
สวิตช์ | คำอธิบาย |
---|---|
Omit Page Numbers (\N สวิตช์) |
สวิตช์นี้ใช้เพื่อซ่อนหมายเลขหน้าสำหรับ TOC บางระดับ ตัวอย่างเช่นคุณสามารถกำหนดได้ |
{TOC \o "1-4" \n "3-4" }
และหมายเลขหน้าในรายการระดับ 3 และ 4 จะถูกซ่อนไว้พร้อมกับจุดตัวนำ (ถ้ามี) หากต้องการระบุเพียงระดับเดียว ควรใช้ช่วง เช่น "1-1" จะยกเว้นหมายเลขหน้าสำหรับระดับแรกเท่านั้น
การไม่ระบุช่วงระดับจะละเว้นหมายเลขหน้าสำหรับทุกระดับใน TOC การตั้งค่านี้มีประโยชน์เมื่อส่งออกเอกสารเป็น HTML หรือรูปแบบที่คล้ายกัน เนื่องจากรูปแบบที่ใช้ HTML ไม่มีแนวคิดเกี่ยวกับหน้าใดๆ ดังนั้นจึงไม่จำเป็นต้องใส่หมายเลขหน้า
![todo:image_alt_text](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-6.png)
| | **Insert As Hyperlinks***(\H สวิตช์)* |
สวิตช์นี้ระบุว่ารายการ `TOC` จะถูกแทรกเป็นไฮเปอร์ลิงก์ เมื่อดูเอกสารใน Microsoft Word รายการเหล่านี้จะยังคงปรากฏเป็นข้อความปกติภายใน `TOC` แต่มีไฮเปอร์ลิงก์ จึงสามารถใช้เพื่อนำทางไปยังตำแหน่งของรายการต้นฉบับในเอกสารได้โดยใช้ *Ctrl + คลิกซ้าย* ใน Microsoft Word เมื่อสิ่งนี้ รวมสวิตช์แล้วลิงก์เหล่านี้จะถูกเก็บรักษาไว้ในรูปแบบอื่นด้วย ตัวอย่างเช่นในรูปแบบที่ใช้ HTML รวมถึง EPUB และรูปแบบที่เรนเดอร์ เช่น PDF และ XPS สิ่งเหล่านี้จะถูกส่งออกเป็นลิงก์ที่ใช้งานได้
หากไม่มีสวิตช์นี้ ให้ตั้งค่า `TOC` ในเอาต์พุตเหล่านี้ทั้งหมดจะถูกส่งออกเป็นข้อความธรรมดา และจะไม่แสดงลักษณะการทำงานนี้ หากเปิดเอกสารใน MS Word ข้อความของรายการจะไม่สามารถคลิกได้ด้วยวิธีนี้ แต่ยังคงสามารถใช้หมายเลขหน้าเพื่อนำทางไปยังรายการต้นฉบับได้
![working-with-table-of-contents-titles](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-7.png)
| | **Set Separator Character***(\P สวิตช์)* |
สวิตช์นี้ช่วยให้เนื้อหาที่แยกชื่อเรื่องของรายการและหมายเลขหน้าเปลี่ยนแปลงได้ง่ายใน TOC ควรระบุตัวคั่นที่จะใช้หลังสวิตช์นี้และอยู่ในเครื่องหมายคำพูด
ตรงกันข้ามกับสิ่งที่บันทึกไว้ในเอกสารประกอบของ Office คุณสามารถใช้อักขระได้เพียงตัวเดียวแทนอักขระสูงสุดห้าตัว สิ่งนี้ใช้ได้กับทั้ง MS Word และ Aspose.Words
ไม่แนะนำให้ใช้สวิตช์นี้ เนื่องจากไม่สามารถควบคุมสิ่งที่ใช้ในการแยกรายการและหมายเลขหน้าใน TOC ได้มากนัก ขอแนะนำให้แก้ไขสไตล์ `TOC` ที่เหมาะสมแทน เช่น `StyleIdentifier.TOC1` จากนั้นแก้ไขสไตล์ผู้นำด้วยการเข้าถึงสมาชิกแบบอักษรเฉพาะ เป็นต้น รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำเช่นนี้ สามารถพบได้ในบทความ
![working-with-table-of-contents-toc](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-8.png)
| | **Preserve Tab Entries***(\W สวิตช์)* |
การใช้สวิตช์นี้จะระบุว่ารายการใดๆ ที่มีอักขระแท็บ เช่น ส่วนหัวที่มีแท็บที่ท้ายบรรทัด จะถูกเก็บไว้เป็นอักขระแท็บที่เหมาะสมเมื่อเติม TOC ซึ่งหมายความว่าฟังก์ชันของอักขระแท็บจะปรากฏใน `TOC` และสามารถใช้เพื่อจัดรูปแบบรายการได้ ตัวอย่างเช่น บางรายการอาจใช้แท็บหยุดและอักขระแท็บเพื่อเว้นระยะห่างข้อความให้เท่ากัน ตราบใดที่ระดับ `TOC` ที่เกี่ยวข้องกำหนดแท็บหยุดที่เทียบเท่า รายการ `TOC` ที่สร้างขึ้นจะปรากฏขึ้นโดยมีระยะห่างใกล้เคียงกัน
ในสถานการณ์เดียวกัน หากไม่ได้กำหนดสวิตช์นี้ไว้ อักขระแท็บจะถูกแปลงเป็นช่องว่างที่เทียบเท่ากับแท็บที่ไม่ทำงาน ผลลัพธ์จะไม่ปรากฏตามที่คาดไว้
![working-with-table-of-contents-aspose](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-9.png)
| | **Preserve New Line Entries***(\X สวิตช์)* |
เช่นเดียวกับสวิตช์ด้านบน สวิตช์นี้ระบุว่าส่วนหัวที่ขยายหลายบรรทัด (โดยใช้อักขระบรรทัดใหม่ไม่แยกย่อหน้า) จะถูกรักษาไว้เหมือนที่อยู่ใน TOC ที่สร้างขึ้น ตัวอย่างเช่น ส่วนหัวที่จะกระจายไปตามบรรทัดต่างๆ สามารถใช้อักขระบรรทัดใหม่ (Ctrl + Enter หรือ `ControlChar.LineBreak`) เพื่อแยกเนื้อหาไปตามบรรทัดต่างๆ เมื่อระบุสวิตช์นี้ รายการใน `TOC` จะรักษาอักขระบรรทัดใหม่เหล่านี้ไว้ดังที่แสดงด้านล่าง
ในสถานการณ์นี้ ถ้าไม่ได้กำหนดสวิตช์ไว้ อักขระบรรทัดใหม่จะถูกแปลงเป็นช่องว่างเดียว
![working-with-table-of-contents-aspose-words](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-10.png)
|แทรกฟิลด์ TC
คุณสามารถแทรกฟิลด์ TC ใหม่ที่ตำแหน่งปัจจุบันของ DocumentBuilder ได้โดยการเรียกเมธอด DocumentBuilder.insert_field และระบุชื่อฟิลด์เป็น “TC” พร้อมกับสวิตช์ใดๆ ที่จำเป็น ตัวอย่างด้านล่างแสดงวิธีแทรกช่อง TC
ลงในเอกสารโดยใช้ DocumentBuilder
ปรับเปลี่ยนสารบัญ
การจัดรูปแบบของรายการใน TOC
ไม่ได้ใช้สไตล์ดั้งเดิมของรายการที่ทำเครื่องหมายไว้ แต่แต่ละระดับจะได้รับการจัดรูปแบบโดยใช้สไตล์ TOC
ที่เทียบเท่ากัน ตัวอย่างเช่น ระดับแรกใน TOC
ถูกจัดรูปแบบด้วยสไตล์ TOC1 ระดับที่สองถูกจัดรูปแบบด้วยสไตล์ TOC2 และอื่นๆ ซึ่งหมายความว่าหากต้องการเปลี่ยนรูปลักษณ์ของ TOC
จะต้องแก้ไขสไตล์เหล่านี้ ใน Aspose.Words สไตล์เหล่านี้จะแสดงโดย StyleIdentifier.TOC1 อิสระของโลแคลไปจนถึง StyleIdentifier.TOC9 และสามารถดึงข้อมูลจากคอลเลกชัน Document.styles โดยใช้ตัวระบุเหล่านี้
เมื่อดึงข้อมูลสไตล์ที่เหมาะสมของเอกสารแล้ว การจัดรูปแบบสำหรับสไตล์นี้จะสามารถแก้ไขได้ การเปลี่ยนแปลงใดๆ ที่เกิดขึ้นกับสไตล์เหล่านี้จะมีผลกับ TOC ในเอกสารโดยอัตโนมัติ ตัวอย่างด้านล่างนี้จะเปลี่ยนคุณสมบัติการจัดรูปแบบที่ใช้ในสไตล์ TOC
ระดับแรก
นอกจากนี้ ยังมีประโยชน์ที่จะต้องทราบว่าการจัดรูปแบบโดยตรงใดๆ ของย่อหน้า (กำหนดไว้ในย่อหน้านั้นและไม่ใช่ในรูปแบบ) ที่ทำเครื่องหมายให้รวม TOC
จะถูกคัดลอกไปไว้ในรายการใน TOC ตัวอย่างเช่น หากใช้สไตล์หัวเรื่อง 1 เพื่อทำเครื่องหมายเนื้อหาสำหรับ TOC
และสไตล์นี้มีการจัดรูปแบบตัวหนา ในขณะที่ย่อหน้าก็มีการใช้การจัดรูปแบบตัวเอียงโดยตรงด้วย รายการ TOC
ที่ได้จะไม่เป็นตัวหนาเนื่องจากเป็นส่วนหนึ่งของการจัดรูปแบบสไตล์ แต่จะเป็นตัวเอียงเนื่องจากมีการจัดรูปแบบโดยตรงในย่อหน้า
คุณยังสามารถควบคุมการจัดรูปแบบของตัวคั่นที่ใช้ระหว่างแต่ละรายการและหมายเลขหน้าได้ ตามค่าเริ่มต้น นี่คือเส้นประซึ่งกระจายไปทั่วหมายเลขหน้าโดยใช้อักขระแท็บและแท็บหยุดด้านขวาเรียงชิดกับระยะขอบด้านขวา
การใช้คลาส Style ที่ดึงมาสำหรับระดับ TOC
เฉพาะที่คุณต้องการแก้ไข คุณยังสามารถแก้ไขลักษณะที่ปรากฏของสิ่งเหล่านี้ในเอกสารได้อีกด้วย หากต้องการเปลี่ยนลักษณะที่ปรากฏก่อนอื่น จะต้องเรียก Style.paragraph_format เพื่อดึงการจัดรูปแบบย่อหน้าสำหรับสไตล์ จากนี้ คุณสามารถดึงข้อมูลแท็บหยุดได้โดยการเรียก ParagraphFormat.tab_stops และแก้ไขแท็บหยุดที่เหมาะสม การใช้เทคนิคเดียวกันนี้ทำให้สามารถย้ายหรือลบแท็บทั้งหมดพร้อมกันได้ ตัวอย่างด้านล่างแสดงวิธีการแก้ไขตำแหน่งของแท็บหยุดด้านขวาในย่อหน้าที่เกี่ยวข้องกับ TOC
ลบสารบัญออกจากเอกสาร
สารบัญสามารถลบออกจากเอกสารได้โดยการลบโหนดทั้งหมดที่พบระหว่างโหนด FieldStart และ FieldEnd ของฟิลด์ TOC
รหัสด้านล่างแสดงให้เห็นถึงสิ่งนี้ การลบฟิลด์ TOC
นั้นง่ายกว่าฟิลด์ปกติ เนื่องจากเราไม่ได้ติดตามฟิลด์ที่ซ้อนกัน แต่เราตรวจสอบว่าโหนด FieldEnd เป็นประเภท FieldType.FIELD_TOC ซึ่งหมายความว่าเราพบจุดสิ้นสุดของ TOC ปัจจุบันแล้ว เทคนิคนี้สามารถใช้ได้ในกรณีนี้โดยไม่ต้องกังวลเกี่ยวกับฟิลด์ที่ซ้อนกัน เนื่องจากเราสามารถสรุปได้ว่าเอกสารที่มีรูปแบบเหมาะสมใดๆ จะไม่มีฟิลด์ TOC
ที่ซ้อนกันอย่างสมบูรณ์ภายในฟิลด์ TOC
อื่น
ประการแรก โหนด FieldStart ของแต่ละ TOC
จะถูกรวบรวมและจัดเก็บ จากนั้น TOC
ที่ระบุจะถูกแจกแจง ดังนั้นโหนดทั้งหมดภายในฟิลด์จึงถูกเยี่ยมชมและจัดเก็บ จากนั้นโหนดจะถูกลบออกจากเอกสาร ตัวอย่าง Below code สาธิตวิธีการลบ TOC
ที่ระบุออกจากเอกสาร
แยกสารบัญ
หากคุณต้องการแยกสารบัญจากเอกสาร Word ใดๆ คุณสามารถใช้ตัวอย่างโค้ดต่อไปนี้ได้
doc = aw.Document(docs_base.my_dir + "Table of contents.docx")
for field in doc.range.fields :
if (field.type == aw.fields.FieldType.FIELD_HYPERLINK) :
hyperlink = field.as_field_hyperlink()
if (hyperlink.sub_address != None and hyperlink.sub_address.find("_Toc") == 0) :
tocItem = field.start.get_ancestor(aw.NodeType.PARAGRAPH).as_paragraph()
print(tocItem.to_string(aw.SaveFormat.TEXT).strip())
print("------------------")
bm = doc.range.bookmarks.get_by_name(hyperlink.sub_address)
pointer = bm.bookmark_start.get_ancestor(aw.NodeType.PARAGRAPH).as_paragraph()
print(pointer.to_string(aw.SaveFormat.TEXT))