exponenta event banner

Автоматически нумеровать содержимое документа

Можно автоматически нумеровать содержимое документа, например заголовки глав, разделов, таблиц и рисунков. Добавление объектов автоматической нумерации в документ, в котором должны отображаться номера. Каждый автоматический номер связан с потоком нумерации, который определяет значение каждого номера в последовательности. Создание отчета заменяет объект автоматической нумерации номером на основе его позиции в документе относительно других автоматических номеров в том же потоке. Например, первый объект автоматической нумерации в потоке заменяется на 1, второй на 2 и так далее. Автоматическую нумерацию можно использовать для создания иерархических схем нумерации, таких как раздел 1.1 и раздел 1.2.

Можно автоматически нумеровать содержимое документа программно или путем определения автоматических номеров в шаблоне.

Программная автоматическая нумерация содержимого

Чтобы программно автоматически нумеровать содержимое документа, выполните следующие действия в каждой точке документа, где должен отображаться автоматически сгенерированный номер.

  1. Создание объекта автоматической нумерации с помощью mlreportgen.dom.AutoNumber конструктор. Укажите имя связанного потока автоматической нумерации в конструкторе. Например, эта строка создает автоматический номер, принадлежащий потоку с именем chapter.

    chapterNumber = AutoNumber('chapter');

    Примечание

    Если указанный поток автоматической нумерации не существует, AutoNumber конструктор создает поток нумерации с указанным именем. Неявно созданный поток отображает автоматические числа как арабские цифры. Чтобы использовать поток с различными свойствами, создайте поток явно, используя createAutoNumberStream функция Document объект.

  2. Добавить AutoNumber в Text, Paragraph, или Heading объект, содержащий текст, предшествующий автоматическому номеру.

    append(chapHead,chapterNumber);
  3. Добавить mlreportgen.dom.CounterInc форматировать объект в Style свойства объекта содержимого, который требуется автоматически нумеровать. Добавление CounterInc объект увеличивает поток, связанный с автоматическим номером, при выводе абзаца или заголовка. Обновленное значение заменяет AutoNumber объект.

    chapHead.Style = {CounterInc('chapter'), WhiteSpace('preserve')};

Этот код автоматически нумерует заголовки глав в документе.

import mlreportgen.dom.*;
d = Document('MyReport','html');
 
for rank = 3:5
    chapHead = Heading1('Chapter ','Heading 1');
    append(chapHead,AutoNumber('chapter'));
    append(chapHead,sprintf('. Rank %i Magic Square',rank));
    chapHead.Style = {CounterInc('chapter'), ...
                      WhiteSpace('preserve')};
    append(d,chapHead);
    table = append(d,magic(rank));
    table.Width = '2in';
end
 
close(d);
rptview(d.OutputPath);

Создание иерархической автоматической нумерации

Можно создать иерархические схемы нумерации, например 1.1, 1.2, 1.3, 2.1 и 2.2. Использовать mlreportgen.dom.CounterReset форматировать объект, чтобы восстановить начальное значение дочернего автоматического номера при изменении его родительского номера. Например, этот код использует CounterReset форматировать объект для сброса потока номеров таблиц глав в начале каждой главы.

import mlreportgen.dom.*;
d = Document('MyReport','html');
 
for rank = 3:2:9
    chapHead = Heading(1,'Chapter ');
    append(chapHead, AutoNumber('chapter'));
    chapHead.Style = {CounterInc('chapter'), ...
                      CounterReset('table'), ...
                      WhiteSpace('preserve')};
    append(d,chapHead);
    
    for i = 0:1;
        tableHead = Paragraph('Table ');
        append(tableHead,AutoNumber('chapter'))
        append(tableHead,'.');
        append(tableHead, AutoNumber('table'));
        append(tableHead, ...
           sprintf('. Rank %i Magic Square',rank+i));
        tableHead.Style = {CounterInc('table'), ...
                           Bold, ...
                           FontSize('11pt'), ...
                           WhiteSpace('preserve')};
        append(d,tableHead);
        table = append(d,magic(rank+i));
        table.Width = '2in';
    end
end
 
close(d);
rptview(d.OutputPath);

Автоматическое обозначение содержимого с помощью шаблонов деталей

Можно автоматически нумеровать документ путем создания объекта детали документа на основе шаблонов, содержащих автоматическую нумерацию Microsoft ® Word, HTML или PDF, и многократного добавления деталей к документу.

Автоматическая нумерация в отчетах Word

Предположим, что добавляется шаблон детали главы Chapter в библиотеку шаблонов деталей Word MyReportTemplate.dotx шаблон отчета. Этот шаблон использует последовательность Word (SEQ) для нумерации заголовка главы. Шаблон также содержит отверстия для заголовка главы и содержимого главы.

Этот код использует шаблон части главы для создания нумерованных глав. Последняя инструкция в этом коде открывает отчет в Word и обновляет его. Обновление отчета приводит к замене Word SEQ поля с номерами глав.

import mlreportgen.dom.*
doctype = 'docx';
d = Document('MyReport',doctype,'MyReportTemplate');

for rank = 3:5
    chapterPart = DocumentPart(d,'Chapter');
    while ~strcmp(chapterPart.CurrentHoleId,'#end#')
       switch chapterPart.CurrentHoleId
           case 'ChapterTitle'
              append(chapterPart, ...
                 sprintf('Rank %i Magic Square',rank));
           case 'ChapterContent'
              table = append(chapterPart,magic(rank));
              table.Width = '2in';
       end
       moveToNextHole(chapterPart);
    end
    append(d, chapterPart);
end

close(d);
rptview(d.OutputPath);

Автоматическая нумерация в отчетах HTML

Чтобы создать автоматическую нумерацию в HTML-отчетах, создайте деталь документа, использующую counter-increment и определите счетчик в таблице стилей. Например, чтобы создать деталь документа для работы с той же программой, которая используется в функции «Автоматическая нумерация в отчетах Word», создайте шаблон детали документа в библиотеке документов HTML, аналогичный этому коду. Код определяет chapter счетчик и задает класс an_chapter для удержания автоматического номера. Он также определяет отверстия для заголовка и содержимого для работы с программой.

<dptemplate name="Chapter">
      <p style="counter-increment:chapter;"><span>Chapter </span>
           <span class="an_chapter"></span> 
      <hole id="ChapterTitle" /></p>
      <hole id="ChapterContent" />
 </dptemplate>

В таблице стилей определите an_chapter класс. Используйте content для указания свойства chapter counter в качестве содержимого.

span.an_chapter:before {
content: counter(chapter);
}

Используйте ту же программу, что и для Word, изменяя значение для doctype кому 'html'.

Автоматический номер в отчетах PDF

Создание автоматических номеров для PDF аналогично HTML, за исключением того, что DOM API предоставляет элемент HTML <autonumber> для шаблонов PDF, упрощающих автоматическую нумерацию. Укажите stream-name атрибут для autonumber элемент. Для имени потока используйте значение counter-increment собственность, в данном случае chapter.

<dptemplate name="Chapter">
    <p style="counter-increment:chapter;"><span>Chapter </span>
          <autonumber stream-name="chapter"/> 
       <hole id="ChapterTitle" /></p>
       <hole id="ChapterContent" />
 </dptemplate>

Для использования автонумерации нет необходимости добавлять свойства в таблицу стилей.

Используйте ту же программу, что и для Word, изменяя значение для doctype кому 'pdf'.

См. также

Функции

Классы