Ecuaciones Matemáticas de PowerPoint

Descripción General

En PowerPoint, es posible escribir una ecuación o fórmula matemática y mostrarla en la presentación. Para ello, varios símbolos matemáticos están representados en PowerPoint y pueden ser añadidos al texto o ecuación. Para eso, 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ú Insertar -> Ecuación:

todo:image_alt_text

Esto creará un texto matemático en XML que puede ser mostrado en PowerPoint de la siguiente manera:

todo:image_alt_text

PowerPoint admite muchos símbolos matemáticos para crear ecuaciones matemáticas. Sin embargo, crear ecuaciones matemáticas complicadas en PowerPoint a menudo no proporciona un buen resultado profesional. Los usuarios que necesitan crear presentaciones matemáticas frecuentemente recurren al uso de soluciones de terceros para crear fórmulas matemáticas atractivas.

Usando Aspose.Slide API, puedes trabajar con ecuaciones matemáticas en las presentaciones de PowerPoint programáticamente en C++. Crea nuevas expresiones matemáticas o edita las previamente creadas. La exportación de estructuras matemáticas a imágenes también se admite parcialmente.

Cómo Crear una Ecuación Matemática

Los elementos matemáticos son utilizados para construir cualquier construcción matemática con cualquier nivel de anidación. 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 matemática separada, fórmula o ecuación. MathPortion es una porción matemática, utilizada para contener texto matemático (no mezclar con Portion). La clase MathParagraph permite manipular un conjunto de bloques matemáticos. Las clases mencionadas son la clave para trabajar con ecuaciones matemáticas de PowerPoint a través de la API de Aspose.Slides.

Veamos cómo podemos crear la siguiente ecuación matemática a través de la API de Aspose.Slides:

todo:image_alt_text

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

auto pres = System::MakeObject<Presentation>();
auto mathShape = pres->get_Slides()->idx_get(0)->get_Shapes()->AddMathShape(0.0f, 0.0f, 720.0f, 150.0f);

Después de crearla, la forma ya contendrá un párrafo con una porción matemática por defecto. La clase MathPortion es una porción que contiene un texto matemático dentro. Para acceder al contenido matemático dentro de MathPortion, refiérete a la variable MathParagraph:

 auto mathParagraph = (System::AsCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0)))->get_MathParagraph();

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, crea una fracción y colócala en la presentación:

auto fraction = System::MakeObject<MathematicalText>(u"x")->Divide(u"y");
mathParagraph->Add(System::MakeObject<MathBlock>(fraction));

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

auto mathBlock = System::MakeObject<MathematicalText>(u"c")
  ->SetSuperscript(u"2")
  ->Join(u"=")
  ->Join(System::MakeObject<MathematicalText>(u"a")->SetSuperscript(u"2"))
  ->Join(u"+")
  ->Join(System::MakeObject<MathematicalText>(u"b")->SetSuperscript(u"2"));

Las operaciones de la interfaz IMathElement están implementadas en cualquier tipo de elemento, incluyendo el MathBlock.

El código fuente completo del ejemplo:

auto pres = System::MakeObject<Presentation>();
auto mathShape = pres->get_Slides()->idx_get(0)->get_Shapes()->AddMathShape(0.0f, 0.0f, 720.0f, 150.0f);
auto mathParagraph = (System::AsCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0)))->get_MathParagraph();

auto fraction = System::MakeObject<MathematicalText>(u"x")->Divide(u"y");
mathParagraph->Add(System::MakeObject<MathBlock>(fraction));

auto mathBlock = System::MakeObject<MathematicalText>(u"c")
  ->SetSuperscript(u"2")
  ->Join(u"=")
  ->Join(System::MakeObject<MathematicalText>(u"a")->SetSuperscript(u"2"))
  ->Join(u"+")->Join(System::MakeObject<MathematicalText>(u"b")->SetSuperscript(u"2"));
mathParagraph->Add(mathBlock);

pres->Save(u"math.pptx", SaveFormat::Pptx);

Tipos de Elementos Matemáticos

Las expresiones matemáticas se forman a partir de secuencias de elementos matemáticos. La secuencia de elementos matemáticos es representada por un bloque matemático, y los argumentos de los elementos matemáticos forman una anidación en forma de árbol.

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

Cada tipo de elemento matemático implementa la interfaz IMathElement, permitiendo el uso del conjunto común de operaciones matemáticas en diferentes tipos de elementos matemáticos.

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, que consiste en un numerador y un denominador separados por una barra de fracción. La barra de fracción puede ser horizontal o diagonal, dependiendo de las propiedades de la fracción. El objeto fracción también se utiliza 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), que consiste en una base y un grado opcional.

Ejemplo:

todo:image_alt_text

Clase MathFunction

La clase MathFunction especifica una función de un argumento. Contiene métodos: get_Name()- nombre de la función y get_Base() - argumento de la función.

Ejemplo:

todo:image_alt_text

Clase MathNaryOperator

La clase MathNaryOperator especifica un objeto matemático N-ario, como Suma e Integral. Consiste en un operador, una base (o operando) y límites superiores e inferiores opcionales. Ejemplos de operadores N-arios son Suma, Unión, Intersección, Integral.

Esta clase no incluye operadores simples como suma, resta, etc. Están representados por 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, que consiste en texto en la línea base y texto de tamaño reducido inmediatamente arriba o abajo. 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 elementos MathFunction y MathLimit de esta manera:

auto funcName = System::MakeObject<MathLimit>(System::MakeObject<MathematicalText>(u"lim"), System::MakeObject<MathematicalText>(u"𝑥→∞"));
auto mathFunc = System::MakeObject<MathFunction>(funcName, System::MakeObject<MathematicalText>(u"𝑥"));

Clases MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

Las siguientes clases especifican un subíndice inferior o un índice superior. Puedes establecer un subscrito y un superíndice al mismo tiempo a la izquierda o a la derecha de un argumento, pero el subscrito o superíndice único solo se admite en el lado derecho. El MathSubscriptElement también puede ser utilizado para establecer el grado matemático de un número.

Ejemplo:

todo:image_alt_text

Clase MathMatrix

La clase MathMatrix especifica el objeto Matriz, que consiste en elementos hijos dispuestos en una o más filas y columnas. Es importante notar que las matrices no tienen delimitadores incorporados. Para colocar la matriz entre paréntesis, debes usar el objeto delimitador - IMathDelimiter. Los argumentos nulos pueden ser usados para crear espacios en las matrices.

Ejemplo:

todo:image_alt_text

Clase MathArray

La clase MathArray especifica un array vertical de ecuaciones u otros objetos matemáticos.

Ejemplo:

todo:image_alt_text

Formateo de Elementos Matemáticos

  • La clase MathBorderBox: dibuja un borde rectangular u otro alrededor del IMathElement.

    Ejemplo: todo:image_alt_text

  • La clase MathBox: especifica el enmarcado lógico (empaquetado) del elemento matemático. Por ejemplo, un objeto enmarcado puede servir como un emulador de operador con o sin un punto de alineación, servir como un punto de quiebre de línea, o ser agrupado de tal manera que no permita saltos de línea dentro. Por ejemplo, el operador “==” debe ser enmarcado para prevenir saltos de línea.

  • La clase MathDelimiter: especifica el objeto delimitador, que consiste en caracteres de apertura y cierre (como paréntesis, llaves, corchetes y barras verticales), y uno o más elementos matemáticos dentro, separados por un carácter especificado. Ejemplos: (𝑥2); [𝑥2|𝑦2].

    Ejemplo: todo:image_alt_text

  • La clase MathAccent: especifica la función de acento, que consiste en una base y un signo diacrítico que combina.

    Ejemplo: 𝑎́.

  • La clase MathBar: especifica la función de barra, que consiste en un argumento base y una barra superior o inferior.

    Ejemplo: todo:image_alt_text

  • La clase MathGroupingCharacter: especifica un símbolo de agrupamiento por encima o por debajo de una expresión, generalmente para resaltar las relaciones entre elementos.

    Ejemplo: todo:image_alt_text

Operaciones Matemáticas

Cada elemento matemático y expresión matemática (a través de MathBlock) implementa la interfaz IMathElement. Permite utilizar operaciones sobre la estructura existente y formar expresiones matemáticas más complejas. Todas las operaciones tienen dos conjuntos de parámetros: ya sea IMathElement o cadena como argumentos. Las instancias de la clase MathematicalText se crean implícitamente a partir de cadenas especificadas cuando se utilizan argumentos de cadena. Las operaciones matemáticas disponibles en Aspose.Slides se enumeran a continuación.

Método Join

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

auto element1 = System::MakeObject<MathematicalText>(u"x");
    
auto element2 = System::MakeObject<MathematicalText>(u"y");

auto block = element1->Join(element2);

Método Divide

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

auto numerator = System::MakeObject<MathematicalText>(u"x");
auto fraction = numerator->Divide(u"y", MathFractionTypes::Linear);

Método Enclose

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

/// <summary>
/// Encierra un elemento matemático en paréntesis
/// </summary>
virtual System::SharedPtr<IMathDelimiter> Enclose() = 0;

/// <summary>
/// Encierra este elemento en caracteres especificados, como paréntesis u otros caracteres como enmarcado
/// </summary>
virtual System::SharedPtr<IMathDelimiter> Enclose(char16_t beginningCharacter, char16_t endingCharacter) = 0;

Por ejemplo:

auto delimiter = System::MakeObject<MathematicalText>(u"x")->Enclose(u'[', u']');
auto delimiter2 = System::ExplicitCast<IMathElement>(System::MakeObject<MathematicalText>(u"elem1")->Join(u"elem2"))->Enclose();

Método Function

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

/// <summary>
/// Toma una función de un argumento utilizando esta instancia como el nombre de la función
/// </summary>
/// <param name="functionArgument">Un argumento de la función</param>

virtual System::SharedPtr<IMathFunction> Function(System::SharedPtr<IMathElement> functionArgument) = 0;

virtual System::SharedPtr<IMathFunction> Function(System::String functionArgument) = 0;

Por ejemplo:

auto func = System::MakeObject<MathematicalText>(u"sin")->Function(u"x");

Método AsArgumentOfFunction

Toma la función especificada utilizando la instancia actual como argumento. Puedes:

Por ejemplo:

auto funcName = System::MakeObject<MathLimit>(System::MakeObject<MathematicalText>(u"lim"), System::MakeObject<MathematicalText>(u"𝑛→∞"));
    
auto func1 = System::MakeObject<MathematicalText>(u"2x")->AsArgumentOfFunction(funcName);

auto func2 = System::MakeObject<MathematicalText>(u"x")->AsArgumentOfFunction(u"sin");

auto func3 = System::MakeObject<MathematicalText>(u"x")->AsArgumentOfFunction(MathFunctionsOfOneArgument::Sin);

auto func4 = System::MakeObject<MathematicalText>(u"x")->AsArgumentOfFunction(MathFunctionsOfTwoArguments::Log, u"3");

Métodos SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft

Establece el subíndice y el superíndice. Puedes establecer el subíndice y el superíndice al mismo tiempo a la izquierda o a la derecha del argumento, pero el subscrito o superíndice único solo se admite en el lado derecho. El Superíndice también puede utilizarse para establecer el grado matemático de un número.

Ejemplo:

auto script = System::MakeObject<MathematicalText>(u"y")->SetSubSuperscriptOnTheLeft(u"2x", u"3z");

Método Radical

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

Ejemplo:

auto radical = System::MakeObject<MathematicalText>(u"x")->Radical(u"3");

Métodos SetUpperLimit y SetLowerLimit

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

Consideremos una expresión:

todo:image_alt_text

Tales expresiones pueden ser creadas a través de una combinación de clases MathFunction y MathLimit, y operaciones del IMathElement de la siguiente manera:

auto mathExpression = System::MakeObject<MathematicalText>(u"lim")->SetLowerLimit(u"x→∞")->Function(u"x");

Métodos Nary e Integral

Los métodos Nary e Integral crean y devuelven el operador N-ario representado por el tipo IMathNaryOperator. En el método Nary, la enumeración MathNaryOperatorTypes especifica el tipo de operador: suma, unión, etc., sin incluir integrales. En el método Integral, hay una operación especializada Integral con la enumeración de tipos de integral MathIntegralTypes.

Ejemplo:

auto baseArg = System::MakeObject<MathematicalText>(u"x")->Join(System::MakeObject<MathematicalText>(u"dx")->ToBox());
auto integral = baseArg->Integral(MathIntegralTypes::Simple, u"0", u"1");

Método ToMathArray

ToMathArray coloca elementos en un array vertical. Si esta operación se llama para una instancia de MathBlock, todos los elementos hijos serán colocados en el array devuelto.

Ejemplo:

auto arrayFunction = System::MakeObject<MathematicalText>(u"x")->Join(u"y")->ToMathArray();

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

  • El método Accent establece una marca de acento (un carácter en la parte superior del elemento).
  • Los métodos Overbar y Underbar establecen una barra en la parte superior o inferior.
  • El método Group coloca en un grupo utilizando un carácter de agrupamiento como una llave inferior o algo similar.
  • El método ToBorderBox coloca en un borde.
  • El método ToBox coloca en una caja no visual (agrupamiento lógico).

Ejemplos:

auto accent = System::MakeObject<MathematicalText>(u"x")->Accent(u'\u0303');
    
auto bar = System::MakeObject<MathematicalText>(u"x")->Overbar();

auto groupChr = System::MakeObject<MathematicalText>(u"x")->Join(u"y")->Join(u"z")->Group(u'\u23E1', MathTopBotPositions::Bottom, MathTopBotPositions::Top);

auto borderBox = System::MakeObject<MathematicalText>(u"x+y+z")->ToBorderBox();

auto boxedOperator = System::MakeObject<MathematicalText>(u":=")->ToBox();