Можно автоматически пронумеровать содержимое документа, такое как глава, раздел, таблица, и изобразить заголовки. Добавьте автоматические объекты нумерации к документу, где вы хотите, чтобы числа появились. Каждый автоматический номер сопоставлен с потоком нумерации, который определяет значение каждого номера в последовательности. Сообщите, что генерация заменяет автоматический объект нумерации на номер на основе его положения в документе относительно других автоматических чисел в том же потоке. Например, первый автоматический объект нумерации в потоке заменяется 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
. Этот шаблон использует поле (SEQ
) последовательности Word, чтобы пронумеровать заголовок главы. Шаблон также содержит дыры для заголовка главы и содержимого главы.
Этот код использует шаблон части главы, чтобы создать пронумерованные главы. Последний оператор в этом коде открывает отчет в 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 Reports, создайте шаблон части документа в своей библиотеке документа 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
как содержимое.
span.an_chapter:before { content: counter(chapter); }
Используйте ту же программу, как вы использовали для Word, изменяя значение для doctype
к 'html'
.
Создание автоматических чисел для PDF подобно HTML, кроме API DOM предоставляет элементу 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'
.