Dodaj równania matematyczne do prezentacji PowerPoint w C++

Przegląd

PowerPoint przechowuje równania jako Office Math Markup Language (OMML). Dzięki Aspose.Slides dla C++, możesz programowo tworzyć tego samego rodzaju treść matematyczną: ułamki, pierwiastki, funkcje, granice, operatory N-ary, macierze, tablice i sformatowane bloki matematyczne.

W PowerPoint użytkownicy zwykle wstawiają równania z Wstaw > Równanie:

Zakładka Wstaw w PowerPoint z wybranym poleceniem Równanie

Wynik to edytowalny tekst matematyczny na slajdzie:

Slajd PowerPoint zawierający edytowalny równanie matematyczne

Aspose.Slides buduje ten tekst matematyczny przy użyciu trzech głównych obiektów:

  • Kształt matematyczny, utworzony przy pomocy AddMathShape, jest kształtem zawierającym równanie.
  • MathPortion przechowuje treść matematyczną wewnątrz ramki tekstowej kształtu.
  • MathParagraph zawiera jeden lub więcej obiektów MathBlock.

Większość poniższych przykładów używa MathematicalText oraz płynnych metod z IMathElement​, aby kod był krótki i czytelny.

Dla scenariuszy eksportu MathML zobacz Eksportowanie równań matematycznych z prezentacji w C++.

Utworzenie równania

Ten przykład tworzy kształt matematyczny i dodaje twierdzenie Pitagorasa:

Równanie c² = a² + b²

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 120.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto equation = 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(equation);

presentation->Save(u"pythagorean-theorem.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie ułamków

Użyj Divide, aby utworzyć ułamek. Możesz wybrać styl ułamka za pomocą MathFractionTypes.

Skośny ułamek matematyczny pokazujący 1 podzielone przez x

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto fraction = System::MakeObject<MathematicalText>(u"1")
        - >Divide(u"x", MathFractionTypes::Skewed);

mathParagraph->Add(System::MakeObject<MathBlock>(fraction));

presentation->Save(u"fraction.pptx", SaveFormat::Pptx);
presentation->Dispose();

Aby uzyskać ułamek ustawiony w pionie, użyj MathFractionTypes::Bar:

auto stackedFraction = System::MakeObject<MathematicalText>(u"x + 1")->Divide(u"y - 1", MathFractionTypes::Bar);

Dodawanie pierwiastków

Użyj Radical, aby utworzyć pierwiastek kwadratowy, sześcienny lub inny. Bieżący element staje się podstawą, a argument określa stopień.

Wyrażenie pierwiastka n-tego stopnia z x pod znakiem pierwiastka

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

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

mathParagraph->Add(System::MakeObject<MathBlock>(radical));

presentation->Save(u"radical.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie funkcji i granic

Użyj AsArgumentOfFunction lub Function dla funkcji takich jak sin(x), log(x) lub własnych nazw funkcji. Dla granic, umieść lim w MathLimit lub użyj SetLowerLimit.

Granica x, gdy x dąży do nieskończoności

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

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

mathParagraph->Add(System::MakeObject<MathBlock>(limit));

presentation->Save(u"functions-and-limits.pptx", SaveFormat::Pptx);
presentation->Dispose();

Aby użyć własnej nazwy funkcji, ustaw nazwę funkcji jako bieżący element:

auto customFunction = System::MakeObject<MathematicalText>(u"f")->Function(u"x + 1");

Dodawanie operatorów N-ary i całek

Użyj Nary dla sum, sum, przecięć i innych dużych operatorów. Użyj Integral dla całek. Obie metody umożliwiają ustawienie limitów dolnego i górnego.

Sumowanie z limitami dolnym i górnym

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 120.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto summationBase = System::MakeObject<MathematicalText>(u"x")
        - >SetSuperscript(u"k")
        - >Join(System::MakeObject<MathematicalText>(u"a")->SetSuperscript(u"n-k"));

auto summation = summationBase->Nary(MathNaryOperatorTypes::Summation, u"k=0", u"n");

mathParagraph->Add(System::MakeObject<MathBlock>(summation));

presentation->Save(u"nary-operators.pptx", SaveFormat::Pptx);
presentation->Dispose();

Operatory N-ary służą do dużych operatorów z opcjonalnymi limitami. Proste operatory takie jak +, - i = zwykle dodaje się jako MathematicalText i łączy w wyrażeniu.

Aby dodać całkę, użyj Integral:

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

Dodawanie macierzy

Użyj MathMatrix​, aby określić wiersze i kolumny. Domyślnie macierze nie zawierają nawiasów, dlatego należy otoczyć macierz, gdy potrzebne są nawiasy okrągłe, kwadratowe lub klamrowe.

Macierz matematyczna z dwoma wierszami i jedną pustą komórką

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 120.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto matrix = System::MakeObject<MathMatrix>(2, 3);
matrix->idx_set(0, 0, System::MakeObject<MathematicalText>(u"1"));
matrix->idx_set(0, 1, System::MakeObject<MathematicalText>(u"x"));
matrix->idx_set(1, 0, System::MakeObject<MathematicalText>(u"x"));
matrix->idx_set(1, 1, System::MakeObject<MathematicalText>(u"2"));
matrix->idx_set(1, 2, System::MakeObject<MathematicalText>(u"y"));

mathParagraph->Add(System::MakeObject<MathBlock>(matrix));

presentation->Save(u"matrix.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie tablic równań

Użyj ToMathArray, gdy potrzebujesz wyrównanych równań lub pionowego stosu wyrażeń.

Pionowa tablica matematyczna z x nad y

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 140.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

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

mathParagraph->Add(System::MakeObject<MathBlock>(equationArray));

presentation->Save(u"equation-array.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie funkcji trygonometrycznych

Użyj AsArgumentOfFunction, gdy argument jest bieżącym elementem, a nazwa funkcji jest znana.

Funkcja trygonometryczna cos zastosowana do 2x

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto cosine = System::MakeObject<MathematicalText>(u"2x")
        - >AsArgumentOfFunction(MathFunctionsOfOneArgument::Cos);

mathParagraph->Add(System::MakeObject<MathBlock>(cosine));

presentation->Save(u"trigonometric-function.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie indeksów dolnych i górnych

Użyj pomocników indeksów dolnych i górnych dla indeksów i potęg. Gdy indeksy mają znajdować się po lewej stronie podstawy, użyj SetSubSuperscriptOnTheLeft.

Wielka litera Y z lewostronnym indeksem dolnym 1 i górnym n

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto scripts = System::MakeObject<MathematicalText>(u"Y")
        - >SetSubSuperscriptOnTheLeft(u"1", u"n");

mathParagraph->Add(System::MakeObject<MathBlock>(scripts));

presentation->Save(u"subscript-superscript.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie ograniczników

Użyj Enclose, aby umieścić wyrażenie w ogranicznikach. Możesz również ustawić znak separatora dla wyrażeń z wieloma elementami w ogranicznikach.

Wyrażenie ograniczające zawierające x, y i z oddzielone pionowymi kreskami

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto delimiter = System::MakeObject<MathematicalText>(u"x")
        - >Join(u"y")
        - >Join(u"z")
        - >Enclose(u'<', u'>', u'|');

mathParagraph->Add(System::MakeObject<MathBlock>(delimiter));

presentation->Save(u"delimiters.pptx", SaveFormat::Pptx);
presentation->Dispose();

Dodawanie ramki obramowania

Użyj ToBorderBox, gdy równanie powinno być otoczone ramką.

Równanie w ramce pokazujące a² = b² + c²

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

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

mathParagraph->Add(System::MakeObject<MathBlock>(boxedEquation));

presentation->Save(u"border-box.pptx", SaveFormat::Pptx);
presentation->Dispose();

Grupowanie wyrazów

Użyj Group, aby umieścić znak grupujący nad lub pod wyrażeniem. Dodaj limit, aby oznakować pogrupowane wyrazy.

Wyrażenie x + y pogrupowane z etykietą dowolny tekst pod nim

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 120.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto grouped = System::MakeObject<MathematicalText>(u"x + y")
        - >Group(u'\u23DF', MathTopBotPositions::Bottom, MathTopBotPositions::Top)
        - >SetLowerLimit(u"any text");

mathParagraph->Add(System::MakeObject<MathBlock>(grouped));

presentation->Save(u"grouped-terms.pptx", SaveFormat::Pptx);
presentation->Dispose();

Formatowanie elementów matematycznych

Używaj pomocników formatowania tylko tam, gdzie wyjaśniają formułę. Na przykład Overbar umieszcza pasek nad elementem matematycznym.

Wyrażenie matematyczne ABC z paskiem nad nim

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto mathShape = slide->get_Shapes()->AddMathShape(20.0f, 20.0f, 700.0f, 100.0f);
auto mathPortion = System::ExplicitCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0));
auto mathParagraph = mathPortion->get_MathParagraph();

auto overbar = System::MakeObject<MathematicalText>(u"ABC")->Overbar();

mathParagraph->Add(System::MakeObject<MathBlock>(overbar));

presentation->Save(u"overbar.pptx", SaveFormat::Pptx);
presentation->Dispose();

Szybkie odniesienie

Zadanie Główne API
Utworzenie tekstu matematycznego MathematicalText
Łączenie elementów IMathElement.Join
Tworzenie ułamków IMathElement.Divide
Dodawanie indeksu górnego lub dolnego SetSuperscript, SetSubscript
Dodawanie funkcji Function, AsArgumentOfFunction
Dodawanie pierwiastków IMathElement.Radical
Dodawanie granic SetLowerLimit, SetUpperLimit
Dodawanie skryptów po lewej stronie SetSubSuperscriptOnTheLeft
Dodawanie sum i całek Nary, Integral
Dodawanie macierzy MathMatrix
Dodawanie tablic równań ToMathArray
Dodawanie ograniczników Enclose
Dodawanie pasków i ramek Overbar, ToBorderBox
Grupowanie wyrazów Group

FAQ

Czy mogę edytować istniejące równanie w PowerPoint?

Tak. Otwórz prezentację, znajdź kształt zawierający MathPortion, pobierz jego MathParagraph i zaktualizuj bloki matematyczne w tym paragrafie.

Czy równania są zapisywane jako edytowalna matematyka PowerPoint?

Tak. Po zapisaniu do PPTX, Aspose.Slides zapisuje równanie jako edytowalną treść matematyczną Office.

Czy mogę wyeksportować równania do LaTeX?

Tak. Pobierz IMathParagraph z jego IMathPortion, i wywołaj IMathParagraph::ToLatex, aby wyeksportować je bezpośrednio. Dla pełnego przykładu zobacz Eksportowanie równań matematycznych z prezentacji w C++.