Añadir ecuaciones matemáticas a presentaciones PowerPoint en Python

Descripción general

PowerPoint almacena las ecuaciones como Office Math Markup Language (OMML). Con Aspose.Slides for Python a través de .NET, puedes crear el mismo tipo de contenido matemático de forma programada: fracciones, radicales, funciones, límites, operadores N-arios, matrices, arrays y bloques matemáticos con formato.

En PowerPoint, los usuarios normalmente añaden ecuaciones desde Insert > Equation:

Pestaña Insertar de PowerPoint con el comando Ecuación seleccionado

El resultado es texto matemático editable en la diapositiva:

Una diapositiva de PowerPoint que contiene una ecuación matemática editable

Aspose.Slides construye ese texto matemático mediante tres objetos principales:

La mayoría de los ejemplos a continuación utilizan MathematicalText y los métodos fluidos de IMathElement para mantener el código corto y legible.

Para escenarios de exportación a MathML, consulta Export Math Equations from Presentations in Python via .NET.

Crear una ecuación

Este ejemplo crea una forma matemática y añade el teorema de Pitágoras:

La ecuación c al cuadrado es igual a a al cuadrado más b al cuadrado

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    equation = (
        math.MathematicalText("c")
        .set_superscript("2")
        .join("=")
        .join(math.MathematicalText("a").set_superscript("2"))
        .join("+")
        .join(math.MathematicalText("b").set_superscript("2"))
    )

    math_paragraph.add(equation)

    presentation.save("pythagorean-theorem.pptx", slides.export.SaveFormat.PPTX)

Añadir fracciones

Utiliza divide para crear una fracción. Puedes elegir un estilo de fracción con MathFractionTypes.

Una fracción matemática sesgada que muestra uno dividido por x

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    fraction = math.MathematicalText("1").divide("x", math.MathFractionTypes.SKEWED)

    math_paragraph.add(math.MathBlock(fraction))

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

Para una fracción apilada, utiliza MathFractionTypes.BAR:

stacked_fraction = math.MathematicalText("x + 1").divide("y - 1", math.MathFractionTypes.BAR)

Añadir radicales

Utiliza radical para crear una raíz cuadrada, cúbica u otra raíz. El elemento actual se convierte en la base y el argumento en el grado.

Una expresión radical de n-ésima raíz con x bajo el símbolo radical

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    radical = math.MathematicalText("x").radical("n")

    math_paragraph.add(math.MathBlock(radical))

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

Añadir funciones y límites

Utiliza as_argument_of_function o function para funciones como sin(x), log(x) o nombres de funciones personalizados. Para límites, coloca lim en un MathLimit o utiliza set_lower_limit.

El límite de x cuando x tiende a infinito

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    limit = (
        math.MathematicalText("lim")
        .set_lower_limit("x\u2192\u221E")
        .function("x")
    )

    math_paragraph.add(math.MathBlock(limit))

    presentation.save("functions-and-limits.pptx", slides.export.SaveFormat.PPTX)

Para un nombre de función personalizado, haz que el nombre de la función sea el elemento actual:

custom_function = math.MathematicalText("f").function("x + 1")

Añadir operadores N-arios e integrales

Utiliza nary para sumas, uniones, intersecciones y otros operadores de gran tamaño. Utiliza integral para integrales. Ambos métodos permiten establecer límites inferior y superior.

Una sumatoria con límites inferior y superior

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    summation_base = (
        math.MathematicalText("x")
        .set_superscript("k")
        .join(math.MathematicalText("a").set_superscript("n-k"))
    )

    summation = summation_base.nary(math.MathNaryOperatorTypes.SUMMATION, "k=0", "n")

    math_paragraph.add(math.MathBlock(summation))

    presentation.save("nary-operators.pptx", slides.export.SaveFormat.PPTX)

Los operadores N-arios son para operadores grandes con límites opcionales. Los operadores simples como +, - y = se añaden normalmente como MathematicalText y se unen en la expresión.

Para una integral, utiliza integral:

integral_base = math.MathematicalText("x").join(math.MathematicalText("dx").to_box())
integral = integral_base.integral(math.MathIntegralTypes.SIMPLE, "0", "1")

Añadir matrices

Utiliza MathMatrix para filas y columnas. Las matrices no incluyen corchetes por defecto, por lo que debes encerrar la matriz cuando necesites paréntesis, corchetes o llaves.

Una matriz matemática de dos filas con una celda vacía

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    matrix = math.MathMatrix(2, 3)
    matrix[0, 0] = math.MathematicalText("1")
    matrix[0, 1] = math.MathematicalText("x")
    matrix[1, 0] = math.MathematicalText("x")
    matrix[1, 1] = math.MathematicalText("2")
    matrix[1, 2] = math.MathematicalText("y")

    math_paragraph.add(math.MathBlock(matrix))

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

Añadir arrays de ecuaciones

Utiliza to_math_array cuando necesites ecuaciones alineadas o una pila vertical de expresiones.

Un array matemático vertical con x sobre y

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 140)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    equation_array = (
        math.MathematicalText("x")
        .join("y")
        .to_math_array()
    )

    math_paragraph.add(math.MathBlock(equation_array))

    presentation.save("equation-array.pptx", slides.export.SaveFormat.PPTX)

Añadir funciones trigonométricas

Utiliza as_argument_of_function cuando el argumento es el elemento actual y se conoce el nombre de la función.

La función trigonométrica cos aplicada a 2x

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    cosine = math.MathematicalText("2x").as_argument_of_function(
        math.MathFunctionsOfOneArgument.COS
    )

    math_paragraph.add(math.MathBlock(cosine))

    presentation.save("trigonometric-function.pptx", slides.export.SaveFormat.PPTX)

Añadir subíndices y superíndices

Utiliza los asistentes de subíndice y superíndice para índices y potencias. Cuando los índices deben aparecer en el lado izquierdo de la base, usa set_sub_superscript_on_the_left.

Una Y mayúscula con subíndice izquierdo 1 y superíndice n

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    scripts = math.MathematicalText("Y").set_sub_superscript_on_the_left("1", "n")

    math_paragraph.add(math.MathBlock(scripts))

    presentation.save("subscript-superscript.pptx", slides.export.SaveFormat.PPTX)

Añadir delimitadores

Utiliza enclose para colocar una expresión dentro de delimitadores. También puedes establecer un carácter separador para expresiones delimitadas que contengan varios elementos.

Una expresión delimitadora que contiene x, y, y z separados por barras verticales

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    delimiter = (
        math.MathematicalText("x")
        .join("y")
        .join("z")
        .enclose("<", ">")
    )
    delimiter.separator_character = "|"

    math_paragraph.add(math.MathBlock(delimiter))

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

Añadir un cuadro con borde

Utiliza to_border_box cuando la ecuación misma debe estar enmarcada.

Una ecuación en cuadro que muestra a al cuadrado es igual a b al cuadrado más c al cuadrado

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    boxed_equation = (
        math.MathematicalText("a")
        .set_superscript("2")
        .join("=")
        .join(math.MathematicalText("b").set_superscript("2"))
        .join("+")
        .join(math.MathematicalText("c").set_superscript("2"))
        .to_border_box()
    )

    math_paragraph.add(math.MathBlock(boxed_equation))

    presentation.save("border-box.pptx", slides.export.SaveFormat.PPTX)

Agrupar términos

Utiliza group para colocar un carácter de agrupación encima o debajo de una expresión. Añade un límite para etiquetar los términos agrupados.

La expresión x más y agrupada con la etiqueta cualquier texto debajo

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 120)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    grouped = (
        math.MathematicalText("x + y")
        .group(chr(0x23DF), math.MathTopBotPositions.BOTTOM, math.MathTopBotPositions.TOP)
        .set_lower_limit("any text")
    )

    math_paragraph.add(math.MathBlock(grouped))

    presentation.save("grouped-terms.pptx", slides.export.SaveFormat.PPTX)

Formato de elementos matemáticos

Utiliza los asistentes de formato solo donde clarifiquen la fórmula. Por ejemplo, overbar coloca una barra sobre un elemento matemático.

Una expresión matemática ABC con una barra superior

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    math_shape = slide.shapes.add_math_shape(20, 20, 700, 100)
    math_paragraph = math_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    overbar = math.MathematicalText("ABC").overbar()

    math_paragraph.add(math.MathBlock(overbar))

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

Referencia rápida

Tarea API principal
Crear texto matemático MathematicalText
Combinar elementos IMathElement.join
Crear fracciones IMathElement.divide
Añadir superíndice o subíndice set_superscript, set_subscript
Añadir funciones function, as_argument_of_function
Añadir radicales radical
Añadir límites set_lower_limit, set_upper_limit
Añadir scripts del lado izquierdo set_sub_superscript_on_the_left
Añadir sumas e integrales nary, integral
Añadir matrices MathMatrix
Añadir arrays de ecuaciones to_math_array
Añadir delimitadores enclose
Añadir barras y bordes overbar, to_border_box
Agrupar términos group

Preguntas frecuentes

¿Puedo editar una ecuación existente de PowerPoint?

Sí. Abre la presentación, encuentra la forma que contiene un MathPortion, obtén su MathParagraph y actualiza los bloques matemáticos en ese párrafo.

¿Se guardan las ecuaciones como matemáticas editables de PowerPoint?

Sí. Cuando guardas en PPTX, Aspose.Slides escribe la ecuación como contenido matemático de Office editable.

¿Puedo exportar ecuaciones a LaTeX?

Sí. Obtén el MathParagraph de la ecuación a partir de su MathPortion, y llama a MathParagraph.to_latex para exportarlo directamente. Para un ejemplo completo, consulta Export Math Equations from Presentations in Python via .NET.