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