इंडेक्स और टेबल्स फ़ील्ड्स के साथ काम करना
इंडेक्स और टेबल्स फ़ील्ड्स के साथ काम करना
यह गाइड दिखाता है कि Word के “Index and Tables” फ़ील्ड परिवार के साथ कैसे काम किया जाए — वह फ़ील्ड्स जो सामग्री सूची, एक इंडेक्स, चित्र तालिका, और अधिकार तालिका के पीछे होते हैं। इनमें से प्रत्येक Field उपवर्ग है Aspose.Words.Fields नामस्थान में: FieldToc (सामग्री सूची या चित्र तालिका), FieldIndex (इंडेक्स), FieldXE (इंडेक्स प्रविष्टि), FieldToa (अधिकार तालिका), FieldTA (अधिकार तालिका प्रविष्टि, या उद्धरण), FieldTC (सामग्री सूची प्रविष्टि), और FieldRD (संदर्भित दस्तावेज़, कई फ़ाइलों में संयुक्त इंडेक्स या TOC बनाने के लिए)।
फ़ील्ड बेस क्लास
इस परिवार की प्रत्येक फ़ील्ड क्लास 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") का उपयोग करके यह नियंत्रित करता है कि कौन-से हेडिंग स्तर शामिल हों और परिणाम कैसे स्वरूपित हो — वही स्विचेज़ जो आप UI के माध्यम से TOC सम्मिलित करते समय Word स्वयं लिखता है। एक बार सम्मिलित होने पर, FieldToc.UpdatePageNumbers() मौजूदा प्रविष्टियों के पेज-नंबर भाग को पुनः गणना करता है। FieldToc सीधे TOC की संरचना को नियंत्रित करने वाली प्रॉपर्टीज़ भी उजागर करता है: HeadingLevelRange और EntryLevelRange (कौन-से आउटलाइन स्तर शामिल हैं), EntryIdentifier (TC फ़ील्ड पहचानकर्ता जिसे TOC एकत्र करना चाहिए, विभिन्न FieldTC मार्कर्स से कई TOC बनाने के लिए), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, और — सामग्री सूची के बजाय चित्र तालिका के लिए — TableOfFiguresLabel और CaptionlessTableOfFiguresLabel।
कस्टम सामग्री सूची प्रविष्टियों को चिह्नित करना
हर TOC प्रविष्टि शीर्षक शैली से नहीं आती। FieldTC किसी विशिष्ट स्थान को पैराग्राफ शैली से स्वतंत्र रूप से तालिका-सामग्री प्रविष्टि के रूप में चिन्हित करता है: FieldTC.Text प्रविष्टि का पाठ है, EntryLevel वह रूपरेखा स्तर है जहाँ यह दिखना चाहिए, TypeIdentifier इसे एक FieldToc.EntryIdentifier से जोड़ता है जब एक से अधिक TOC बनाते हैं, और 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 फ़ील्ड को लागू करता है, जो संकलन के समय TOC, सूचकांक या अधिकारियों की तालिका फ़ील्ड को किसी अन्य फ़ाइल से प्रविष्टियाँ शामिल करने के लिए बताता है — FieldRD.FileName संदर्भित दस्तावेज़ है, और IsPathRelative यह नियंत्रित करता है कि वह पथ वर्तमान दस्तावेज़ के सापेक्ष हल किया जाए या नहीं।
सलाह और सर्वोत्तम अभ्यास
- Word की तरह ही TOC स्विच स्ट्रिंग बनाएं (
\o "1-3" \h \z \u) बजाय प्रत्येकFieldTocप्रॉपर्टी को अलग-अलग कॉन्फ़िगर करने के, फिर केवल उन विशिष्ट प्रॉपर्टीज़ को समायोजित करें जिन्हें आपको बाद में बदलने की ज़रूरत है। - सामग्री में बदलाव के बाद
FieldToc.UpdatePageNumbers()(याField.Update()) को कॉल करें ताकि TOC, इंडेक्स, या टेबल ऑफ ऑथॉरिटीज़ वर्तमान दस्तावेज़ को दर्शाए, न कि उस समय के जब इसे डाला गया था, के पुराने परिणामों को। - जब किसी दस्तावेज़ को एक से अधिक TOC की आवश्यकता हो (उदाहरण के लिए मुख्य TOC और अलग फ़िगर तालिका) जो विभिन्न प्रविष्टियों के सेट से निर्मित हों, तब
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 उस पथ के हल होने के तरीके से मेल नहीं खाता | सही FileName और IsPathRelative सेटिंग के साथ एक FieldRD जोड़ें |
FAQ
मैं प्रोग्रामेटिक रूप से टेबल ऑफ कंटेंट्स कैसे सम्मिलित करूँ?
TOC जहाँ दिखना चाहिए, उस स्थान पर DocumentBuilder.InsertTableOfContents(switches) को Word-शैली के स्विच स्ट्रिंग, जैसे "\o \"1-3\" \h \z \u", के साथ कॉल करें।
मैं टेक्स्ट को इंडेक्स प्रविष्टि के रूप में कैसे चिह्नित करूँ?
उस स्थान पर एक FieldXE फ़ील्ड डालें (उदाहरण के लिए DocumentBuilder.InsertField के माध्यम से) और उसकी Text प्रॉपर्टी को प्रविष्टि पाठ पर सेट करें; FieldIndex दस्तावेज़ में सभी FieldXE मार्करों को इकट्ठा करके इंडेक्स परिणाम बनाता है।
FieldTC और हेडिंग-आधारित TOC प्रविष्टियों में क्या अंतर है?
Word का डिफ़ॉल्ट TOC व्यवहार हेडिंग शैलियों का उपयोग करके पैराग्राफ़ से प्रविष्टियों को एकत्र करता है। FieldTC आपको पैराग्राफ़ शैली से स्वतंत्र रूप से किसी भी स्थान को TOC प्रविष्टि के रूप में चिह्नित करने की अनुमति देता है, जिसे FieldToc मिलते-जुलते EntryIdentifier/TypeIdentifier मानों के माध्यम से शामिल कर सकता है।
दस्तावेज़ में परिवर्तन के बाद मैं TOC या इंडेक्स को कैसे रिफ्रेश करूँ?
विशिष्ट फ़ील्ड पर Update() को कॉल करें (उदाहरण के लिए FieldToc.Update(), या केवल पृष्ठ संख्याओं के लिए FieldToc.UpdatePageNumbers()), या दस्तावेज़ के सभी फ़ील्ड को रिफ्रेश करने के लिए Document.UpdateFields() का उपयोग करें।
क्या मैं कई दस्तावेज़ों में TOC या इंडेक्स को संकलित कर सकता हूँ?
हाँ — प्रत्येक अतिरिक्त दस्तावेज़ की ओर संकेत करने वाला FieldRD फ़ील्ड FileName के माध्यम से डालें; संकलन फ़ील्ड (FieldToc, FieldIndex, या FieldToa) अपडेट होने पर संदर्भित दस्तावेज़ों से प्रविष्टियों को शामिल करता है।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
Field | सभी फ़ील्ड प्रकारों के लिए बेस क्लास, जिसमें Start/Separator/End, Type, Update() शामिल हैं |
DocumentBuilder.InsertTableOfContents(switches) | Word-शैली के TOC स्विच का उपयोग करके एक FieldToc डालें |
FieldToc | TOC फ़ील्ड को लागू करता है (सामग्री-सूची या चित्र-सूची) |
FieldTC | एक विशिष्ट स्थान पर कस्टम सामग्री-सूची प्रविष्टि को चिह्नित करता है |
FieldIndex | INDEX फ़ील्ड को लागू करता है, FieldXE मार्कर को संकलित करता है |
FieldXE | एक स्थान को इंडेक्स प्रविष्टि के रूप में चिह्नित करता है |
FieldToa | table-of-authorities फ़ील्ड को लागू करता है, FieldTA मार्कर को संकलित करता है |
FieldTA | table of authorities के लिए एक उद्धरण को चिह्नित करता है |
FieldRD | जब TOC, इंडेक्स या टेबल ऑफ अथॉरिटीज़ बनाते हैं, तो दूसरे दस्तावेज़ की सामग्री को संदर्भित करता है |
FieldIndexFormat | Word के बिल्ट-इन इंडेक्स विज़ुअल स्टाइल्स का Enum |