Можно автоматически нумеровать содержимое документа, например заголовки глав, разделов, таблиц и рисунков. Добавление объектов автоматической нумерации в документ, в котором должны отображаться номера. Каждый автоматический номер связан с потоком нумерации, который определяет значение каждого номера в последовательности. Создание отчета заменяет объект автоматической нумерации номером на основе его позиции в документе относительно других автоматических номеров в том же потоке. Например, первый объект автоматической нумерации в потоке заменяется на 1, второй на 2 и так далее. Автоматическую нумерацию можно использовать для создания иерархических схем нумерации, таких как раздел 1.1 и раздел 1.2.
Можно автоматически нумеровать содержимое документа программно или путем определения автоматических номеров в шаблоне.
Чтобы программно автоматически нумеровать содержимое документа, выполните следующие действия в каждой точке документа, где должен отображаться автоматически сгенерированный номер.
Создание объекта автоматической нумерации с помощью mlreportgen.dom.AutoNumber конструктор. Укажите имя связанного потока автоматической нумерации в конструкторе. Например, эта строка создает автоматический номер, принадлежащий потоку с именем chapter.
chapterNumber = AutoNumber('chapter');Примечание
Если указанный поток автоматической нумерации не существует, AutoNumber конструктор создает поток нумерации с указанным именем. Неявно созданный поток отображает автоматические числа как арабские цифры. Чтобы использовать поток с различными свойствами, создайте поток явно, используя createAutoNumberStream функция Document объект.
Добавить AutoNumber в Text, Paragraph, или Heading объект, содержащий текст, предшествующий автоматическому номеру.
append(chapHead,chapterNumber);
Добавить 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, и многократного добавления деталей к документу.
Предположим, что добавляется шаблон детали главы 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-отчетах, создайте деталь документа, использующую 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 аналогично 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'.