Añadir ecuaciones matemáticas a presentaciones de PowerPoint en JavaScript

Descripción general

En PowerPoint es posible escribir una ecuación o fórmula matemática y mostrarla en la presentación. Para ello, diversos símbolos matemáticos están representados en PowerPoint y pueden añadirse al texto o a la ecuación. Para ello se utiliza el constructor de ecuaciones matemáticas en PowerPoint, que ayuda a crear fórmulas complejas como:

  • Fracción matemática
  • Radical matemático
  • Función matemática
  • Límites y funciones logarítmicas
  • Operaciones n‑arias
  • Matriz
  • Operadores grandes
  • Funciones seno, coseno

Para añadir una ecuación matemática en PowerPoint, se utiliza el menú Insert -> Equation:

todo:image_alt_text

Esto creará un texto matemático en XML que puede mostrarse en PowerPoint de la siguiente forma:

todo:image_alt_text

PowerPoint admite numerosos símbolos matemáticos para crear ecuaciones. Sin embargo, crear ecuaciones matemáticas complicadas en PowerPoint a menudo no produce un resultado de aspecto profesional. Los usuarios que necesitan crear presentaciones matemáticas con frecuencia recurren a soluciones de terceros para obtener fórmulas de buen aspecto.

Usando Aspose.Slide API, puede trabajar con ecuaciones matemáticas en presentaciones de PowerPoint de forma programada en C#. Cree nuevas expresiones matemáticas o modifique las ya existentes. La exportación de estructuras matemáticas a imágenes también está parcialmente soportada.

Cómo crear una ecuación matemática

Los elementos matemáticos se utilizan para construir cualquier construcción matemática con cualquier nivel de anidado. Una colección lineal de elementos matemáticos forma un bloque matemático representado por la clase MathBlock. La clase MathBlock es esencialmente una expresión, fórmula o ecuación matemática separada. MathPortion es una porción matemática, utilizada para contener texto matemático (no confundir con Portion). MathParagraph permite manipular un conjunto de bloques matemáticos. Las clases antes mencionadas son la clave para trabajar con ecuaciones matemáticas de PowerPoint a través de la API Aspose.Slides.

Veamos cómo crear la siguiente ecuación matemática mediante la API Aspose.Slides:

todo:image_alt_text

Para añadir una expresión matemática en la diapositiva, primero añada una forma que contendrá el texto matemático:

var pres = new aspose.slides.Presentation();
try {
    var mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Tras la creación, la forma ya contendrá un párrafo con una porción matemática por defecto. La clase MathPortion es una porción que contiene texto matemático interno. Para acceder al contenido matemático dentro de la MathPortion, consulte la variable MathParagraph:

var mathParagraph = mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph();

La clase MathParagraph permite leer, añadir, editar y eliminar bloques matemáticos (MathBlock), que consisten en una combinación de elementos matemáticos. Por ejemplo, cree una fracción y colóquela en la presentación:

var fraction = new aspose.slides.MathematicalText("x").divide("y");
mathParagraph.add(new aspose.slides.MathBlock(fraction));

Cada elemento matemático está representado por alguna clase que implementa la clase MathElement. Esta clase proporciona muchos métodos para crear expresiones matemáticas fácilmente. Puede crear una expresión matemática bastante compleja con una sola línea de código. Por ejemplo, el teorema de Pitágoras quedaría así:

var mathBlock = new aspose.slides.MathematicalText("c").setSuperscript("2").join("=").join(new aspose.slides.MathematicalText("a").setSuperscript("2")).join("+").join(new aspose.slides.MathematicalText("b").setSuperscript("2"));

Las operaciones de la clase MathElement están implementadas en cualquier tipo de elemento, incluida la MathBlock.

El fragmento de código completo:

var pres = new aspose.slides.Presentation();
try {
    var mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
    var mathParagraph = mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph();
    var fraction = new aspose.slides.MathematicalText("x").divide("y");
    mathParagraph.add(new aspose.slides.MathBlock(fraction));
    var mathBlock = new aspose.slides.MathematicalText("c").setSuperscript("2").join("=").join(new aspose.slides.MathematicalText("a").setSuperscript("2")).join("+").join(new aspose.slides.MathematicalText("b").setSuperscript("2"));
    mathParagraph.add(mathBlock);
    pres.save("math.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Tipos de elementos matemáticos

Las expresiones matemáticas se forman a partir de secuencias de elementos matemáticos. La secuencia de elementos se representa mediante un bloque matemático, y los argumentos de los elementos forman un anidamiento tipo árbol.

Existen muchos tipos de elementos matemáticos que pueden usarse para construir un bloque matemático. Cada uno de estos elementos puede ser incluido (agregado) en otro elemento. Es decir, los elementos son realmente contenedores de otros, formando una estructura tipo árbol. El tipo más sencillo es el elemento que no contiene otros elementos del texto matemático.

Cada tipo de elemento matemático implementa la clase MathElement, lo que permite usar el conjunto común de operaciones matemáticas sobre diferentes tipos de elementos.

Clase MathematicalText

La clase MathematicalText representa un texto matemático, el elemento subyacente de todas las construcciones matemáticas. El texto matemático puede representar operandos y operadores, variables y cualquier otro texto lineal.

Ejemplo: 𝑎=𝑏+𝑐

Clase MathFraction

La clase MathFraction especifica el objeto fracción, compuesto por un numerador y un denominador separados por una barra de fracción. La barra puede ser horizontal o diagonal, según las propiedades de la fracción. El objeto fracción también se usa para representar la función de apilamiento, que coloca un elemento sobre otro sin barra de fracción.

Ejemplo:

todo:image_alt_text

Clase MathRadical

La clase MathRadical especifica la función radical (raíz matemática), compuesta por una base y un grado opcional.

Ejemplo:

todo:image_alt_text

Clase MathFunction

La clase MathFunction especifica una función de un argumento. Contiene las propiedades: getName ‑ nombre de la función y getBase ‑ argumento de la función.

Ejemplo:

todo:image_alt_text

Clase MathNaryOperator

La clase MathNaryOperator especifica un objeto matemático N‑ario, como Summation o Integral. Consiste en un operador, una base (u operando) y límites superior e inferior opcionales. Ejemplos de operadores N‑arios son Summation, Union, Intersection, Integral.

Esta clase no incluye operadores simples como suma o resta. Estos se representan mediante un único elemento de texto ‑ MathematicalText.

Ejemplo:

todo:image_alt_text

Clase MathLimit

La clase MathLimit crea el límite superior o inferior. Especifica el objeto límite, formado por texto en la línea base y texto reducido inmediatamente encima o debajo de ella. Este elemento no incluye la palabra “lim”, pero permite colocar texto en la parte superior o inferior de la expresión. Así, la expresión

todo:image_alt_text

se crea mediante una combinación de los elementos MathFunction y MathLimit de la siguiente forma:

var funcName = new aspose.slides.MathLimit(new aspose.slides.MathematicalText("lim"), new aspose.slides.MathematicalText("𝑥→∞"));
var mathFunc = new aspose.slides.MathFunction(funcName, new aspose.slides.MathematicalText("𝑥"));

Clases MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

Las clases siguientes especifican un subíndice o un superíndice. Puede establecer subíndice y superíndice simultáneamente a la izquierda o a la derecha de un argumento, pero el subíndice o superíndice único solo se admite a la derecha. El MathSubscriptElement también puede usarse para establecer el grado matemático de un número.

Ejemplo:

todo:image_alt_text

Clase MathMatrix

La clase MathMatrix especifica el objeto Matriz, compuesto por elementos hijos dispuestos en una o más filas y columnas. Es importante señalar que las matrices no poseen delimitadores incorporados. Para colocar la matriz entre corchetes debe usarse el objeto delimitador ‑ MathDelimiter. Los argumentos nulos pueden usarse para crear huecos en las matrices.

Ejemplo:

todo:image_alt_text

Clase MathArray

La clase MathArray especifica una matriz vertical de ecuaciones o cualquier objeto matemático.

Ejemplo:

todo:image_alt_text

Formato de elementos matemáticos

  • Clase MathBorderBox: dibuja un borde rectangular u otro alrededor del MathElement.
    Ejemplo: todo:image_alt_text

  • Clase MathBox: especifica el empaquetado lógico del elemento matemático. Por ejemplo, un objeto en caja puede servir como emulador de operador con o sin punto de alineación, como punto de ruptura de línea o agruparse de modo que no permita saltos de línea internos. Por ejemplo, el operador “==” debería enmarcarse para evitar rupturas de línea.

  • Clase MathDelimiter: especifica el objeto delimitador, compuesto por caracteres de apertura y cierre (paréntesis, llaves, corchetes, barras verticales, etc.) y uno o más elementos matemáticos dentro, separados por un carácter especificado. Ejemplos: (𝑥²); [𝑥²|𝑦²].
    Ejemplo: todo:image_alt_text

  • Clase MathAccent: especifica la función de acento, compuesta por una base y una marca diacrítica combinada.
    Ejemplo: 𝑎́.

  • Clase MathBar: especifica la función de barra, compuesta por un argumento base y una barra superior o inferior.
    Ejemplo: todo:image_alt_text

  • Clase MathGroupingCharacter: especifica un símbolo de agrupación encima o debajo de una expresión, usualmente para resaltar relaciones entre elementos.
    Ejemplo: todo:image_alt_text

Operaciones matemáticas

Cada elemento y expresión matemática (a través de MathBlock) implementa la clase MathElement. Permite usar operaciones sobre la estructura existente y formar expresiones más complejas. Todas las operaciones disponen de dos conjuntos de parámetros: MathElement o cadena de texto. Las instancias de la clase MathematicalText se crean implícitamente a partir de las cadenas especificadas cuando se usan argumentos de tipo cadena. Las operaciones matemáticas disponibles en Aspose.Slides se enumeran a continuación.

Método Join

  • join(String)
  • join(MathElement)

Une un elemento matemático y forma un bloque matemático. Por ejemplo:

var element1 = new aspose.slides.MathematicalText("x");
var element2 = new aspose.slides.MathematicalText("y");
var block = element1.join(element2);

Método Divide

  • divide(String)
  • divide(MathElement)
  • divide(String, MathFractionTypes)
  • divide(MathElement, MathFractionTypes)

Crea una fracción del tipo especificado con este numerador y denominador indicado. Por ejemplo:

var numerator = new aspose.slides.MathematicalText("x");
var fraction = numerator.divide("y", aspose.slides.MathFractionTypes.Linear);

Método Enclose

  • enclose()
  • enclose(Char, Char)

Encierra el elemento en los caracteres especificados, como paréntesis u otro carácter de marco.

/**
 * <p>
 * Enclose a math element in parenthesis
 * </p>
 */
public IMathDelimiter enclose();

/**
 * <p>
 * Encloses this element in specified characters such as parenthesis or another characters as framing
 * </p>
 */
public IMathDelimiter enclose(char beginningCharacter, char endingCharacter);

Por ejemplo:

var delimiter = new aspose.slides.MathematicalText("x").enclose('[', ']');
var delimiter2 = new aspose.slides.MathematicalText("elem1").join("elem2").enclose();

Método Function

  • function(String)
  • function(MathElement)

Toma una función de un argumento usando el objeto actual como nombre de la función.

/**
 * <p>
 * Takes a function of an argument using this instance as the function name
 * </p>
 */
public IMathFunction function(MathElement functionArgument);

/**
 * <p>
 * Takes a function of an argument using this instance as the function name
 * </p>
 */
public IMathFunction function(String functionArgument);

Por ejemplo:

var func = new aspose.slides.MathematicalText("sin").function("x");

Método AsArgumentOfFunction

  • asArgumentOfFunction(String)
  • asArgumentOfFunction(MathElement)
  • asArgumentOfFunction(MathFunctionsOfOneArgument)
  • asArgumentOfFunction(MathFunctionsOfTwoArguments, MathElement)
  • asArgumentOfFunction(MathFunctionsOfTwoArguments, String)

Toma la función especificada usando la instancia actual como argumento. Puede:

Por ejemplo:

var funcName = new aspose.slides.MathLimit(new aspose.slides.MathematicalText("lim"), new aspose.slides.MathematicalText("𝑛→∞"));
var func1 = new aspose.slides.MathematicalText("2x").asArgumentOfFunction(funcName);
var func2 = new aspose.slides.MathematicalText("x").asArgumentOfFunction("sin");
var func3 = new aspose.slides.MathematicalText("x").asArgumentOfFunction(aspose.slides.MathFunctionsOfOneArgument.Sin);
var func4 = new aspose.slides.MathematicalText("x").asArgumentOfFunction(aspose.slides.MathFunctionsOfTwoArguments.Log, "3");

Métodos SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft

  • setSubscript(String)
  • setSubscript(MathElement)
  • setSuperscript(String)
  • setSuperscript(MathElement)
  • setSubSuperscriptOnTheRight(String, String)
  • setSubSuperscriptOnTheRight(MathElement, MathElement)
  • setSubSuperscriptOnTheLeft(String, String)
  • setSubSuperscriptOnTheLeft(MathElement, MathElement)

Establece subíndice y superíndice. Puede establecer ambos simultáneamente a la izquierda o a la derecha del argumento, pero el subíndice o superíndice único solo se admite a la derecha. El Superscript también puede usarse para establecer el grado matemático de un número.

Ejemplo:

var script = new aspose.slides.MathematicalText("y").setSubSuperscriptOnTheLeft("2x", "3z");

Método Radical

  • radical(String)
  • radical(MathElement)

Especifica la raíz matemática del grado dado a partir del argumento indicado.

Ejemplo:

var radical = new aspose.slides.MathematicalText("x").radical("3");

Métodos SetUpperLimit y SetLowerLimit

  • setUpperLimit(String)
  • setUpperLimit(MathElement)
  • setLowerLimit(String)
  • setLowerLimit(MathElement)

Toma el límite superior o inferior. Aquí, el límite superior e inferior simplemente indican la posición del argumento respecto a la base.

Consideremos una expresión:

todo:image_alt_text

Tales expresiones pueden crearse mediante una combinación de las clases MathFunction y MathLimit, y las operaciones del MathElement de la siguiente forma:

var mathExpression = new aspose.slides.MathematicalText("lim").setLowerLimit("x→∞").function("x");

Métodos Nary e Integral

  • nary(MathNaryOperatorTypes, MathElement, MathElement)
  • nary(MathNaryOperatorTypes, String, String)
  • integral(MathIntegralTypes)
  • integral(MathIntegralTypes, MathElement, MathElement)
  • integral(MathIntegralTypes, String, String)
  • integral(MathIntegralTypes, MathElement, MathElement, MathLimitLocations)
  • integral(MathIntegralTypes, String, String, MathLimitLocations)

Los métodos nary e integral crean y devuelven el operador N‑ario representado por el tipo MathNaryOperator. En el método nary, la enumeración MathNaryOperatorTypes especifica el tipo de operador: sumatorio, unión, etc., sin incluir integrales. En el método Integral, existe la operación especializada Integral con la enumeración de tipos MathIntegralTypes.

Ejemplo:

var baseArg = new aspose.slides.MathematicalText("x").join(new aspose.slides.MathematicalText("dx").toBox());
var integral = baseArg.integral(aspose.slides.MathIntegralTypes.Simple, "0", "1");

Método ToMathArray

toMathArray coloca los elementos en una matriz vertical. Si esta operación se llama sobre una instancia de MathBlock, todos los elementos hijos se colocarán en la matriz devuelta.

Ejemplo:

var arrayFunction = new aspose.slides.MathematicalText("x").join("y").toMathArray();

Operaciones de formato: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox

  • El método accent establece un signo de acento (un carácter sobre el elemento).
  • Los métodos overbar y underbar establecen una barra en la parte superior o inferior.
  • El método group agrupa usando un carácter de agrupación como una llave inferior u otro.
  • El método toBorderBox coloca el elemento en un borde‑caja.
  • El método toBox coloca el elemento en una caja no visual (agrupación lógica).

Ejemplos:

var accent = new aspose.slides.MathematicalText("x").accent('̃');
var bar = new aspose.slides.MathematicalText("x").overbar();
var groupChr = new aspose.slides.MathematicalText("x").join("y").join("z").group('⏡', aspose.slides.MathTopBotPositions.Bottom, aspose.slides.MathTopBotPositions.Top);
var borderBox = new aspose.slides.MathematicalText("x+y+z").toBorderBox();
var boxedOperator = new aspose.slides.MathematicalText(":=").toBox();

FAQ

¿Cómo puedo añadir una ecuación matemática a una diapositiva de PowerPoint?

Para añadir una ecuación matemática, debe crear un objeto MathShape, que contiene automáticamente una porción matemática. Luego, recupere el MathParagraph de la MathPortion y añada objetos MathBlock a él.

¿Es posible crear expresiones matemáticas complejas y anidadas?

Sí, Aspose.Slides permite crear expresiones matemáticas complejas mediante la anidación de MathBlocks. Cada elemento matemático hereda la clase MathElement, lo que permite aplicar operaciones (Join, Divide, Enclose, etc.) para combinar elementos en estructuras más complejas.

¿Cómo puedo actualizar o modificar una ecuación matemática existente?

Para actualizar una ecuación, debe acceder a los MathBlocks existentes a través del MathParagraph. Luego, usando métodos como Join, Divide, Enclose y otros, puede modificar los elementos individuales de la ecuación. Después de la edición, guarde la presentación para aplicar los cambios.