Esempio n. 1
0
        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();
            }
Esempio n. 2
0
 public SCBook AddTOC(TocOptions options = null)
 {
     ExecuteSynchronized(options, () => DoAddTOC(options));
     return(this);
 }