Этот пример показывает, как программно создать пронумерованные заголовки для глав и иерархические пронумерованные заголовки для подразделов в главе. Пример также демонстрирует, как создать иерархические пронумерованные табличные заголовки и названия рисунков, которые находятся в пронумерованной главе или подразделе в главе.
Импортируйте пакет API DOM, таким образом, вы не должны использовать долго, полностью определенные имена классов.
import mlreportgen.dom.*
Создайте и откройте документ. Чтобы создать документ Word, измените выходной тип от pdf
до docx
. Чтобы создать документ HTML, измените pdf
на html
или html-file
для многофайлового или однофайлового документа, соответственно.
d = Document("mydoc","pdf"); open(d);
Добавьте оглавление к документу.
append(d,TOC);
Создайте потоки нумерации для заголовков главы, заголовков подраздела, названий рисунков и табличных заголовков. По умолчанию потоки создаются с помощью арабских цифр с начальным значением 0
.
chapterStream = createAutoNumberStream(d,"chapter"); sectionStream = createAutoNumberStream(d,"section"); figureStream = createAutoNumberStream(d,"figure"); tableStream = createAutoNumberStream(d,"table");
Задайте некоторое изображение, таблицу и стили записей таблицы, которые будут использоваться в более поздних разделах.
imageStyle = ... { ... Height("5in"), ... Width("5in") ... }; tableStyle = ... { ... Width("100%"), ... Border("solid"), ... RowSep("solid"), ... ColSep("solid") ... }; tableEntriesStyle = ... { ... HAlign("center"), ... VAlign("middle") ... };
Следующий код создает первую главу в документе. Заголовок главы создается с помощью функции getChapterTitle
. Эта функция использует поток нумерации chapter
, чтобы создать пронумерованный заголовок главы. Глава состоит из двух подразделов, заголовки которых создаются с помощью функции getSectionTitle
. Эта функция использует и chapter
и потоки нумерации section
, чтобы создать иерархический пронумерованный заголовок раздела. Подразделы состоят из нескольких фигур с иерархическими пронумерованными заголовками, которые создаются с помощью функции getFigureCaption
. Эта функция использует и chapter
и потоки нумерации figure
, чтобы создать иерархическое пронумерованное название рисунка. getChapterTitle
, getSectionTitle
и функции getFigureCaption
раньше создавали эту главу, описаны позже в этом примере.
% Chapter 1. chapterTitle = getChapterTitle("Figures with numbered captions"); append(d,chapterTitle); % Section 1.1. sectionTitle = getSectionTitle("Figure for Land Ocean"); append(d,sectionTitle); % Figure 1.1. image1 = Image(which("landOcean.jpg")); image1.Style = imageStyle; append(d,image1); append(d,getFigureCaption("Land Ocean")); % Section 1.2. sectionTitle = getSectionTitle("Figures for Peppers and Cat's Eye Nebula"); append(d,sectionTitle); % Figure 1.2. image2 = Image(which("peppers.png")); image2.Style = imageStyle; append(d,image2); append(d,getFigureCaption("Peppers")); % Figure 1.3. image3 = Image(which("ngc6543a.jpg")); image3.Style = imageStyle; append(d,image3); append(d,getFigureCaption("Cat's Eye Nebula or NGC 6543"));
Следующий код создает вторую главу в документе. Глава имеет пронумерованный заголовок с двумя иерархическими пронумерованными подразделами. Здесь, подразделы состоят из нескольких таблиц с иерархическими пронумерованными заголовками, которые создаются с помощью функции getTableTitle
, заданной позже в этом примере. Эта функция использует и chapter
и потоки нумерации table
, чтобы создать иерархический пронумерованный табличный заголовок.
% Chapter 2. chapterTitle = getChapterTitle("Tables with numbered titles"); append(d,chapterTitle); % Section 2.1. sectionTitle = getSectionTitle("Table for Magic(5)"); append(d,sectionTitle); % Table 2.1. append(d,getTableTitle("Magic(5)")); table1 = Table(magic(5)); table1.Style = tableStyle; table1.TableEntriesStyle = tableEntriesStyle; append(d,table1); % Section 2.2. sectionTitle = getSectionTitle("Tables for Magic(8) and Magic(10)"); append(d,sectionTitle); % Table 2.2. append(d,getTableTitle("Magic(8)")); table2 = Table(magic(8)); table2.Style = tableStyle; table2.TableEntriesStyle = tableEntriesStyle; append(d,table2); % Table 2.3. append(d,getTableTitle("Magic(10)")); table3 = Table(magic(10)); table3.Style = tableStyle; table3.TableEntriesStyle = tableEntriesStyle; append(d,table3);
Закройте и просмотрите документ.
close(d); rptview(d);
Следующая функция возвращает пронумерованный заголовок для главы. Пронумерованный заголовок создается с помощью объекта DOM Heading1
, где содержимое заголовка снабжается префиксом строкой Chapter N
и период, где N
является потоковым счетчиком chapter
. Например, заголовок для первой главы содержит "Главу 1". как его префикс. Формат CounterInc
в свойстве Style
вызывает поток chapter
в противоречии с быть постепенно увеличенным, когда этот заголовок главы добавлен к документу. Формат CounterReset
в свойстве Style
заставляет другие связанные потоковые счетчики такой как, section
, figure
, и table
, быть сброшенными к их начальным значениям, когда этот заголовок главы добавлен к документу.
function chapterTitle = getChapterTitle(content) import mlreportgen.dom.* chapterTitle = Heading1(); append(chapterTitle,Text("Chapter ")); append(chapterTitle,AutoNumber("chapter")); append(chapterTitle,Text(". ")); append(chapterTitle,Text(content)); chapterTitle.Style = ... { ... CounterInc("chapter"), ... CounterReset("section figure table"), ... WhiteSpace("preserve"), ... PageBreakBefore(true), ... KeepWithNext(true) ... }; end
Следующая функция возвращает иерархический пронумерованный заголовок для раздела, который находится в главе. Иерархический пронумерованный заголовок создается с помощью объекта DOM Heading2
, где содержимое заголовка снабжается префиксом строкой "Нью-Мексико"., где N и M является chapter
и потоковые счетчики section
, соответственно. Например, заголовок для первого раздела во второй главе содержит "2.1" как ее префикс. Формат CounterInc
в свойстве Style
вызывает поток section
в противоречии с быть постепенно увеличенным, когда этот заголовок раздела добавлен к документу.
function sectionTitle = getSectionTitle(content) import mlreportgen.dom.* sectionTitle = Heading2(); append(sectionTitle,AutoNumber("chapter")); append(sectionTitle,Text(".")); append(sectionTitle,AutoNumber("section")); append(sectionTitle,Text(". ")); append(sectionTitle,Text(content)); sectionTitle.Style = ... { ... CounterInc("section"), ... WhiteSpace("preserve"), ... KeepWithNext(true) ... }; end
Следующая функция возвращает иерархический пронумерованный заголовок для фигуры, добавленной к главе или подразделу в главе. Иерархический пронумерованный заголовок создается с помощью объекта DOM Paragraph
, где содержимое заголовка снабжается префиксом строкой, "изображают N.F.", где N и F является chapter
и потоковые счетчики figure
, соответственно. Например, заголовок для третьей фигуры во второй главе содержит "рисунок 2.3". как его префикс. Формат CounterInc
в свойстве Style
вызывает поток figure
в противоречии с быть постепенно увеличенным, когда это название рисунка добавлено к документу.
function figureCaption = getFigureCaption(content) import mlreportgen.dom.* figureCaption = Paragraph(); append(figureCaption,Text("Figure ")); append(figureCaption,AutoNumber("chapter")); append(figureCaption,Text(".")); append(figureCaption,AutoNumber("figure")); append(figureCaption,Text(". ")); append(figureCaption,Text(content)); keepWithPrevious = FOProperty("keep-with-previous.within-page","always"); figureCaption.Style = ... { ... CounterInc("figure"), ... WhiteSpace("preserve"), ... FOProperties(keepWithPrevious) ... }; end
Следующая функция возвращает иерархический пронумерованный заголовок для таблицы, добавленной к главе или подразделу в главе. Иерархический пронумерованный заголовок создается с помощью объекта DOM Paragraph
, где содержимое заголовка снабжается префиксом строкой "Таблица N.T.", где N
и T
является chapter
и потоковые счетчики table
, соответственно. Например, заголовок для третьей таблицы во второй главе содержит "Таблицу 2.3". как его префикс. Формат CounterInc
в свойстве Style
вызывает поток table
в противоречии с быть постепенно увеличенным, когда этот табличный заголовок добавлен к документу.
function tableTitle = getTableTitle(content) import mlreportgen.dom.* tableTitle = Paragraph(); append(tableTitle,Text("Table ")); append(tableTitle,AutoNumber("chapter")); append(tableTitle,Text(".")); append(tableTitle,AutoNumber("table")); append(tableTitle,Text(". ")); append(tableTitle,Text(content)); tableTitle.Style = ... { ... CounterInc("table"), ... WhiteSpace("preserve"), ... KeepWithNext(true), ... Bold(true), ... OuterMargin("0pt", "0pt", "10pt", "5pt") ... }; end