Работа со списками

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

Каждый список может иметь до 9 уровней, и свойства форматирования, такие как стиль цифр, начальное значение, отступ, позиция табуляции и т.д., определяются отдельно для каждого уровня.

В Aspose.Words работа со списками представлена модулем Lists. Однако объект List всегда принадлежит коллекции ListCollection.

В этом разделе описывается, как программно работать со списками, используя Aspose.Words.

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

Aspose.Words позволяет легко создавать списки, применяя форматирование списка. DocumentBuilder предоставляет свойство DocumentBuilder.list_format, которое возвращает объект ListFormat. У этого объекта есть несколько методов для начала и завершения списка, а также для увеличения/уменьшения отступа. В Microsoft Word есть два основных типа списков: маркированные и нумерованные.

Маркер или число и форматирование добавляются к текущему абзацу и всем последующим абзацам, созданным с использованием DocumentBuilder, пока не будет вызван ListFormat.remove_numbers для остановки форматирования маркированного списка.

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

  • Чтобы увеличить уровень списка текущего абзаца на один уровень, вызовите ListFormat.list_indent
  • Чтобы уменьшить уровень списка текущего абзаца на один уровень, вызовите ListFormat.list_outdent

Методы изменяют уровень списка и применяют свойства форматирования нового уровня.

В приведенном ниже примере показано, как создать многоуровневый список.

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.list_format.apply_number_default()
builder.writeln("Item 1")
builder.writeln("Item 2")
builder.list_format.list_indent()
builder.writeln("Item 2.1")
builder.writeln("Item 2.2")
builder.list_format.list_indent()
builder.writeln("Item 2.2.1")
builder.writeln("Item 2.2.2")
builder.list_format.list_outdent()
builder.writeln("Item 2.3")
builder.list_format.list_outdent()
builder.writeln("Item 3")
builder.list_format.remove_numbers()
doc.save(docs_base.artifacts_dir + "DocumentFormatting.multilevel_list_formatting.docx")

Укажите форматирование для уровня списка

Объекты уровня списка создаются автоматически при создании списка. Используйте свойства и методы класса ListLevel для управления форматированием отдельных уровней списка.

Список перезапусков для каждого раздела

Вы можете перезапустить список для каждого раздела, используя свойство is_restart_at_each_section property. Обратите внимание, что этот параметр поддерживается только в форматах документов RTF, DOC и DOCX. Этот параметр будет записан в DOCX только в том случае, если OoxmlCompliance выше, чем Ecma376.

В следующем примере кода показано, как создать список и перезапустить его для каждого раздела:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
doc.lists.add(aw.lists.ListTemplate.NUMBER_DEFAULT)
list = doc.lists[0]
list.is_restart_at_each_section = True
builder = aw.DocumentBuilder(doc)
builder.list_format.list = list
for i in range(1, 45) :
builder.writeln(f"List Item {i}")
if i == 15 :
builder.insert_break(aw.BreakType.SECTION_BREAK_NEW_PAGE)
# IsRestartAtEachSection will be written only if compliance is higher then OoxmlComplianceCore.ecma_376.
options = aw.saving.OoxmlSaveOptions()
options.compliance = aw.saving.OoxmlCompliance.ISO29500_2008_TRANSITIONAL
doc.save(docs_base.artifacts_dir + "WorkingWithList.restart_list_at_each_section.docx", options)