Управление верхним и нижним индексом в Python

Добавить верхний и нижний индекс

Вы можете добавить текст в верхнем и нижнем индексе к любой части абзаца. В Aspose.Slides используйте свойство escapement класса PortionFormat для управления этим.

escapement — это процент от -100% до 100%:

  • > 0 → верхний индекс (например, 25% = небольшое поднятие; 100% = полный верхний индекс)
  • 0 → базовая линия (нет верхнего/нижнего индекса)
  • < 0 → нижний индекс (например, -25% = небольшое понижение; -100% = полный нижний индекс)

Шаги:

  1. Создайте Presentation и получите слайд.
  2. Добавьте прямоугольный AutoShape и получите доступ к его TextFrame.
  3. Очистите существующие абзацы.
  4. Для верхнего индекса: создайте абзац и часть, установите portion.portion_format.escapement в значение от 0 и 100, задайте текст и добавьте часть.
  5. Для нижнего индекса: создайте другой абзац и часть, установите escapement в значение от -100 и 0, задайте текст и добавьте часть.
  6. Сохраните презентацию в формате PPTX.
import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    # Получить слайд.
    slide = presentation.slides[0]

    # Создать текстовое поле.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 200, 100)
    shape.text_frame.paragraphs.clear()

    # Создать абзац для текста в верхнем индексе.
    superscript_paragraph = slides.Paragraph()

    # Создать текстовый фрагмент с обычным текстом.
    portion1 = slides.Portion()
    portion1.text = "SlideTitle"
    superscript_paragraph.portions.add(portion1)

    # Создать текстовый фрагмент с текстом в верхнем индексе.
    superscript_portion = slides.Portion()
    superscript_portion.portion_format.escapement = 30
    superscript_portion.text = "TM"
    superscript_paragraph.portions.add(superscript_portion)

    # Создать абзац для текста в нижнем индексе.
    subscript_paragraph = slides.Paragraph()

    # Создать текстовый фрагмент с обычным текстом.
    portion2 = slides.Portion()
    portion2.text = "a"
    subscript_paragraph.portions.add(portion2)

    # Создать текстовый фрагмент с текстом в нижнем индексе.
    subscript_portion = slides.Portion()
    subscript_portion.portion_format.escapement = -25
    subscript_portion.text = "i"
    subscript_paragraph.portions.add(subscript_portion)

    # Добавить абзацы в текстовое поле.
    shape.text_frame.paragraphs.add(superscript_paragraph)
    shape.text_frame.paragraphs.add(subscript_paragraph)

    presentation.save("TestOut.pptx", slides.export.SaveFormat.PPTX)

Часто задаваемые вопросы

Могу ли я применять верхний/нижний индекс в таблицах и других контейнерах, а не только в обычных текстовых полях?

Да. Вы можете форматировать текст как верхний или нижний индекс внутри любого объекта, который предоставляет TextFrame (включая ячейки таблиц). Форматирование применяется к частям текста внутри этого фрейма.

Сохраняются ли верхний/нижний индекс при экспорте в PDF, HTML или изображения?

Да. Aspose.Slides сохраняет форматирование верхнего/нижнего индекса при экспорте в распространённые форматы, такие как PDF, HTML и raster images, поскольку конвейер рендеринга учитывает форматирование текста на уровне частей.

Могу ли я комбинировать верхний/нижний индекс с гиперссылками в одном текстовом фрагменте?

Да. Hyperlinks назначаются на уровне части (фрагмента), поэтому часть может одновременно иметь гиперссылку и быть отформатирована как верхний или нижний индекс.