---
title: "การทำงานกับสารบัญ"
---

บ่อยครั้งที่คุณจะทำงานกับเอกสารที่มีสารบัญ (TOC) การใช้ Aspose.Words คุณสามารถแทรกสารบัญของคุณเองหรือสร้างสารบัญที่มีอยู่ในเอกสารขึ้นมาใหม่ทั้งหมดโดยใช้โค้ดเพียงไม่กี่บรรทัด บทความนี้สรุปวิธีการทำงานกับเขตข้อมูลสารบัญและสาธิต:

- วิธีแทรก `TOC` ใหม่
- อัปเดต TOC ใหม่หรือที่มีอยู่ในเอกสาร
- ระบุสวิตช์เพื่อควบคุมการจัดรูปแบบและโครงสร้างโดยรวมของ TOC
- วิธีปรับเปลี่ยนสไตล์และรูปลักษณ์ของสารบัญ
- วิธีลบฟิลด์ `TOC` ทั้งหมดพร้อมกับรายการทั้งหมดในเอกสาร

## แทรกสารบัญโดยทางโปรแกรม

คุณสามารถแทรกฟิลด์ `TOC` (สารบัญ) ลงในเอกสารที่ตำแหน่งปัจจุบันได้โดยการเรียกเมธอด [DocumentBuilder.insert_table_of_contents](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/insert_table_of_contents/)

สารบัญในเอกสาร Word สามารถสร้างได้หลายวิธีและจัดรูปแบบโดยใช้ตัวเลือกที่หลากหลาย ฟิลด์จะสลับที่คุณส่งไปยังวิธีการควบคุมวิธีการสร้างตารางและแสดงในเอกสารของคุณ

สวิตช์เริ่มต้นที่ใช้ใน `TOC` ที่แทรกใน Microsoft Word คือ **"\o "1-3 \เอช \z \u"** คำอธิบายของสวิตช์เหล่านี้รวมถึงรายการสวิตช์ที่รองรับมีอยู่ในบทความถัดไป คุณสามารถใช้คำแนะนำนั้นเพื่อรับสวิตช์ที่ถูกต้อง หรือหากคุณมีเอกสารที่มี `TOC` ที่คล้ายกันที่คุณต้องการอยู่แล้ว คุณสามารถแสดงโค้ดฟิลด์ (*ALT+F9*) และคัดลอกสวิตช์จากฟิลด์ได้โดยตรง

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแทรกฟิลด์สารบัญลงในเอกสาร:

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Working with Document-add_content_using_document_builder-InsertTableOfContents.py" >}}

รหัสนี้แสดงให้เห็นถึงสารบัญใหม่ที่ถูกแทรกลงในเอกสารเปล่า จากนั้นคลาส [DocumentBuilder](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/) จะใช้เพื่อแทรกการจัดรูปแบบเนื้อหาตัวอย่างด้วยสไตล์ส่วนหัวที่เหมาะสม ซึ่งใช้เพื่อทำเครื่องหมายเนื้อหาที่จะรวมไว้ใน TOC บรรทัดถัดไปเติมข้อมูล `TOC` โดยการอัปเดตฟิลด์และเค้าโครงหน้าของเอกสาร

```

หากไม่มีวิธีการที่ใช้ในตัวอย่าง เมื่อคุณเปิดเอกสารเอาต์พุต คุณจะพบช่อง `TOC` แต่ไม่มีเนื้อหาที่มองเห็นได้ เนื่องจากมีการแทรกช่อง `TOC` แล้ว แต่ยังไม่ได้เติมข้อมูลจนกว่าจะมีการอัปเดตในเอกสาร ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้จะกล่าวถึงในหัวข้อถัดไป

```

## อัพเดตสารบัญ

Aspose.Words ช่วยให้คุณสามารถอัปเดต `TOC` ได้อย่างสมบูรณ์ด้วยโค้ดเพียงไม่กี่บรรทัด ซึ่งสามารถทำได้เพื่อเติมข้อมูล `TOC` ที่แทรกใหม่หรือเพื่ออัปเดต `TOC` ที่มีอยู่หลังจากทำการเปลี่ยนแปลงเอกสารแล้ว ต้องใช้สองวิธีต่อไปนี้เพื่ออัปเดตฟิลด์ `TOC` ในเอกสาร:

1. [Document.update_fields](https://reference.aspose.com/words/python-net/aspose.words/document/update_fields/)
1. [Document.update_page_layout](https://reference.aspose.com/words/python-net/aspose.words/document/update_page_layout/)

โปรดทราบว่าจำเป็นต้องเรียกใช้วิธีการอัพเดตทั้งสองนี้ตามลำดับ หากกลับรายการสารบัญจะถูกเติมแต่จะไม่มีหมายเลขหน้าแสดง สามารถอัปเดต TOC ที่แตกต่างกันจำนวนเท่าใดก็ได้ วิธีการเหล่านี้จะอัปเดต TOC ทั้งหมดที่พบในเอกสารโดยอัตโนมัติ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างฟิลด์ `TOC` ใหม่ในเอกสารโดยเรียกใช้การอัปเดตฟิลด์:

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Working with Document-add_content_using_document_builder-UpdateFields.py" >}}

การเรียก [Document.update_fields](https://reference.aspose.com/words/python-net/aspose.words/document/update_fields/) ครั้งแรกจะสร้าง `TOC` รายการข้อความทั้งหมดจะถูกเติม และ `TOC` จะปรากฏขึ้นเกือบเสร็จสมบูรณ์ สิ่งเดียวที่ขาดหายไปคือหมายเลขหน้าซึ่งตอนนี้แสดงด้วย "?" การเรียก [Document.update_page_layout](https://reference.aspose.com/words/python-net/aspose.words/document/update_page_layout/) ครั้งที่สองจะสร้างเค้าโครงของเอกสารในหน่วยความจำ จำเป็นต้องดำเนินการนี้เพื่อรวบรวมหมายเลขหน้าของรายการ หมายเลขหน้าที่ถูกต้องซึ่งคำนวณจากการโทรนี้จะถูกแทรกลงใน TOC

## ใช้สวิตช์เพื่อควบคุมพฤติกรรมของสารบัญ

เช่นเดียวกับฟิลด์อื่นๆ ฟิลด์ `TOC` สามารถยอมรับสวิตช์ที่กำหนดภายในโค้ดฟิลด์ที่ควบคุมวิธีการสร้างสารบัญ สวิตช์บางตัวใช้เพื่อควบคุมว่ารายการใดบ้างที่รวมอยู่และระดับใด ในขณะที่สวิตช์บางตัวใช้เพื่อควบคุมลักษณะที่ปรากฏของ TOC สวิตช์สามารถรวมเข้าด้วยกันเพื่อให้สามารถผลิตสารบัญที่ซับซ้อนได้

![working-with-table-of-contents-aspose-words-net](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-1.png)

ตามค่าเริ่มต้น สวิตช์ด้านบนเหล่านี้จะรวมไว้เมื่อแทรก `TOC` เริ่มต้นในเอกสาร `TOC` ที่ไม่มีสวิตช์จะรวมเนื้อหาจากรูปแบบส่วนหัวที่มีอยู่แล้วภายใน (เหมือนกับว่าสวิตช์ &#92;O ถูกตั้งค่าไว้) สวิตช์ `TOC` ที่พร้อมใช้งานที่รองรับโดย Aspose.Words มีดังต่อไปนี้และมีการอธิบายการใช้งานโดยละเอียด สามารถแบ่งออกเป็นส่วนต่างๆ ตามประเภทได้ สวิตช์ในส่วนแรกจะกำหนดเนื้อหาที่จะรวมไว้ใน `TOC` และสวิตช์ในส่วนที่สองจะควบคุมลักษณะที่ปรากฏของ TOC หากไม่มีสวิตช์แสดงอยู่ที่นี่ แสดงว่าสวิตช์ไม่รองรับในขณะนี้ สวิตช์ทั้งหมดจะได้รับการสนับสนุนในเวอร์ชันต่อๆ ไป เรากำลังเพิ่มการสนับสนุนเพิ่มเติมในทุกรุ่น

### สวิตช์ทำเครื่องหมายรายการ

|  สวิตช์ | คำอธิบาย |
|  :-  |  :-  |
| **Heading Styles***(&#92;O สวิตช์)* | <p>สวิตช์นี้กำหนดว่า `TOC` ควรถูกสร้างขึ้นจากสไตล์หัวเรื่องที่มีอยู่แล้วภายใน ใน Microsoft Word สิ่งเหล่านี้ถูกกำหนดโดยหัวข้อ 1 - หัวข้อ 9 ใน Aspose.Words สไตล์เหล่านี้แสดงโดยการแจงนับ StyleIdentifier ที่สอดคล้องกัน การแจงนับนี้แสดงถึงตัวระบุโลแคลอิสระของสไตล์ เช่น `StyleIdentifier.Heading1` แสดงถึงสไตล์ของหัวข้อที่ 1 เมื่อใช้สิ่งนี้ การจัดรูปแบบและคุณสมบัติของสไตล์สามารถดึงข้อมูลจากคอลเลกชั่นสไตล์ของเอกสาร คลาส Style ที่สอดคล้องกันสามารถดึงข้อมูลจากคอลเลกชัน `Document.Styles` ได้โดยใช้คุณสมบัติที่จัดทำดัชนีของชนิด StyleIdentifier</p>

<p>![working-with-table-of-contents-styles](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-2.png)</p>

<p>เนื้อหาใดๆ ที่จัดรูปแบบด้วยสไตล์เหล่านี้จะรวมอยู่ในสารบัญ ระดับของส่วนหัวจะกำหนดระดับลำดับชั้นที่สอดคล้องกันของรายการใน TOC ตัวอย่างเช่น ย่อหน้าที่มีลักษณะหัวเรื่อง 1 จะถือเป็นระดับแรกใน `TOC` ในขณะที่ย่อหน้าที่มีหัวเรื่อง 2 จะถือเป็นระดับถัดไปในลำดับชั้นและอื่นๆ</p> |
| **Outline Levels***(&#92;U สวิตช์)* | <p>แต่ละย่อหน้าสามารถกำหนดระดับเค้าร่างภายใต้ตัวเลือกย่อหน้า</p>

<p>![working-with-table-of-contents-paragraph](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-3.png)</p>

<p>การตั้งค่านี้กำหนดระดับที่ย่อหน้านี้ควรได้รับการปฏิบัติในลำดับชั้นของเอกสาร นี่เป็นแนวทางปฏิบัติที่ใช้กันทั่วไปซึ่งใช้ในการจัดโครงสร้างเค้าโครงของเอกสารได้อย่างง่ายดาย สามารถดูลำดับชั้นนี้ได้โดยเปลี่ยนเป็นมุมมองโครงร่างใน Microsoft Word เช่นเดียวกับสไตล์ส่วนหัว สามารถมีระดับเค้าร่างได้ 1 - 9 ระดับ นอกเหนือจากระดับ "ข้อความเนื้อหา" เค้าร่างระดับ 1 - 9 จะปรากฏใน `TOC` ในระดับที่สอดคล้องกันของลำดับชั้นเนื้อหาใดๆ ที่มีระดับเค้าร่างที่ตั้งค่าในรูปแบบย่อหน้าหรือบนย่อหน้าโดยตรงจะรวมอยู่ใน TOC ใน Aspose.Words ระดับเค้าร่างจะแสดงด้วยคุณสมบัติ `ParagraphFormat.OutlineLevel` ของโหนดย่อหน้า ระดับเค้าร่างของลักษณะย่อหน้าจะแสดงในลักษณะเดียวกันโดยคุณสมบัติ `Style.ParagraphFormat`</p>

<p>```</p>

<p>โปรดทราบว่าสไตล์ส่วนหัวที่มีอยู่แล้วภายใน เช่น หัวเรื่อง 1 มีการตั้งค่าบังคับระดับเค้าร่างในการตั้งค่าสไตล์</p>

<p>```</p> |
| **Custom Styles***(&#92;T สวิตช์)* | <p>สวิตช์นี้จะอนุญาตให้ใช้สไตล์ที่กำหนดเองเมื่อรวบรวมรายการที่จะใช้ใน TOC ซึ่งมักจะใช้ร่วมกับสวิตช์ &#92;O เพื่อรวมสไตล์ที่กำหนดเองพร้อมกับสไตล์หัวเรื่องที่มีอยู่แล้วภายใน TOCพารามิเตอร์ของสวิตช์ควรอยู่ภายในเครื่องหมายคำพูด สามารถใส่สไตล์ที่กำหนดเองได้หลายแบบ โดยสำหรับแต่ละสไตล์ ควรระบุชื่อ ตามด้วยเครื่องหมายจุลภาค ตามด้วยระดับที่สไตล์ควรปรากฏใน `TOC` สไตล์เพิ่มเติมยังคั่นด้วยเครื่องหมายจุลภาคเช่นกันเช่น</p>

<p>```csharp{ TOC \o "1-3" \t "CustomHeading1, 1,   CustomHeading2, 2"}```</p>

<p>จะใช้เนื้อหาที่จัดสไตล์ด้วย CustomHeading1 เป็นเนื้อหาระดับ 1 ใน `TOC` และ CustomHeading2 เป็นระดับ 2</p> |
| **Use TC Fields***(สวิตช์ &#92;F และ &#92;L)* | <p>ในเวอร์ชันเก่าของ Microsoft Word วิธีเดียวที่จะสร้าง `TOC` คือการใช้ฟิลด์ TC ฟิลด์เหล่านี้จะถูกแทรกที่ซ่อนอยู่ในเอกสาร แม้ว่ารหัสฟิลด์จะแสดงก็ตาม รวมถึงข้อความที่ควรแสดงในรายการและ `TOC` ถูกสร้างขึ้นจากข้อความเหล่านั้น ขณะนี้ฟังก์ชันการทำงานนี้ไม่ได้ใช้บ่อยนัก แต่อาจยังมีประโยชน์ในบางโอกาสเพื่อรวมรายการใน `TOC` ซึ่งไม่ได้เยื้องเพื่อให้มองเห็นได้ในเอกสารเมื่อแทรกฟิลด์เหล่านี้จะปรากฏถูกซ่อนไว้แม้ว่าจะมีการแสดงโค้ดฟิลด์ก็ตาม ไม่สามารถมองเห็นได้โดยไม่แสดงเนื้อหาที่ซ่อนอยู่ หากต้องการดูฟิลด์เหล่านี้ ต้องเลือกแสดงการจัดรูปแบบย่อหน้า</p>

<p>![working-with-table-of-contents-paragraph-settings](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-4.png)</p><p> ฟิลด์เหล่านี้สามารถแทรกลงในเอกสารในตำแหน่งใดก็ได้เช่นเดียวกับฟิลด์อื่นๆ และแสดงด้วยการแจงนับ `FieldType.FieldTOCEntry`สวิตช์ &#92;F ใน `TOC` ใช้เพื่อระบุว่าควรใช้เขตข้อมูล TC เป็นรายการ สวิตช์เองโดยไม่มีตัวระบุเพิ่มเติมหมายความว่าช่อง TC ใดๆ ในเอกสารจะถูกรวมไว้ด้วย พารามิเตอร์พิเศษใดๆ ซึ่งมักจะเป็นตัวอักษรตัวเดียวจะกำหนดว่าเฉพาะฟิลด์ TC ซึ่งมีสวิตช์ \f ที่ตรงกันเท่านั้นที่จะรวมอยู่ใน TOC เช่น *</p>

<p>```csharp{ TOC \f t }```</p>

<p>จะรวมเฉพาะช่อง TC เช่น</p>

<p>```csharp{ TC \f t }```</p>

<p>ฟิลด์ `TOC` ยังมีสวิตช์ที่เกี่ยวข้อง สวิตช์ &#92;L ระบุว่ารวมเฉพาะฟิลด์ TC ที่มีระดับภายในช่วงที่ระบุเท่านั้น</p>

<p>![todo:image_alt_text](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-5.png)</p>

<p>ฟิลด์ `TC` เองก็สามารถตั้งค่าสวิตช์ได้หลายตัวเช่นกัน เหล่านี้คือ:</p>

<p>- *&#92;F - อธิบายไว้ข้างต้น*</p>

<p>- *&#92;L - กำหนดระดับใน `TOC` ฟิลด์ TC นี้จะปรากฏใน `TOC` ซึ่งใช้สวิตช์เดียวกันนี้จะรวมฟิลด์ TC นี้เท่านั้นหากอยู่ภายในช่วงที่ระบุ*</p>

<p>- _&#92;N - หมายเลขหน้าสำหรับรายการ `TOC` นี้จะไม่แสดง โค้ดตัวอย่างของวิธีการแทรกฟิลด์ TC สามารถพบได้ในส่วนถัดไป</p> |

### ลักษณะที่ปรากฏที่เกี่ยวข้องกับสวิตช์

|  สวิตช์ | คำอธิบาย |
|  :-  |  :-  |
| **Omit Page Numbers***(&#92;N สวิตช์)* | <p>สวิตช์นี้ใช้เพื่อซ่อนหมายเลขหน้าสำหรับ TOC บางระดับ ตัวอย่างเช่นคุณสามารถกำหนดได้</p>

<p>```csharp{TOC \o "1-4" \n "3-4" }```</p>

<p>และหมายเลขหน้าในรายการระดับ 3 และ 4 จะถูกซ่อนไว้พร้อมกับจุดตัวนำ (ถ้ามี) หากต้องการระบุเพียงระดับเดียว ควรใช้ช่วง เช่น "1-1" จะยกเว้นหมายเลขหน้าสำหรับระดับแรกเท่านั้นการไม่ระบุช่วงระดับจะละเว้นหมายเลขหน้าสำหรับทุกระดับใน TOC การตั้งค่านี้มีประโยชน์เมื่อส่งออกเอกสารเป็น HTML หรือรูปแบบที่คล้ายกัน เนื่องจากรูปแบบที่ใช้ HTML ไม่มีแนวคิดเกี่ยวกับหน้าใดๆ ดังนั้นจึงไม่จำเป็นต้องใส่หมายเลขหน้า</p>

<p>![todo:image_alt_text](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-6.png)</p> |
| **Insert As Hyperlinks***(&#92;H สวิตช์)* | <p>สวิตช์นี้ระบุว่ารายการ `TOC` จะถูกแทรกเป็นไฮเปอร์ลิงก์ เมื่อดูเอกสารใน Microsoft Word รายการเหล่านี้จะยังคงปรากฏเป็นข้อความปกติภายใน `TOC` แต่มีไฮเปอร์ลิงก์ จึงสามารถใช้เพื่อนำทางไปยังตำแหน่งของรายการต้นฉบับในเอกสารได้โดยใช้ *Ctrl + คลิกซ้าย* ใน Microsoft Word เมื่อสิ่งนี้ รวมสวิตช์แล้วลิงก์เหล่านี้จะถูกเก็บรักษาไว้ในรูปแบบอื่นด้วย ตัวอย่างเช่นในรูปแบบที่ใช้ HTML รวมถึง EPUB และรูปแบบที่เรนเดอร์ เช่น PDF และ XPS สิ่งเหล่านี้จะถูกส่งออกเป็นลิงก์ที่ใช้งานได้หากไม่มีสวิตช์นี้ ให้ตั้งค่า `TOC` ในเอาต์พุตเหล่านี้ทั้งหมดจะถูกส่งออกเป็นข้อความธรรมดา และจะไม่แสดงลักษณะการทำงานนี้ หากเปิดเอกสารใน MS Word ข้อความของรายการจะไม่สามารถคลิกได้ด้วยวิธีนี้ แต่ยังคงสามารถใช้หมายเลขหน้าเพื่อนำทางไปยังรายการต้นฉบับได้</p>

<p>![working-with-table-of-contents-titles](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-7.png)</p> |
| **Set Separator Character***(&#92;P สวิตช์)* | <p>สวิตช์นี้ช่วยให้เนื้อหาที่แยกชื่อเรื่องของรายการและหมายเลขหน้าเปลี่ยนแปลงได้ง่ายใน TOC ควรระบุตัวคั่นที่จะใช้หลังสวิตช์นี้และอยู่ในเครื่องหมายคำพูดตรงกันข้ามกับสิ่งที่บันทึกไว้ในเอกสารประกอบของ Office คุณสามารถใช้อักขระได้เพียงตัวเดียวแทนอักขระสูงสุดห้าตัว สิ่งนี้ใช้ได้กับทั้ง MS Word และ Aspose.Wordsไม่แนะนำให้ใช้สวิตช์นี้ เนื่องจากไม่สามารถควบคุมสิ่งที่ใช้ในการแยกรายการและหมายเลขหน้าใน TOC ได้มากนัก ขอแนะนำให้แก้ไขสไตล์ `TOC` ที่เหมาะสมแทน เช่น `StyleIdentifier.TOC1` จากนั้นแก้ไขสไตล์ผู้นำด้วยการเข้าถึงสมาชิกแบบอักษรเฉพาะ เป็นต้น รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำเช่นนี้ สามารถพบได้ในบทความ</p>

<p>![working-with-table-of-contents-toc](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-8.png)</p> |
| **Preserve Tab Entries***(&#92;W สวิตช์)* | <p>การใช้สวิตช์นี้จะระบุว่ารายการใดๆ ที่มีอักขระแท็บ เช่น ส่วนหัวที่มีแท็บที่ท้ายบรรทัด จะถูกเก็บไว้เป็นอักขระแท็บที่เหมาะสมเมื่อเติม TOC ซึ่งหมายความว่าฟังก์ชันของอักขระแท็บจะปรากฏใน `TOC` และสามารถใช้เพื่อจัดรูปแบบรายการได้ ตัวอย่างเช่น บางรายการอาจใช้แท็บหยุดและอักขระแท็บเพื่อเว้นระยะห่างข้อความให้เท่ากัน ตราบใดที่ระดับ `TOC` ที่เกี่ยวข้องกำหนดแท็บหยุดที่เทียบเท่า รายการ `TOC` ที่สร้างขึ้นจะปรากฏขึ้นโดยมีระยะห่างใกล้เคียงกันในสถานการณ์เดียวกัน หากไม่ได้กำหนดสวิตช์นี้ไว้ อักขระแท็บจะถูกแปลงเป็นช่องว่างที่เทียบเท่ากับแท็บที่ไม่ทำงาน ผลลัพธ์จะไม่ปรากฏตามที่คาดไว้</p>

<p>![working-with-table-of-contents-aspose](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-9.png)</p> |
| **Preserve New Line Entries***(&#92;X สวิตช์)* | <p>เช่นเดียวกับสวิตช์ด้านบน สวิตช์นี้ระบุว่าส่วนหัวที่ขยายหลายบรรทัด (โดยใช้อักขระบรรทัดใหม่ไม่แยกย่อหน้า) จะถูกรักษาไว้เหมือนที่อยู่ใน TOC ที่สร้างขึ้น ตัวอย่างเช่น ส่วนหัวที่จะกระจายไปตามบรรทัดต่างๆ สามารถใช้อักขระบรรทัดใหม่ (Ctrl + Enter หรือ `ControlChar.LineBreak`) เพื่อแยกเนื้อหาไปตามบรรทัดต่างๆ เมื่อระบุสวิตช์นี้ รายการใน `TOC` จะรักษาอักขระบรรทัดใหม่เหล่านี้ไว้ดังที่แสดงด้านล่างในสถานการณ์นี้ ถ้าไม่ได้กำหนดสวิตช์ไว้ อักขระบรรทัดใหม่จะถูกแปลงเป็นช่องว่างเดียว</p>

<p>![working-with-table-of-contents-aspose-words](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-10.png)</p> |

## แทรกฟิลด์ TC

คุณสามารถแทรกฟิลด์ TC ใหม่ที่ตำแหน่งปัจจุบันของ [DocumentBuilder](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/) ได้โดยการเรียกเมธอด [DocumentBuilder.insert_field](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/insert_field/) และระบุชื่อฟิลด์เป็น "TC" พร้อมกับสวิตช์ใดๆ ที่จำเป็น ตัวอย่างด้านล่างแสดงวิธีแทรกช่อง `TC` ลงในเอกสารโดยใช้ [DocumentBuilder](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/)

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Working with Document-add_content_using_document_builder-InsertTCField.py" >}}

## ปรับเปลี่ยนสารบัญ

การจัดรูปแบบของรายการใน `TOC` ไม่ได้ใช้สไตล์ดั้งเดิมของรายการที่ทำเครื่องหมายไว้ แต่แต่ละระดับจะได้รับการจัดรูปแบบโดยใช้สไตล์ `TOC` ที่เทียบเท่ากัน ตัวอย่างเช่น ระดับแรกใน `TOC` ถูกจัดรูปแบบด้วยสไตล์ **TOC1** ระดับที่สองถูกจัดรูปแบบด้วยสไตล์ **TOC2** และอื่นๆ ซึ่งหมายความว่าหากต้องการเปลี่ยนรูปลักษณ์ของ `TOC` จะต้องแก้ไขสไตล์เหล่านี้ ใน Aspose.Words สไตล์เหล่านี้จะแสดงโดย [StyleIdentifier.TOC1](https://reference.aspose.com/words/python-net/aspose.words/styleidentifier/#toc1) อิสระของโลแคลไปจนถึง [StyleIdentifier.TOC9](https://reference.aspose.com/words/python-net/aspose.words/styleidentifier/#toc9) และสามารถดึงข้อมูลจากคอลเลกชัน [Document.styles](https://reference.aspose.com/words/python-net/aspose.words/documentbase/styles/) โดยใช้ตัวระบุเหล่านี้

เมื่อดึงข้อมูลสไตล์ที่เหมาะสมของเอกสารแล้ว การจัดรูปแบบสำหรับสไตล์นี้จะสามารถแก้ไขได้ การเปลี่ยนแปลงใดๆ ที่เกิดขึ้นกับสไตล์เหล่านี้จะมีผลกับ TOC ในเอกสารโดยอัตโนมัติ ตัวอย่างด้านล่างนี้จะเปลี่ยนคุณสมบัติการจัดรูปแบบที่ใช้ในสไตล์ `TOC` ระดับแรก

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Contents Management-working_with_table_of_content-ChangeStyleOfTOCLevel.py" >}}

นอกจากนี้ ยังมีประโยชน์ที่จะต้องทราบว่าการจัดรูปแบบโดยตรงใดๆ ของย่อหน้า (กำหนดไว้ในย่อหน้านั้นและไม่ใช่ในรูปแบบ) ที่ทำเครื่องหมายให้รวม `TOC` จะถูกคัดลอกไปไว้ในรายการใน TOC ตัวอย่างเช่น หากใช้สไตล์หัวเรื่อง 1 เพื่อทำเครื่องหมายเนื้อหาสำหรับ `TOC` และสไตล์นี้มีการจัดรูปแบบตัวหนา ในขณะที่ย่อหน้าก็มีการใช้การจัดรูปแบบตัวเอียงโดยตรงด้วย รายการ `TOC` ที่ได้จะไม่เป็นตัวหนาเนื่องจากเป็นส่วนหนึ่งของการจัดรูปแบบสไตล์ แต่จะเป็นตัวเอียงเนื่องจากมีการจัดรูปแบบโดยตรงในย่อหน้า

คุณยังสามารถควบคุมการจัดรูปแบบของตัวคั่นที่ใช้ระหว่างแต่ละรายการและหมายเลขหน้าได้ ตามค่าเริ่มต้น นี่คือเส้นประซึ่งกระจายไปทั่วหมายเลขหน้าโดยใช้อักขระแท็บและแท็บหยุดด้านขวาเรียงชิดกับระยะขอบด้านขวา

การใช้คลาส [Style](https://reference.aspose.com/words/python-net/aspose.words/style/) ที่ดึงมาสำหรับระดับ `TOC` เฉพาะที่คุณต้องการแก้ไข คุณยังสามารถแก้ไขลักษณะที่ปรากฏของสิ่งเหล่านี้ในเอกสารได้อีกด้วย หากต้องการเปลี่ยนลักษณะที่ปรากฏก่อนอื่น จะต้องเรียก [Style.paragraph_format](https://reference.aspose.com/words/python-net/aspose.words/style/paragraph_format/) เพื่อดึงการจัดรูปแบบย่อหน้าสำหรับสไตล์ จากนี้ คุณสามารถดึงข้อมูลแท็บหยุดได้โดยการเรียก [ParagraphFormat.tab_stops](https://reference.aspose.com/words/python-net/aspose.words/paragraphformat/tab_stops/) และแก้ไขแท็บหยุดที่เหมาะสม การใช้เทคนิคเดียวกันนี้ทำให้สามารถย้ายหรือลบแท็บทั้งหมดพร้อมกันได้ ตัวอย่างด้านล่างแสดงวิธีการแก้ไขตำแหน่งของแท็บหยุดด้านขวาในย่อหน้าที่เกี่ยวข้องกับ `TOC`

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Contents Management-working_with_table_of_content-ChangeTOCTabStops.py" >}}

## ลบสารบัญออกจากเอกสาร

สารบัญสามารถลบออกจากเอกสารได้โดยการลบโหนดทั้งหมดที่พบระหว่างโหนด [FieldStart](https://reference.aspose.com/words/python-net/aspose.words.fields/fieldstart/) และ [FieldEnd](https://reference.aspose.com/words/python-net/aspose.words.fields/fieldend/) ของฟิลด์ `TOC` รหัสด้านล่างแสดงให้เห็นถึงสิ่งนี้ การลบฟิลด์ `TOC` นั้นง่ายกว่าฟิลด์ปกติ เนื่องจากเราไม่ได้ติดตามฟิลด์ที่ซ้อนกัน แต่เราตรวจสอบว่าโหนด [FieldEnd](https://reference.aspose.com/words/python-net/aspose.words.fields/fieldend/) เป็นประเภท [FieldType.FIELD_TOC](https://reference.aspose.com/words/python-net/aspose.words.fields/fieldtype/#field_toc) ซึ่งหมายความว่าเราพบจุดสิ้นสุดของ TOC ปัจจุบันแล้ว เทคนิคนี้สามารถใช้ได้ในกรณีนี้โดยไม่ต้องกังวลเกี่ยวกับฟิลด์ที่ซ้อนกัน เนื่องจากเราสามารถสรุปได้ว่าเอกสารที่มีรูปแบบเหมาะสมใดๆ จะไม่มีฟิลด์ `TOC` ที่ซ้อนกันอย่างสมบูรณ์ภายในฟิลด์ `TOC` อื่น

ประการแรก โหนด [FieldStart](https://reference.aspose.com/words/python-net/aspose.words.fields/fieldstart/) ของแต่ละ `TOC` จะถูกรวบรวมและจัดเก็บ จากนั้น `TOC` ที่ระบุจะถูกแจกแจง ดังนั้นโหนดทั้งหมดภายในฟิลด์จึงถูกเยี่ยมชมและจัดเก็บ จากนั้นโหนดจะถูกลบออกจากเอกสาร ตัวอย่าง Below code สาธิตวิธีการลบ `TOC` ที่ระบุออกจากเอกสาร

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Contents Management-remove_content-RemoveTOCFromDocument.py" >}}

## แยกสารบัญ

หากคุณต้องการแยกสารบัญจากเอกสาร Word ใดๆ คุณสามารถใช้ตัวอย่างโค้ดต่อไปนี้ได้

```python
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))
```
