protected virtual void DoAddTOC(TocOptions options) { var book = options?.Book?.Document ?? Document; var code = new StringBuilder("TOC", 512); if (options != null) { if (options.Bookmarks) { code.Append(" \\b"); } if (options.Hyperlinks) { code.Append(" \\h"); } if (!string.IsNullOrWhiteSpace(options.OmitPageNumbers)) { code.Append($" \\n {QuoteString(options.OmitPageNumbers)}"); } if (options.UseParagraphOutline) { code.Append(" \\u"); } if (!string.IsNullOrWhiteSpace(options.ParagraphOutline)) { code.Append("$ \\o {QuoteString(options.ParagraphOutline)}"); } if (!string.IsNullOrWhiteSpace(options.Styles)) { code.Append("$ \\t {QuoteString(options.Styles)}"); } if (!string.IsNullOrWhiteSpace(options.SeqFields)) { code.Append("$ \\c {QuoteString(options.SeqFields)}"); } if (!string.IsNullOrWhiteSpace(options.SeqPrefixes)) { code.Append("$ \\s {QuoteString(options.SeqPrefixes)}"); } if (!string.IsNullOrWhiteSpace(options.Separator)) { code.Append("$ \\d {QuoteString(options.Separator)}"); } if (!string.IsNullOrWhiteSpace(options.TcFields)) { code.Append("$ \\f {QuoteString(options.TcFields)}"); } if (!string.IsNullOrWhiteSpace(options.TcLevels)) { code.Append("$ \\l {QuoteString(TcLevels)}"); } } var field = book.Fields.Create(book.Range.End, code.ToString()); field.Update(); AddComments(book, field.ResultRange, options); if (field?.ResultRange?.End != null) { book.CaretPosition = field.ResultRange.End; ScrollToCaret(); }
public SCBook AddTOC(TocOptions options = null) { ExecuteSynchronized(options, () => DoAddTOC(options)); return(this); }