Можно автоматически пронумеровать содержимое документа, такое как глава, раздел, таблица, и изобразить заголовки. Добавьте автоматические объекты нумерации к документу, где вы хотите, чтобы числа появились. Каждый автоматический номер сопоставлен с потоком нумерации, который определяет значение каждого номера в последовательности. Сообщите, что генерация заменяет автоматический объект нумерации на номер на основе его положения в документе относительно других автоматических чисел в том же потоке. Например, первый автоматический объект нумерации в потоке заменяется 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 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'
.