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

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

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'.

См. также

Функции

Классы