Matematikai egyenletek hozzáadása PowerPoint prezentációkhoz C++-ban

Áttekintés

PowerPoint tárolja a képleteket Office Math Markup Language (OMML) formátumban. Az Aspose.Slides for C++ segítségével programozottan létrehozhatja ugyanazt a típusú matematikai tartalmat: tört, gyök, függvény, határ, N-áris operátor, mátrix, tömb és formázott matematikai blokkok.

PowerPointban a felhasználók általában a Insert > Equation menüpontból adnak hozzá képleteket:

PowerPoint Insert fül, ahol a Equation parancs ki van választva

Eredményként szerkeszthető matematikai szöveg jelenik meg a dián:

PowerPoint-diára szerkeszthető matematikai egyenlet kerül

Aspose.Slides három fő objektummal építi fel ezt a matematikai szöveget:

  • A matematikai alakzat, amelyet a AddMathShape hoz létre, az az alakzat, amely a képletet tartalmazza.
  • MathPortion tárolja a matematikai tartalmat az alakzat szövegdobozában.
  • MathParagraph egy vagy több MathBlock objektumot tartalmaz.

Az alábbi legtöbb példa a MathematicalText és az IMathElement folyékony metódusait használja a kód rövid és olvasható tartásához.

MathML export esetekhez lásd a Export Math Equations from Presentations in C++.

Egyenlet létrehozása

Ez a példa egy matematikai alakzatot hoz létre, és hozzáadja a Pitagorasz‑tételt:

A c² = a² + b² egyenlet

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();

Törtek hozzáadása

Divide használatával hozhat létre törtet. Választhat törtszám‑stílust a MathFractionTypes segítségével.

Ferdefény matematikai tört, amely 1-et oszt x-szel

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();

Halmozott tört esetén használja a MathFractionTypes::Bar‑t:

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

Gyökök hozzáadása

Radical használatával hozhat létre négyzetgyököt, köbgyököt vagy más gyököt. A jelenlegi elem lesz az alap, az argumentum pedig a gyöker fokszáma.

n‑edik gyök kifejezés, ahol az x a gyökjel alatt

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();

Függvények és határok hozzáadása

AsArgumentOfFunction vagy Function használatával adhat meg függvényeket, például sin(x), log(x), vagy egyedi függvényneveket. Határok esetén helyezze a lim‑et egy MathLimit objektumba, vagy használja a SetLowerLimit‑et.

x határa, amikor x a végtelen felé tart

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();

Egyedi függvénynév esetén tegye a függvény nevet a jelenlegi elemmé:

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

N-áris operátorok és integrálok hozzáadása

Nary használatával hozhat létre összegzéseket, uniókat, metszeteket és más nagy operátorokat. Integral használatával integrálokat. Mindkét módszerrel beállíthatja az alsó és felső határokat.

Összegzés alsó és felső határokkal

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();

Az N-ary operátorok nagy operátorok opcionális határokkal. Az egyszerű operátorok, mint a +, -, és = általában MathematicalText‑ként kerülnek hozzáadásra és az összeadásba illesztésre.

Integrál esetén használja a Integral‑t:

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

Mátrixok hozzáadása

MathMatrix használatával hozhat sorokat és oszlopokat. A mátrixok alapértelmezés szerint nincsenek zárójelek, ezért szükség esetén zárja körül a mátrixot zárójelek, szögletes vagy kapcsos zárójelek segítségével.

Két soros matematikai mátrix egy üres cellával

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();

Egyenlet tömbök hozzáadása

Használja a ToMathArray‑t, ha igazított egyenletekre vagy függőleges kifejezéstömbre van szüksége.

Függőleges matematikai tömb, ahol x áll y felett

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();

Trigonometriai függvények hozzáadása

AsArgumentOfFunction használja, ha az argumentum a jelenlegi elem és a függvény neve ismert.

A koszinusz trigonometriai függvény 2x‑re alkalmazva

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();

Alsó- és felső indexek hozzáadása

Használja az alsó- és felső index segédfüggvényeit indexek és hatványok esetén. Ha az indexeknek a bázis bal oldalán kell megjelenniük, használja a SetSubSuperscriptOnTheLeft‑et.

Nagy Y betű bal oldali alsó index 1 és felső index 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();

Elválasztók hozzáadása

Enclose használatával tehet kifejezést elválasztók közé. Beállíthat elválasztó karaktert is olyan elválasztók kifejezéseihez, amelyek több elemet tartalmaznak.

Elválasztó kifejezés, amely x, y és z‑t tartalmazza függőleges vonalakkal elválasztva

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();

Keretes doboz hozzáadása

ToBorderBox használja, ha maga az egyenlet keretet igényel.

Keretbe helyezett egyenlet, ahol 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();

Kifejezések csoportosítása

Group használatával helyezhet csoportosító karaktert egy kifejezés fölé vagy alá. Hozzáadhat határt a csoportosított kifejezések felcímkézéséhez.

Az x + y kifejezés csoportosítva, alatta a ‘any text’ felirat

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();

Matematikai elemek formázása

Formázó segédfüggvényeket csak ott használja, ahol tisztázzák a képletet. Például a Overbar egy vonalat helyez el egy matematikai elem felett.

ABC matematikai kifejezés felül vonallal

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();

Gyorsreferencia

Feladat Fő API
Matematikai szöveg létrehozása MathematicalText
Elemek egyesítése IMathElement.Join
Törtek létrehozása IMathElement.Divide
Felső- vagy alsó index hozzáadása SetSuperscript, SetSubscript
Függvények hozzáadása Function, AsArgumentOfFunction
Gyökök hozzáadása IMathElement.Radical
Határok hozzáadása SetLowerLimit, SetUpperLimit
Baloldali indexek hozzáadása SetSubSuperscriptOnTheLeft
Összegzések és integrálok hozzáadása Nary, Integral
Mátrixok hozzáadása MathMatrix
Egyenlet tömbök hozzáadása ToMathArray
Elválasztók hozzáadása Enclose
Vonalak és keretek hozzáadása Overbar, ToBorderBox
Kifejezések csoportosítása Group

GYIK

Szerkeszthetek egy meglévő PowerPoint képletet?

Igen. Nyissa meg a bemutatót, keresse meg azt az alakzatot, amely MathPortion‑t tartalmaz, szerezze meg annak MathParagraph‑ját, és frissítse a bekezdésben lévő matematikai blokkokat.

A képletek szerkeszthető PowerPoint matematikaként vannak mentve?

Igen. PPTX mentésekor az Aspose.Slides a képletet szerkeszthető Office matematikai tartalomként írja.

Exportálhatok képleteket LaTeX‑be?

Igen. Szerezze meg az egyenlet IMathParagraph objektumát az IMathPortion‑ból, és hívja meg a IMathParagraph::ToLatex‑t a közvetlen exportáláshoz. Teljes példa a Export Math Equations from Presentations in C++.