Làm việc với các trường Index và Tables

Làm việc với các trường Index và Tables

Làm việc với các trường Chỉ mục và Bảng

Hướng dẫn này cho thấy cách làm việc với họ trường “Index and Tables” của Word — các trường đứng sau mục lục, chỉ mục, bảng hình ảnh và bảng trích dẫn. Mỗi trường trong số này là một lớp con Field trong không gian tên Aspose.Words.Fields: FieldToc (mục lục hoặc hình ảnh), FieldIndex (chỉ mục), FieldXE (mục nhập chỉ mục), FieldToa (bảng trích dẫn), FieldTA (mục nhập bảng trích dẫn, hoặc trích dẫn), FieldTC (mục nhập mục lục), và FieldRD (tài liệu được tham chiếu, để xây dựng một chỉ mục hoặc mục lục tổng hợp qua nhiều tệp).


Lớp cơ sở của trường

Mỗi lớp trường trong họ này kế thừa từ Field, lớp này cung cấp Start, Separator, và End (các nút FieldStart, FieldSeparator, và FieldEnd bao quanh trường trong luồng chạy), Type (một giá trị FieldType — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry, hoặc FieldRefDoc cho họ này), Result/DisplayResult (văn bản hiện đang được tính toán của trường), IsLocked và IsDirty, và các phương thức GetFieldCode(), Update(), Unlink(), và Remove(). Update() tính lại kết quả của trường; đối với một mục lục, điều này có nghĩa là xây dựng lại danh sách mục từ các tiêu đề của tài liệu hoặc các dấu FieldTC.

Chèn mục lục

DocumentBuilder.InsertTableOfContents(switches) chèn một FieldToc tại vị trí hiện tại của builder, sử dụng một chuỗi chuyển đổi trường Word (ví dụ "\o \"1-3\" \h \z \u") để điều khiển các mức tiêu đề nào được bao gồm và cách kết quả được định dạng — cùng các chuyển đổi mà Word tự viết khi bạn chèn một TOC qua giao diện người dùng. Khi đã chèn, FieldToc.UpdatePageNumbers() tính lại phần số trang của các mục hiện có. FieldToc cũng cung cấp các thuộc tính điều khiển cấu trúc của TOC một cách trực tiếp: HeadingLevelRange và EntryLevelRange (các mức đề cương nào được bao gồm), EntryIdentifier (định danh trường TC mà TOC nên thu thập, để xây dựng nhiều TOC từ các dấu FieldTC khác nhau), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, và — đối với một bảng hình ảnh thay vì một mục lục — TableOfFiguresLabel và CaptionlessTableOfFiguresLabel.

Đánh dấu các mục mục lục tùy chỉnh

Không phải mọi mục trong mục lục (TOC) đều xuất phát từ kiểu tiêu đề. FieldTC đánh dấu một vị trí cụ thể như một mục mục lục độc lập với kiểu đoạn văn: FieldTC.Text là văn bản mục, EntryLevel là cấp độ đề cương mà nó sẽ hiển thị, TypeIdentifier liên kết nó với một FieldToc.EntryIdentifier khi tạo nhiều mục lục, và OmitPageNumber loại bỏ số trang cho mục đó.

Xây dựng chỉ mục

FieldIndex thực hiện trường INDEX, dùng để tổng hợp các dấu FieldXE (mục chỉ mục) trong tài liệu thành một chỉ mục theo thứ tự chữ cái. FieldXE.Text là văn bản mục, EntryType nhóm các mục thành các cấp phụ bằng cú pháp phân tách bằng dấu hai chấm, PageRangeBookmarkName đánh dấu một dấu trang mà phạm vi của nó trở thành một dải trang trong chỉ mục thay vì một số trang đơn lẻ, và IsBold/IsItalic định dạng tham chiếu trang kết quả. Ở phía FieldIndex, Heading chèn các dấu phân cách tiêu đề chữ cái (A, B, C…), LetterRange giới hạn chỉ mục trong một phần của bảng chữ cái, RunSubentriesOnSameLine kiểm soát bố cục mục phụ, và PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator điều chỉnh dấu câu giữa mục và tham chiếu trang của nó. FieldIndexFormat liệt kê riêng các kiểu hiển thị chỉ mục tích hợp sẵn của Word (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).

Bảng các nguồn pháp lý

FieldToa và FieldTA là các nguồn pháp lý tương đương với FieldIndex/FieldXE: FieldTA đánh dấu một trích dẫn trong văn bản (LongCitation và ShortCitation văn bản, EntryCategory để nhóm nó dưới một tiêu đề như “Cases” hoặc “Statutes”, và IsBold/IsItalic để định dạng), và FieldToa tổng hợp các trích dẫn đó vào một bảng, với EntryCategory chọn danh mục cần tổng hợp, UseHeading và UsePassim kiểm soát tiêu đề danh mục và quy ước “passim” cho các nguồn được trích dẫn nhiều lần, và PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting điều chỉnh bố cục.

Tham chiếu nội dung từ tài liệu khác

FieldRD thực hiện trường RD, cho phép trường mục lục, chỉ mục hoặc bảng các nguồn pháp lý bao gồm các mục từ một tệp khác khi biên dịch — FieldRD.FileName là tài liệu được tham chiếu, và IsPathRelative kiểm soát liệu đường dẫn đó có được giải quyết tương đối với tài liệu hiện tại hay không.


Mẹo và Thực hành Tốt nhất

  • Xây dựng chuỗi chuyển đổi TOC theo cùng cách mà Word làm (\o "1-3" \h \z \u) thay vì cấu hình từng thuộc tính FieldToc một cách riêng lẻ, sau đó chỉ điều chỉnh các thuộc tính cụ thể mà bạn cần thay đổi sau này.
  • Gọi FieldToc.UpdatePageNumbers() (hoặc Field.Update()) sau khi thay đổi nội dung để TOC, mục lục, hoặc bảng tài liệu pháp lý phản ánh tài liệu hiện tại thay vì các kết quả cũ kịp thời khi nó được chèn.
  • Sử dụng FieldTC.TypeIdentifier kết hợp với FieldToc.EntryIdentifier khi một tài liệu cần hơn một TOC (ví dụ như một TOC chính và một bảng hình ảnh riêng) được xây dựng từ các tập mục nhập khác nhau.
  • Đặt FieldXE.PageRangeBookmarkName (hoặc đánh dấu phạm vi tương đương của FieldTA) thay vì định dạng thủ công một phạm vi trang trong văn bản mục nhập, để mục lục/bảng duy trì tính nhất quán nếu nội dung di chuyển.
  • Hãy nhớ rằng các số trang trong kết quả INDEX/TOC/TOA của phiên bản này được tính là các giá trị placeholder thay vì số trang thực, vì bố cục trang và phân trang không thuộc phần của phiên bản này.

Các vấn đề thường gặp

Vấn đềNguyên nhânCách khắc phục
Mục lục không bao gồm các tiêu đề dự kiếnChuỗi chuyển đổi của TOC (hoặc HeadingLevelRange) loại trừ các cấp độ đề mục đóĐiều chỉnh các chuyển đổi được truyền cho InsertTableOfContents hoặc đặt FieldToc.HeadingLevelRange
Mục chỉ mục không xuất hiện ở nơi dự kiếnDấu đánh dấu FieldXE tương ứng bị thiếu, hoặc cú pháp cấp phụ EntryType của nó không khớp với những gì FieldIndex yêu cầuXác nhận các dấu FieldXE tồn tại và các giá trị EntryType của chúng được định dạng một cách nhất quán
Kết quả trường trông cũ kỹ sau khi chỉnh sửa nội dungTrường không được cập nhật sau khi chỉnh sửaGọi Update() trên trường (hoặc UpdateFields() trên Document)
Các mục từ tài liệu khác không được bao gồm khi biên dịchKhông có FieldRD nào tham chiếu đến tài liệu đó, hoặc IsPathRelative không khớp với cách đường dẫn nên được giải quyếtThêm một FieldRD với cài đặt FileName và IsPathRelative đúng

FAQ

Làm thế nào để chèn mục lục một cách lập trình?

Gọi DocumentBuilder.InsertTableOfContents(switches) với một chuỗi chuyển đổi kiểu Word, chẳng hạn như "\o \"1-3\" \h \z \u", tại vị trí mà TOC nên xuất hiện.

Làm sao để đánh dấu văn bản thành mục chỉ mục?

Chèn một trường FieldXE tại vị trí đó (ví dụ qua DocumentBuilder.InsertField) với thuộc tính Text của nó được đặt thành văn bản mục; FieldIndex biên dịch tất cả các dấu FieldXE trong tài liệu thành kết quả chỉ mục.

Sự khác biệt giữa FieldTC và các mục TOC dựa trên tiêu đề là gì?

Hành vi TOC mặc định của Word thu thập các mục từ các đoạn văn bằng cách sử dụng các kiểu tiêu đề. FieldTC cho phép bạn đánh dấu một vị trí tùy ý làm mục TOC mà không phụ thuộc vào kiểu đoạn, mà FieldToc có thể bao gồm thông qua việc khớp các giá trị EntryIdentifier/TypeIdentifier.

Làm sao để làm mới TOC hoặc chỉ mục sau khi tài liệu thay đổi?

Gọi Update() trên trường cụ thể (ví dụ FieldToc.Update(), hoặc FieldToc.UpdatePageNumbers() chỉ cho các số trang), hoặc Document.UpdateFields() để làm mới mọi trường trong tài liệu.

Tôi có thể tổng hợp một TOC hoặc chỉ mục trên nhiều tài liệu không?

Có — chèn một trường FieldRD trỏ tới mỗi tài liệu bổ sung qua FileName; trường biên dịch (FieldToc, FieldIndex, hoặc FieldToa) sẽ bao gồm các mục từ các tài liệu được tham chiếu khi nó được cập nhật.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
FieldLớp cơ sở cho tất cả các loại trường, bao gồm Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)Chèn một FieldToc bằng cách sử dụng các công tắc TOC kiểu Word
FieldTocTriển khai trường TOC (bảng mục lục hoặc bảng hình)
FieldTCĐánh dấu một mục mục lục tùy chỉnh tại vị trí cụ thể
FieldIndexTriển khai trường INDEX, biên dịch các dấu FieldXE
FieldXEĐánh dấu một vị trí như một mục chỉ mục
FieldToaTriển khai trường bảng các thẩm quyền, biên dịch các dấu FieldTA
FieldTAĐánh dấu một trích dẫn cho bảng các thẩm quyền
FieldRDTham chiếu nội dung của tài liệu khác khi biên dịch TOC, chỉ mục hoặc bảng các tài liệu tham khảo
FieldIndexFormatEnum các kiểu hiển thị chỉ mục tích hợp sẵn của Word

Xem thêm

 Tiếng Việt