FieldTAShortCitation Property |
Namespace: Aspose.Words.Fields
public void FieldTOA() { Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Insert a TOA field, which will list all the TA entries in the document, // displaying long citations and page numbers for each FieldToa fieldToa = (FieldToa)builder.InsertField(FieldType.FieldTOA, false); // Set the entry category for our table // For a TA field to be included in this table, it will have to have a matching entry category fieldToa.EntryCategory = "1"; // Moreover, the Table of Authorities category at index 1 is "Cases", // which will show up as the title of our table if we set this variable to true fieldToa.UseHeading = true; // We can further filter TA fields by designating a named bookmark that they have to be inside of fieldToa.BookmarkName = "MyBookmark"; // By default, a dotted line page-wide tab appears between the TA field's citation and its page number // We can replace it with any text we put in this attribute, even preserving the tab if we use tab character fieldToa.EntrySeparator = " \t p."; // If we have multiple TA entries that share the same long citation, // all their respective page numbers will show up on one row, // and the page numbers separated by a string specified here fieldToa.PageNumberListSeparator = " & p. "; // To reduce clutter, we can set this to true to get our table to display the word "passim" // if there would be 5 or more page numbers in one row fieldToa.UsePassim = true; // One TA field can refer to a range of pages, and the sequence specified here will be between the start and end page numbers fieldToa.PageRangeSeparator = " to "; // The format from the TA fields will carry over into our table, and we can stop it from doing so by setting this variable fieldToa.RemoveEntryFormatting = true; builder.Font.Color = Color.Green; builder.Font.Name = "Arial Black"; Assert.AreEqual(" TOA \\c 1 \\h \\b MyBookmark \\e \" \t p.\" \\l \" & p. \" \\p \\g \" to \" \\f", fieldToa.GetFieldCode()); builder.InsertBreak(BreakType.PageBreak); // We will insert a TA entry using a document builder // This entry is outside the bookmark specified by our table, so it won't be displayed FieldTA fieldTA = InsertToaEntry(builder, "1", "Source 1"); Assert.AreEqual(" TA \\c 1 \\l \"Source 1\"", fieldTA.GetFieldCode()); // This entry is inside the bookmark, // but the entry category doesn't match that of the table, so it will also be omitted builder.StartBookmark("MyBookmark"); fieldTA = InsertToaEntry(builder, "2", "Source 2"); // This entry will appear in the table fieldTA = InsertToaEntry(builder, "1", "Source 3"); // Short citations aren't displayed by a TOA table, // but they can be used as a shorthand to refer to bulky source names that multiple TA fields reference fieldTA.ShortCitation = "S.3"; Assert.AreEqual(" TA \\c 1 \\l \"Source 3\" \\s S.3", fieldTA.GetFieldCode()); // The page number can be made to appear bold and/or italic // This will still be displayed if our table is set to ignore formatting fieldTA = InsertToaEntry(builder, "1", "Source 2"); fieldTA.IsBold = true; fieldTA.IsItalic = true; Assert.AreEqual(" TA \\c 1 \\l \"Source 2\" \\b \\i", fieldTA.GetFieldCode()); // We can get TA fields to refer to a range of pages that a bookmark spans across instead of the page that they are on // Note that this entry refers to the same source as the one above, so they will share one row in our table, // displaying the page number of the entry above as well as the page range of this entry, // with the table's page list and page number range separators between page numbers fieldTA = InsertToaEntry(builder, "1", "Source 3"); fieldTA.PageRangeBookmarkName = "MyMultiPageBookmark"; builder.StartBookmark("MyMultiPageBookmark"); builder.InsertBreak(BreakType.PageBreak); builder.InsertBreak(BreakType.PageBreak); builder.InsertBreak(BreakType.PageBreak); builder.EndBookmark("MyMultiPageBookmark"); Assert.AreEqual(" TA \\c 1 \\l \"Source 3\" \\r MyMultiPageBookmark", fieldTA.GetFieldCode()); // Having 5 or more TA entries with the same source invokes the "passim" feature of our table, if we enabled it for (int i = 0; i < 5; i++) { InsertToaEntry(builder, "1", "Source 4"); } builder.EndBookmark("MyBookmark"); doc.UpdateFields(); doc.Save(ArtifactsDir + "Field.TOA.TA.docx"); } /// <summary> /// Get a builder to insert a TA field, specifying its long citation and category, /// then insert a page break and return the field we created. /// </summary> private static FieldTA InsertToaEntry(DocumentBuilder builder, string entryCategory, string longCitation) { FieldTA field = (FieldTA)builder.InsertField(FieldType.FieldTOAEntry, false); field.EntryCategory = entryCategory; field.LongCitation = longCitation; builder.InsertBreak(BreakType.PageBreak); return field; }