exponenta event banner

Создание и форматирование списков

API DOM можно использовать для создания и форматирования неупорядоченных, упорядоченных и многоуровневых списков в программе создания отчетов.

Списки представлены как mlreportgen.dom.UnorderedList или mlreportgen.dom.OrderedList объекты. Элементы списка представлены как mlreportgen.dom.ListItem объекты.

Можно создать список из массива MATLAB ®, который задает элементы списка, или создать список по одному элементу за раз. Создание списка из массива - самый простой подход. Создание списка по одному элементу полезно, когда элементы содержат несколько элементов, таких как абзац и таблица.

Форматирование списков и элементов списков с использованием стилей, определенных шаблоном, или программно с использованием объектов форматирования.

Создание списка из массива MATLAB

Можно создать список из одномерного числового массива, строкового массива, массива символьных векторов, массива ячеек или категориального массива. Укажите элементы списка в массиве ячеек, если элементы имеют разные типы.

Создание неупорядоченного списка из массива

Чтобы создать неупорядоченный список из массива, добавьте массив непосредственно в документ или часть документа. append способ:

  • Создает mlreportgen.dom.UnorderedList объект.

  • Создает mlreportgen.dom.ListItem для каждого элемента массива.

  • Добавляет ListItem объекты в UnorderedList объект и UnorderedList объект для документа или детали документа.

Например, этот код создает неупорядоченный список из массива строк:

import mlreportgen.dom.*
d = Document("fruit","html");

ul = append(d,["apples","oranges","bananas"]);

close(d);
rptview(d);

Вот список в созданном отчете:

Bulleted list that includes the items apples, oranges, and bananas

Примечание

Чтобы создать список путем добавления массива к документу или детали документа, массив должен быть 1 на n. При добавлении массива n-by-1 к документу или детали документа создается таблица, а не список.

Либо создайте неупорядоченный список, предоставив массив в качестве входных данных для mlreportegen.dom.UnorderedList конструктор. Например:

import mlreportgen.dom.*
d = Document("fruit","html");

ul = UnorderedList(["apples","oranges","bananas"]);
ul = append(d,ul);

close(d);
rptview(d);

Конструктор создает mlreportgen.dom.ListItem объект для каждого элемента массива и добавляет ListItem объекты в UnorderedList объект.

Создание упорядоченного списка из массива

Чтобы создать упорядоченный список из массива, предоставьте массив в качестве входных данных для mlreportegen.dom.OrderedList конструктор. Конструктор создает mlreportgen.dom.ListItem для каждого элемента массива и добавляет ListItem объекты в OrderedList объект. Например, этот код создает упорядоченный список из массива строк.

import mlreportgen.dom.*
d = Document("weekdays","html");

ol = OrderedList(["Monday","Tuesday","Wednesday","Thursday","Friday"]);
append(d,ol);

close(d);
rptview(d);

Вот список в созданном отчете:

List of weekdays in order, Monday through Friday

Создание списка из массива ячеек

Укажите элементы списка в массиве ячеек, если элементы имеют разные типы. В массив ячеек можно включать векторы символов, строки, числа и некоторые объекты DOM, такие как mlreportgen.dom.Text объект. Список объектов DOM, которые можно включить, см. в разделе mlreportgen.dom.ListItem.

Например, этот код создает упорядоченный список из массива ячеек, который содержит векторы символов и mlreportgen.dom.ExternalLink объект.

import mlreportgen.dom.*
d = Document('myreport','html');

ol = UnorderedList({...
    'apples',...
    'oranges',...
    ExternalLink('https://en.wikipedia.org/wiki/Mango',...
    'mango')});
append(d,ol);

close(d);
rptview(d);

Вот список в созданном отчете:

Bulleted list with the items apples, oranges, and mango. Mango is a hyperlink.

Создание списка по одному элементу за один раз

Вместо указания всего списка как массива можно указать каждый элемент списка как mlreportgen.dom.ListItem и добавить ListItem объекты в mlreportgen.UnorderedList или mlreportgen.OrderedList объект. Этот подход полезен, если элементы списка содержат несколько абзацев, сочетание абзацев и таблиц или другие комбинации элементов документа.

Например, этот код создает список, в котором элементы списка состоят из абзаца и таблицы.

import mlreportgen.dom.*
d = Document('magicsquares','html');

ol = UnorderedList();
item1 = ListItem(Paragraph('magic(2)'));
append(item1,Table(magic(2)));
append(ol,item1);
item2 = ListItem(Paragraph('magic(3)'));
append(item2,Table(magic(3)));
append(ol,item2);
append(d,ol);

close(d);
rptview(d);

Вот список в созданном отчете:

A bulleted list with two items. Each list item is a call to the magic function, followed by the output.

Создание многоуровневого списка

Многоуровневый список - это список, содержащий вложенные списки. Можно вложить любую комбинацию упорядоченных и неупорядоченных списков до девяти уровней вложенности.

Для создания многоуровневых списков можно использовать следующие подходы. Создаваемый список выглядит одинаково для каждого подхода, но представления DOM API различаются.

  • Создайте многоуровневый список из массивов ячеек, моделирующих иерархию списка. При таком подходе DOM API представляет сублист как дочерний элемент списка, который его содержит.

  • Создание многоуровневого списка по одному за раз с помощью mlreportgen.dom.UnorderedList, mlreportgen.dom.OrderedList, и mlreportgen.dom.ListItem объекты. Добавление подсписка к списку или элементу списка. При добавлении подсписка в список DOM API представляет подсписок как дочерний элемент списка. При добавлении сублиста к элементу списка DOM API представляет сублист как дочерний элемент элемента списка.

Создание многоуровневого списка из массивов ячеек

Чтобы создать многоуровневый список из массивов ячеек, используйте один из следующих подходов:

  • Если подсписок является неупорядоченным списком, его можно представить в виде массива 1 на n ячеек, который является элементом массива 1 на n ячеек, представляющего список, имеющий один уровень вверх. Например, этот код представляет подсписок как массив ячеек, который является третьим элементом массива ячеек, который представляет список верхнего уровня.

    import mlreportgen.dom.*;
    d = Document('nestedListReport','html');
    
    topList = OrderedList({...
        'Start MATLAB',...
        'Create a rank 3 or 4 magic square',...
            {'magic(3)',...  % sublist is third element
            'magic(4)'},...
        'Close MATLAB'});
    append(d,topList);
    
    close(d);
    rptview(d);

    Вот список в созданном отчете:

    A nested list with three items. A bulleted sublist is nested under the second item of the top-level list.

  • Если подсписок является упорядоченным списком, создайте mlreportgen.dom.OrderedList объект из массива ячеек 1 на n, представляющего подсписок. Включить OrderedList объект в качестве элемента массива ячеек, представляющего список на один уровень вверх. Например, этот код создает OrderedList объект из массива ячеек, который представляет подсписок и включает объект в качестве третьего элемента массива ячеек, который используется для создания списка верхнего уровня.

    import mlreportgen.dom.*;
    d = Document('orderedListReport','html');
    
    topList = OrderedList({'Start MATLAB', ...
        'Create a rank 3 or 4 magic square',...
        OrderedList({...  % sublist is third element
            'magic(3)',...
            'magic(4)'}),...
        'Close MATLAB'});
    
    append(d,topList);
    
    close(d);
    rptview(d);

    Вот список в созданном отчете:

    A numbered list with three items. A numbered sublist is nested under the second item of the top-level list.

В двух предыдущих примерах DOM API представляет сублист в качестве третьего нижестоящего элемента списка верхнего уровня. Для доступа к подсписку используйте Children свойства списка верхнего уровня.

topList.Children(3)

Создание многоуровневого списка Один список за раз

Если элементы подсписка содержат несколько абзацев, сочетание абзацев и таблиц или другие комбинации элементов документа, создайте mlreportgen.dom.ListItem объекты и добавление их к mlreportgen.dom.UnorderedList или mlreportgen.dom.OrderedList объект. Затем добавьте подсписок к списку или элементу списка.

В этом примере подсписок добавляется в список верхнего уровня в качестве третьего элемента списка. Элементы в подсписке состоят из текста и таблицы.

import mlreportgen.dom.*;
d = Document('orderedListReport','html');

subList = UnorderedList;
subListItem1 = ListItem('>> magic(3)');
table = append(subListItem1,Table(magic(3)));
table.Width = '1in';
append(subList,subListItem1);
subListItem2 = ListItem('>> magic(4)');
table = append(subListItem2,Table(magic(4)));
table.Width = '1in';
append(subList,subListItem2);

topList = OrderedList();
append(topList,ListItem('Start MATLAB'));
append(topList,ListItem('Create a rank 3 or 4 magic square'));
append(topList,subList); % sublist is item 3 of topList
append(topList,ListItem('Close MATLAB'));
    
append(d,topList);

close(d);
rptview(d);

Вот список в созданном отчете:

A numbered list with three items. The sublist items contain text for the magic function call and a table for the output.

DOM API представляет сублист в качестве третьего нижестоящего элемента списка верхнего уровня. Для доступа к подсписку используйте Children свойства списка верхнего уровня.

topList.Children(3)

Вместо добавления сублиста к списку его можно добавить к элементу списка. В следующем примере подсписок добавляется ко второму элементу списка верхнего уровня. Созданный список выглядит так же, как и в предыдущем примере.

import mlreportgen.dom.*;
d = Document('orderedListReport','html');

topList = OrderedList({ ...
    'Start MATLAB', ...
    'Create a rank 3 or 4 magic square:', ...
    'Close MATLAB'});

subList = UnorderedList;
subListItem1 = ListItem('>> magic(3)');
table = append(subListItem1,Table(magic(3)));
table.Width = '1in';
append(subList,subListItem1);
subListItem2 = ListItem('>> magic(4)');
table = append(subListItem2,Table(magic(4)));
table.Width = '1in';
append(subList,subListItem2);

% Append the sublist to the second list item
topListItem2 = topList.Children(2);
append(topListItem2, subList);

append(d, topList);

close(d);
rptview(d);

DOM API представляет сублист как второй дочерний элемент второго элемента списка верхнего уровня. Для доступа к подсписку используйте следующий код:

topList.Children(2).Children(2)

Форматирование списка с использованием стилей, определенных шаблоном

Стили списков, определенные в шаблоне, можно использовать для указания отступа каждого уровня списка и типа маркера или числового формата, используемого для визуализации элементов списка.

Чтобы использовать определяемый шаблоном стиль списка для форматирования списка, задайте StyleName свойства списка с именем стиля. Например, этот код указывает, что имя стиля списка: MyListStyle.

import mlreportgen.dom.*;
d = Document('myListReport','html');

list = append(d,{'first item',...
    OrderedList({'step 1','step 2'}),'second item'});
list.StyleName = 'MyListStyle';

close(d);
rptview(d);

Для документов Microsoft ® Word указанный стиль списка должен быть определен в шаблоне, назначенном документу.

Примечание

Стиль списка определяет способ визуализации элементов списка независимо от типа списка. Если стиль списка не указан, интерфейс DOM API использует стиль списка по умолчанию, который визуализирует список в соответствии с типом. Например, стиль списка по умолчанию для неупорядоченных списков использует маркеры для визуализации элементов списка. При указании стиля списка для mlreportegen.dom.UnorderedList объект, нумерующий элементы, нумеруются элементы, даже если тип объекта не упорядочен.

Создание стиля списка слов

Сведения о создании шаблона Word см. в разделе Создание шаблона Microsoft Word.

Чтобы определить стиль списка в шаблоне Word, выполните следующие действия.

  1. Откройте файл шаблона Word одним из следующих способов:

    • В MATLAB на панели Текущая папка (Current Folder) щелкните правой кнопкой мыши файл шаблона и выберите Открыть вне MATLAB (Open Outside MATLAB).

    • За пределами MATLAB щелкните файл правой кнопкой мыши и выберите «Открыть».

      Примечание

      Не открывайте файл шаблона Word двойным щелчком. При двойном щелчке по файлу открывается файл документа Word, в котором используется шаблон.

  2. В Word на вкладке Главная в группе Абзац щелкните значок Многоуровневый список, а затем щелкните Определить новый стиль списка.

  3. Задайте имя стиля.

  4. Укажите форматирование, например стиль маркера и цвет для каждого уровня списка.

  5. Выберите Создать документы на основе этого шаблона.

  6. Нажмите кнопку ОК, чтобы сохранить шаблон.

Пример определения стиля списка Word см. в разделе Пользовательский список стилевых слов.

Создание стиля списка HTML или PDF

Чтобы определить стиль списка в каскадной таблице стилей (CSS) для шаблона HTML или PDF, используйте ul для неупорядоченных стилей списка и ol элемент для упорядоченных стилей списка. Можно использовать селектор нижестоящих элементов (>) для определения стилей многоуровневых списков. См. разделы Изменение стилей в шаблонах HTML и Изменение стилей в шаблонах PDF.

Например, этот код CSS определяет внешний вид двухуровневого неупорядоченного списка, который может содержать упорядоченные или неупорядоченные подсписки.

ul.MyUnorderedList {
	list-style-type:disc;
}

ul.MyUnorderedList > ul {
	list-style-type:circle;
}

ul.MyUnorderedList > ol {
	list-style-type:decimal;
}

Для получения информации о редактировании CSS см. документацию, такую как обучающая программа W3Schools.com CSS.

Программно форматировать список

Программно форматировать списки путем добавления объектов форматирования, таких как mlreportgen.dom.Color объект, к Style свойство mlreportgen.dom.UnorderedList, mlreportgen.dom.OrderedList, или mlreportgen.dom.ListItem объект. Форматирование, указанное в Style переопределяет стиль, определенный шаблоном.

Для списков в отчетах PDF и HTML можно указать тип маркера или тип нумерации с помощью mlreportgen.dom.ListStyleType форматировать объект.

Например, этот код создает зеленый упорядоченный список со строчными буквенными маркерами. Третий элемент списка имеет синий цвет и курсив.

import mlreportgen.dom.*
d = Document('myreport','html');

ol = OrderedList(["one", "two", "three"]);
ol.Style = {Color('Green'),ListStyleType('lower-alpha')};
ol.Children(3).Style = {Color('blue'),Italic(true)};
append(d,ol);

close(d);
rptview(d);

Вот список в созданном отчете:

A list with lowercase letters for bullets showing different colors and styles for list items

Объекты DOM, используемые для создания элементов списка, также можно форматировать с помощью свойств формата или объектов форматирования, связанных с объектом. Например, эти форматы кода mlreportgen.dom.Text прежде чем они будут использованы для создания списка.

import mlreportgen.dom.*
d = Document('myreport','html');

li1 = Text('red');
li1.Color = 'Red';
li2 = Text('blue');
li2.Color = 'Blue';

append(d,{li1, li2});

close(d);
rptview(d);

Вот список в созданном отчете:

Bulleted list where item one is red and item two is blue.

Форматирование элемента списка в многоуровневом списке

В зависимости от способа создания многоуровневого списка подсписок может быть дочерним элементом родительского списка или дочерним элементом предыдущего элемента списка в родительском списке. См. раздел Создание многоуровневого списка.

Если сублист является дочерним элементом элемента списка родительского списка, сублист наследует форматирование от элемента списка. Например, этот код делает подсписок дочерним элементом второго элемента списка в родительском списке.

import mlreportgen.dom.*;
d = Document('nestedListReport','html');

parentlist = OrderedList();
li1 = ListItem('List Item 1');
li2 = ListItem('List Item 2');
li2.Style = [li2.Style {Color('red')}];

sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'});
append(li2,sublist);

append(parentlist,li1);
append(parentlist,li2);
append(d,parentlist);

close(d);
rptview(d);

Сублист наследует красный цвет от элемента списка, который его содержит.

Ordered list where first item is black and the second item and the sublist that it contains are red

Если вы не хотите, чтобы сублист наследовал форматирование от предыдущего элемента списка, отформатируйте абзац или текст в предыдущем элементе списка вместо форматирования элемента списка. Например:

import mlreportgen.dom.*;
d = Document('nestedListReport','html');

parentlist = OrderedList();
li1 = ListItem('List Item 1');
txt = Text('List Item 2');
txt.Color = 'red';
li2 = ListItem(txt);

sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'});

append(parentlist,li1);
append(parentlist,li2);
append(parentlist,sublist);

append(d,parentlist);

close(d);
rptview(d);
Можно также создать сублист как дочерний элемент родительского списка, а не как дочерний элемент предыдущего элемента списка в родительском списке. Если сублист является потомком родительского списка, он не наследует форматирование предыдущего элемента списка в родительском списке. Например, этот код делает подсписок дочерним элементом родительского списка:
import mlreportgen.dom.*;
d = Document('nestedListReport','html');

parentlist = OrderedList();
li1 = ListItem('List Item 1');
li2 = ListItem('List Item 2');
li2.Style = [li2.Style {Color('red')}];

sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'});

append(parentlist,li1);
append(parentlist,li2);
append(parentlist,sublist);

append(d,parentlist);

close(d);
rptview(d);

Второй элемент списка родительского списка имеет красный цвет, а подсписок - черный.

Ordered list where the first list item is black, the second list item is red, and the sublist is black

См. также

| | |

Связанные темы