export class StyleLevel { public readonly styleName: string; public readonly level: number; constructor(styleName: string, level: number) { this.styleName = styleName; this.level = level; } } /** * Options according to this docs: * https://www.ecma-international.org/publications/standards/Ecma-376.htm * Part 1 - Page 1251 * * Short Guide: * http://officeopenxml.com/WPtableOfContents.php */ export interface ITableOfContentsOptions { /** * \a option - Includes captioned items, but omits caption labels and numbers. * The identifier designated by text in this switch's field-argument corresponds to the caption label. * Use captionLabelIncludingNumbers (\c) to build a table of captions with labels and numbers. */ readonly captionLabel?: string; /** * \b option - Includes entries only from the portion of the document marked by * the bookmark named by text in this switch's field-argument. */ readonly entriesFromBookmark?: string; /** * \c option - Includes figures, tables, charts, and other items that are numbered * by a SEQ field (§17.16.5.56). The sequence identifier designated by text in this switch's * field-argument, which corresponds to the caption label, shall match the identifier in the * corresponding SEQ field. */ readonly captionLabelIncludingNumbers?: string; /** * \d option - When used with \s, the text in this switch's field-argument defines * the separator between sequence and page numbers. The default separator is a hyphen (-). */ readonly sequenceAndPageNumbersSeparator?: string; /** * \f option - Includes only those TC fields whose identifier exactly matches the * text in this switch's field-argument (which is typically a letter). */ readonly tcFieldIdentifier?: string; /** * \h option - Makes the table of contents entries hyperlinks. */ readonly hyperlink?: boolean; /** * \l option - Includes TC fields that assign entries to one of the levels specified * by text in this switch's field-argument as a range having the form startLevel-endLevel, * where startLevel and endLevel are integers, and startLevel has a value equal-to or less-than endLevel. * TC fields that assign entries to lower levels are skipped. */ readonly tcFieldLevelRange?: string; /** * \n option - Without field-argument, omits page numbers from the table of contents. * Page numbers are omitted from all levels unless a range of entry levels is specified by * text in this switch's field-argument. A range is specified as for \l. */ readonly pageNumbersEntryLevelsRange?: string; /** * \o option - Uses paragraphs formatted with all or the specified range of builtin * heading styles. Headings in a style range are specified by text in this switch's * field-argument using the notation specified as for \l, where each integer corresponds * to the style with a style ID of HeadingX (e.g. 1 corresponds to Heading1). * If no heading range is specified, all heading levels used in the document are listed. */ readonly headingStyleRange?: string; /** * \p option - Text in this switch's field-argument specifies a sequence of characters * that separate an entry and its page number. The default is a tab with leader dots. */ readonly entryAndPageNumberSeparator?: string; /** * \s option - For entries numbered with a SEQ field (§17.16.5.56), adds a prefix to the page number. * The prefix depends on the type of entry. text in this switch's field-argument shall match the * identifier in the SEQ field. */ readonly seqFieldIdentifierForPrefix?: string; /** * \t field-argument Uses paragraphs formatted with styles other than the built-in heading styles. * Text in this switch's field-argument specifies those styles as a set of comma-separated doublets, * with each doublet being a comma-separated set of style name and table of content level. * \t can be combined with \o. */ readonly stylesWithLevels?: StyleLevel[]; /** * \u Uses the applied paragraph outline level. */ readonly useAppliedParagraphOutlineLevel?: boolean; /** * \w Preserves tab entries within table entries. */ readonly preserveTabInEntries?: boolean; /** * \x Preserves newline characters within table entries. */ readonly preserveNewLineInEntries?: boolean; /** * \z Hides tab leader and page numbers in web page view (§17.18.102). */ readonly hideTabAndPageNumbersInWebView?: boolean; }