افزودن معادلات ریاضی به ارائههای PowerPoint در C++
مروری کلی
PowerPoint معادلات را به شکل Office Math Markup Language (OMML) ذخیره میکند. با Aspose.Slides برای C++ میتوانید همان نوع محتویات ریاضی را برنامهنویسی کنید: کسرها، رادیکالها، توابع، حدها، عملگرهای N‑ary، ماتریسها، آرایهها و بلوکهای ریاضی قالببندیشده.
در PowerPoint، کاربران معمولاً معادلات را از Insert > Equation اضافه میکنند:

نتیجه متن ریاضی قابل ویرایش روی اسلاید است:

Aspose.Slides این متن ریاضی را از طریق سه شیء اصلی میسازد:
- یک شکل ریاضی که با AddMathShape ایجاد میشود، شکل حاوی معادله است.
- MathPortion محتویات ریاضی داخل چارچوب متن شکل را ذخیره میکند.
- MathParagraph شامل یک یا چند شیء MathBlock است.
اغلب مثالهای زیر از MathematicalText و متدهای روان IMathElement استفاده میکنند تا کد کوتاه و خوانا بماند.
برای سناریوهای خروجی MathML، به Export Math Equations from Presentations in C++ مراجعه کنید.
ایجاد یک معادله
این مثال یک شکل ریاضی ایجاد میکند و قضیه فیثاغورس را اضافه مینماید:

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 یک شکل را ایجاد میکند که از پیش شامل یک MathParagraph است. اولین MathPortion را دریافت کنید، MathParagraph آن را بگیرید و بلوکها یا عناصر ریاضی را به آن اضافه کنید.
افزودن کسرها
از Divide برای ایجاد یک کسر استفاده کنید. میتوانید سبک کسر را با MathFractionTypes انتخاب کنید.

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();
برای یک کسر stacked، از MathFractionTypes::Bar استفاده کنید:
auto stackedFraction = System::MakeObject<MathematicalText>(u"x + 1")->Divide(u"y - 1", MathFractionTypes::Bar);
افزودن رادیکالها
از Radical برای ایجاد رادیکال مربع، رادیکال مکعب یا سایر رادیکالها استفاده کنید. عنصر فعلی به عنوان پایه در میآید و آرگومان به عنوان درجه رادیکال.

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();
افزودن توابع و حدها
برای توابعی مانند sin(x), log(x) یا نام توابع سفارشی از AsArgumentOfFunction یا Function استفاده کنید. برای حدها، lim را در یک MathLimit قرار دهید یا از SetLowerLimit استفاده کنید.

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();
برای نام تابع سفارشی، نام تابع را به عنوان عنصر فعلی تعیین کنید:
auto customFunction = System::MakeObject<MathematicalText>(u"f")->Function(u"x + 1");
افزودن عملگرهای N‑ary و انتگرالها
برای جمعها، اجتماعها، اشتراکها و سایر عملگرهای بزرگ از Nary استفاده کنید. برای انتگرالها از Integral بهره ببرید. هر دو متد امکان تنظیم حدهای پایین و بالا را فراهم میکنند.

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();
عملگرهای N‑ary برای عملگرهای بزرگ با حدهای اختیاری هستند. عملگرهای ساده مانند +, -, = معمولاً بهصورت MathematicalText اضافه شده و به عبارت متصل میشوند.
برای یک انتگرال، از 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");
افزودن ماتریسها
برای سطرها و ستونها از MathMatrix استفاده کنید. بهصورت پیشفرض ماتریسها پرانتز یا براکت ندارند، بنابراین زمانی که نیاز به پرانتز، براکت یا کروشه دارید، ماتریس را درون آنها بگذارید.

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();
افزودن آرایههای معادله
وقتی به معادلات همتراز یا پشتهای عمودی نیاز دارید، از ToMathArray استفاده کنید.

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();
افزودن توابع مثلثاتی
زمانی که آرگومان عنصر فعلی است و نام تابع شناخته شده است، از AsArgumentOfFunction استفاده کنید.

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();
افزودن زیرنویس و بالانویس
برای شاخصها و توانها از کمکیهای زیرنویس و بالانویس استفاده کنید. وقتی شاخصها باید در سمت چپ پایه ظاهر شوند، از SetSubSuperscriptOnTheLeft بهره بگیرید.

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();
افزودن جداسازها
از Enclose برای قرار دادن یک عبارت داخل جداسازها استفاده کنید. همچنین میتوانید کاراکتر جداکنندهای برای عبارات جداساز که شامل چند عنصر هستند تعیین کنید.

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();
افزودن جعبه حاشیهای
وقتی معادله باید داخل یک قاب نمایش داده شود، از ToBorderBox استفاده کنید.

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();
گروهبندی عبارات
از Group برای قرار دادن یک علامت گروهبندی بالای یا پایین یک عبارت استفاده کنید. برای برچسبگذاری عبارات گروهبندیشده میتوانید یک حد اضافه کنید.

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();
قالببندی عناصر ریاضی
از کمکیهای قالببندی فقط در جایی استفاده کنید که فرمول را واضحتر میکند. برای مثال، Overbar یک خط بالای عنصر ریاضی میگذارد.

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();
مرجع سریع
| کار | API اصلی |
|---|---|
| ساخت متن ریاضی | MathematicalText |
| ترکیب عناصر | IMathElement.Join |
| ایجاد کسر | IMathElement.Divide |
| افزودن بالانویس یا زیرنویس | SetSuperscript, SetSubscript |
| افزودن توابع | Function, AsArgumentOfFunction |
| افزودن رادیکالها | IMathElement.Radical |
| افزودن حدها | SetLowerLimit, SetUpperLimit |
| افزودن اسکریپتهای سمت چپ | SetSubSuperscriptOnTheLeft |
| افزودن جمعها و انتگرالها | Nary, Integral |
| افزودن ماتریسها | MathMatrix |
| افزودن آرایههای معادله | ToMathArray |
| افزودن جداسازها | Enclose |
| افزودن میله و حاشیه | Overbar, ToBorderBox |
| گروهبندی عبارات | Group |
سوالات متدوال
آیا میتوانم معادله موجود در PowerPoint را ویرایش کنم؟
بله. ارائه را باز کنید، شکل حاوی MathPortion را پیدا کنید، MathParagraph آن را دریافت کنید و بلوکهای ریاضی در آن پاراگراف را بهروزرسانی کنید.
آیا معادلات به صورت ریاضی قابل ویرایش در PowerPoint ذخیره میشوند؟
بله. هنگام ذخیره به فرمت PPTX، Aspose.Slides معادله را بهعنوان محتوای ریاضی Office قابل ویرایش مینویسد.
آیا میتوانم معادلات را به LaTeX صادر کنم؟
Aspose.Slides معادلات ریاضی را به MathML صادر میکند. اگر به LaTeX نیاز دارید، ابتدا به MathML خروجی بگیرید و سپس با ابزاری که از دیالکت LaTeX هدف پشتیبانی میکند، MathML را به LaTeX تبدیل کنید.