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:

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

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:

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();
AddMathShape létrehoz egy alakzatot, amely már tartalmaz egy matematikai bekezdést. Hozzáfér az első MathPortion-hez, lekéri annak MathParagraph-ját, és hozzáadja a matematikai blokkokat vagy elemeket.
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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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++.