معادلات الرياضيات في PowerPoint
نظرة عامة
في PowerPoint، من الممكن كتابة معادلة رياضية أو صيغة وعرضها في العرض التقديمي. لتحقيق ذلك، تمثل مجموعة متنوعة من الرموز الرياضية في PowerPoint ويمكن إضافتها إلى النص أو المعادلة. لذلك، يتم استخدام مُنشئ المعادلات الرياضية في PowerPoint، الذي يساعد في إنشاء صيغ معقدة مثل:
- كسر رياضي
- جذر رياضي
- دالة رياضية
- حدود ودوال اللوغاريتم
- عمليات N-ary
- مصفوفة
- مشغلات كبيرة
- دوال الجيب وجيب التمام
لإضافة معادلة رياضية في PowerPoint، يتم استخدام قائمة إدراج -> معادلة:
سوف ينشئ هذا نص رياضي بتنسيق XML يمكن عرضه في PowerPoint كما يلي:
يدعم PowerPoint الكثير من الرموز الرياضية لإنشاء معادلات رياضية. ومع ذلك، فإن إنشاء معادلات رياضية معقدة في PowerPoint غالباً لا يؤدي إلى نتائج جيدة ومهنية. يلجأ المستخدمون، الذين يحتاجون إلى إنشاء عروض تقديمية رياضية بشكل متكرر، إلى استخدام حلول من طرف ثالث لإنشاء صيغ رياضية ذات مظهر جيد.
باستخدام Aspose.Slide API، يمكنك العمل مع المعادلات الرياضية في عروض PowerPoint بشكل برمجي في C#. قم بإنشاء تعبيرات رياضية جديدة أو تحرير تلك التي تم إنشاؤها مسبقًا. كما يتم دعم تصدير الهياكل الرياضية إلى صور جزئيًا.
كيفية إنشاء معادلة رياضية
تستخدم العناصر الرياضية لبناء أي إنشاءات رياضية بأي مستوى من التعشيق. تشكل مجموعة خطية من العناصر الرياضية كتلة رياضية ممثلة بواسطة فئة MathBlock. تعتبر فئة MathBlock تعبيرًا رياضيًا منفصلًا أو صيغة أو معادلة. MathPortion هي جزء رياضي، يُستخدم لحمل النص الرياضي (لا تخلط بينه وبين Portion). تقوم فئة MathParagraph بإتاحة التحكم في مجموعة من كتل الرياضيات. تعتبر الفئات المذكورة أعلاه مفتاحًا للعمل مع معادلات الرياضيات في PowerPoint عبرAspose.Slides API.
لنرى كيف يمكننا إنشاء المعادلة الرياضية التالية عبر Aspose.Slides API:
لإضافة تعبير رياضي على الشريحة، أولاً، أضف شكلًا سيحتوي على النص الرياضي:
$pres = new Presentation();
try {
$mathShape = $pres->getSlides()->get_Item(0)->getShapes()->addMathShape(0, 0, 720, 150);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
بعد الإنشاء، سيحتوي الشكل بالفعل على فقرة واحدة مع جزء رياضي بشكل افتراضي. تسمح فئة MathPortion بالوصول إلى المحتوى الرياضي داخل MathPortion بالرجوع إلى المتغير MathParagraph:
$mathParagraph = $mathShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0)->getMathParagraph();
تسمح فئة MathParagraph بقراءة وإضافة وتحرير وحذف كتل الرياضيات (MathBlock)، والتي تتكون من مجموعة من العناصر الرياضية. على سبيل المثال، إنشاء كسر ووضعه في العرض التقديمي:
$fraction = new MathematicalText("x")->divide("y");
$mathParagraph->add(new MathBlock($fraction));
يمثل كل عنصر رياضي فئة معينة تنفذ واجهة IMathElement. توفر هذه الواجهة الكثير من الطرق لإنشاء التعبيرات الرياضية بسهولة. يمكنك إنشاء تعبير رياضي معقد نسبياً بسطر واحد من التعليمات البرمجية. على سبيل المثال، ستبدو نظرية فيثاغورس كالتالي:
$mathBlock = new MathematicalText("c")->setSuperscript("2")->join("=")->join(new MathematicalText("a")->setSuperscript("2"))->join("+")->join(new MathematicalText("b")->setSuperscript("2"));
تُنفذ عمليات واجهة IMathElement في أي نوع من العناصر، بما في ذلك MathBlock.
نموذج التعليمات البرمجية بالكامل:
$pres = new Presentation();
try {
$mathShape = $pres->getSlides()->get_Item(0)->getShapes()->addMathShape(0, 0, 720, 150);
$mathParagraph = $mathShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0)->getMathParagraph();
$fraction = new MathematicalText("x")->divide("y");
$mathParagraph->add(new MathBlock($fraction));
$mathBlock = new MathematicalText("c")->setSuperscript("2")->join("=")->join(new MathematicalText("a")->setSuperscript("2"))->join("+")->join(new MathematicalText("b")->setSuperscript("2"));
$mathParagraph->add($mathBlock);
$pres->save("math.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
أنواع العناصر الرياضية
تتكون التعبيرات الرياضية من تسلسلات من العناصر الرياضية. يمثل تسلسل العناصر الرياضية كتلة رياضية، وتشكل معاملات العناصر الرياضية تعشيقًا شبيهًا بالشجرة.
هناك العديد من أنواع العناصر الرياضية التي يمكن استخدامها لبناء كتلة رياضية. يمكن تضمين كل من هذه العناصر (تجميعها) في عنصر آخر. أي أن العناصر هي في الواقع حاويات للآخرين، مما يشكل هيكلًا شبيهًا بالشجرة. أبسط نوع من العناصر هو الذي لا يحتوي على عناصر أخرى من النص الرياضي.
يتم تنفيذ كل نوع من عنصر الرياضيات لواجهة IMathElement، مما يسمح باستخدام مجموعة شائعة من عمليات الرياضيات على أنواع مختلفة من عناصر الرياضيات.
فئة MathematicalText
تمثل فئة MathematicalText نصًا رياضيًا - العنصر الأساسي لجميع الإنشاءات الرياضية. يمكن أن يمثل النص الرياضي العوامل والمشغلين والمتغيرات وأي نص خطي آخر.
مثال: 𝑎=𝑏+𝑐
فئة MathFraction
تمثل فئة MathFraction كائن الكسر، الذي يتكون من بسط ومقام مفصولين بواسطة شريط كسر. يمكن أن يكون شريط الكسر أفقيًا أو مائلًا، اعتمادًا على خصائص الكسر. يتم استخدام كائن الكسر أيضًا لتمثيل دالة التراص، التي تضع عنصرًا فوق عنصر آخر، دون شريط كسر.
مثال:
فئة MathRadical
تمثل فئة MathRadical دالة جذر (جذر رياضي)، تتكون من قاعدة ودرجة اختيارية.
مثال:
فئة MathFunction
تمثل فئة MathFunction دالة لمعامل. تحتوي على الخصائص: getName - اسم الدالة وgetBase - معامل الدالة.
مثال:
فئة MathNaryOperator
تمثل فئة MathNaryOperator كائن رياضي N-ary، مثل الجمع والتكامل. يتكون من مشغل وقاعدة (أو عامل)، وحدود علوية وسفلية اختيارية. تتضمن أمثلة مشغلات N-ary الجمع، الاتحاد، التقاطع، التكامل.
لا تشمل هذه الفئة المشغلين البسيطين مثل الجمع والطرح، وما إلى ذلك. يتم تمثيلها بواسطة عنصر نصي واحد - MathematicalText.
مثال:
فئة MathLimit
تقوم فئة MathLimit بإنشاء الحد العلوي أو السفلي. تحدد كائن الحد، الذي يتكون من نص على الخط الأساسي ونص بحجم مخفض مباشرة فوقه أو تحته. لا تتضمن هذه العنصر كلمة “lim”، ولكنها تسمح بوضع نص في أعلى أو أسفل التعبير. لذا، فإن التعبير
يتم إنشاؤه باستخدام مجموعة من عناصر MathFunction و MathLimit بهذه الطريقة:
$funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
$mathFunc = new MathFunction($funcName, new MathematicalText("𝑥"));
فئات MathSubscriptElement، MathSuperscriptElement، MathRightSubSuperscriptElement، MathLeftSubSuperscriptElement
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
تحدد الفئات التالية مؤشرًا سفليًا أو علويًا. يمكنك ضبط التفريغ والكتابة العلوية في نفس الوقت على الجانب الأيسر أو الأيمن من المعامل، ولكن يتم دعم التفريغ أو الكتابة العلوية المفردة فقط على الجانب الأيمن. يمكن أيضًا استخدام MathSubscriptElement لضبط الدرجة الرياضية لرقم.
مثال:
فئة MathMatrix
تحدد فئة MathMatrix كائن المصفوفة، الذي يتكون من عناصر فرعية مرتبة في صفوف وأعمدة. من المهم ملاحظة أن المصفوفات لا تحتوي على فواصل زمنية مدمجة. لوضع المصفوفة في الأقواس، يجب استخدام كائن الفاصل - IMathDelimiter. يمكن استخدام معاملات فارغة لإنشاء فراغات في المصفوفات.
مثال:
فئة MathArray
تحدد فئة MathArray مصفوفة عمودية من المعادلات أو أي كائنات رياضية.
مثال:
تنسيق العناصر الرياضية
-
فئة MathBorderBox: ترسم حدودًا مستطيلة أو أي حدود أخرى حول IMathElement.
مثال:
-
فئة MathBox: تحدد التعبئة المنطقية للعناصر الرياضية. على سبيل المثال، يمكن أن تكون الكائنات المعبأة بمثابة محاكي لمشغل مع أو بدون نقطة محاذاة، أو أن تكون نقطة انقطاع سطر، أو أن تكون مجمعة بحيث لا تسمح بانكسارات الأسطر. على سبيل المثال، يجب تعبئة مشغل “==” لمنع انكسارات الأسطر.
-
فئة MathDelimiter: تحدد كائن الفاصل، الذي يتكون من أحرف فتح وإغلاق (مثل الأقواس، والأقواس، والأطراف، والأعمدة الرأسية)، وواحد أو أكثر من العناصر الرياضية داخلها، تفصلها حرف محدد. أمثلة: (𝑥2); [𝑥2|𝑦2].
مثال:
-
فئة MathAccent: تحدد دالة التمييز، التي تتكون من قاعدة وعلامة تمييز مركبة.
مثال: 𝑎́.
-
فئة MathBar: تحدد دالة الشريط، التي تتكون من معامل أساسي و شريط علوي أو سفلي.
مثال:
-
فئة MathGroupingCharacter: تحدد رمز التجميع فوق أو تحت تعبير، عادة لتسليط الضوء على العلاقات بين العناصر.
مثال:
العمليات الرياضية
كل عنصر رياضي وتعبير رياضي (عبر MathBlock) ينفذ واجهة IMathElement . يسمح لك باستخدام العمليات على الهيكل الموجود وتشكيل تعبيرات رياضية أكثر تعقيدًا. جميع العمليات لها مجموعتان من المعلمات: إما IMathElement أو نص كمعاملات. يتم إنشاء مثيلات من فئة MathematicalText بشكل ضمني من السلاسل المحددة عند استخدام معاملات نصية. العمليات الرياضية المتاحة في Aspose.Slides مدرجة أدناه.
طريقة Join
تنضم عنصر رياضي وتشكل كتلة رياضية. على سبيل المثال:
$element1 = new MathematicalText("x");
$element2 = new MathematicalText("y");
$block = $element1->join($element2);
طريقة Divide
- divide(String)
- divide(IMathElement)
- divide(String, MathFractionTypes)
- divide(IMathElement, MathFractionTypes)
تنشئ كسرًا من النوع المحدد مع هذا البسط والمقام المحدد. على سبيل المثال:
$numerator = new MathematicalText("x");
$fraction = $numerator->divide("y", MathFractionTypes->Linear);
طريقة Enclose
تغلق العنصر في أحرف محددة مثل الأقواس أو حرف آخر كإطار.
على سبيل المثال:
$delimiter = new MathematicalText("x")->enclose('[', ']');
$delimiter2 = new MathematicalText("elem1")->join("elem2")->enclose();
طريقة Function
تأخذ دالة لمعامل باستخدام الكائن الحالي كاسم الدالة.
على سبيل المثال:
$func = new MathematicalText("sin")->function("x");
طريقة AsArgumentOfFunction
- asArgumentOfFunction(String)
- asArgumentOfFunction(IMathElement)
- asArgumentOfFunction(MathFunctionsOfOneArgument)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, String)
تأخذ الدالة المحددة باستخدام المثيل الحالي كحجة. يمكنك:
- تحديد سلسلة كاسم الدالة، على سبيل المثال “cos”.
- اختيار إحدى القيم المعروفة من enumerations MathFunctionsOfOneArgument أو MathFunctionsOfTwoArguments، على سبيل المثال MathFunctionsOfOneArgument.ArcSin.
- اختيار مثيل من IMathElement.
على سبيل المثال:
$funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
$func1 = new MathematicalText("2x")->asArgumentOfFunction($funcName);
$func2 = new MathematicalText("x")->asArgumentOfFunction("sin");
$func3 = new MathematicalText("x")->asArgumentOfFunction(MathFunctionsOfOneArgument->Sin);
$func4 = new MathematicalText("x")->asArgumentOfFunction(MathFunctionsOfTwoArguments->Log, "3");
طرق SetSubscript، SetSuperscript، SetSubSuperscriptOnTheRight، SetSubSuperscriptOnTheLeft
- setSubscript(String)
- setSubscript(IMathElement)
- setSuperscript(String)
- setSuperscript(IMathElement)
- setSubSuperscriptOnTheRight(String, String)
- setSubSuperscriptOnTheRight(IMathElement, IMathElement)
- setSubSuperscriptOnTheLeft(String, String)
- setSubSuperscriptOnTheLeft(IMathElement, IMathElement)
تضبط المفتاح السفلي والكتابة العلوية. يمكنك ضبط المفتاح السفلي والكتابة العلوية في نفس الوقت على الجانب الأيسر أو الأيمن من المعامل، ولكن يتم دعم المفتاح السفلي أو الكتابة العلوية المفردة فقط على الجانب الأيمن. يمكن أيضًا استخدام Superscript لضبط درجة رياضية لعدد.
مثال:
$script = new MathematicalText("y")->setSubSuperscriptOnTheLeft("2x", "3z");
طريقة Radical
تحدد الجذر الرياضي من الدرجة المحددة من المعامل المحدد.
مثال:
$radical = new MathematicalText("x")->radical("3");
طرق SetUpperLimit و SetLowerLimit
تأخذ الحد العلوي أو السفلي. هنا، تشير الأعلى والأسفل ببساطة إلى موقع المعامل بالنسبة للقاعدة.
لننظر في تعبير:
يمكن إنشاء مثل هذه التعبيرات من خلال مجموعة من فئات MathFunction و MathLimit وعمليات IMathElement كما يلي:
$mathExpression = new MathematicalText("lim")->setLowerLimit("x→∞")->function("x");
طرق Nary و Integral
- nary(MathNaryOperatorTypes, IMathElement, IMathElement)
- nary(MathNaryOperatorTypes, String, String)
- integral(MathIntegralTypes)
- integral(MathIntegralTypes, IMathElement, IMathElement)
- integral(MathIntegralTypes, String, String)
- integral(MathIntegralTypes, IMathElement, IMathElement, MathLimitLocations)
- integral(MathIntegralTypes, String, String, MathLimitLocations)
تقوم كل من nary وintegral بإنشاء وإرجاع مشغل N-ary ممثل بنوع IMathNaryOperator. في طريقة nary، تحدد MathNaryOperatorTypes نوع المشغل: الجمع، الاتحاد، إلخ، ولا تشمل التكاملات. في طريقة التكامل، هناك عملية متخصصة لتكامل مع تعداد أنواع التكامل MathIntegralTypes.
مثال:
$baseArg = new MathematicalText("x")->join(new MathematicalText("dx")->toBox());
$integral = $baseArg->integral(MathIntegralTypes->Simple, "0", "1");
طريقة toMathArray
toMathArray تضع العناصر في مصفوفة رأسية. إذا تم استدعاء هذه العملية لمثيل MathBlock، سيتم وضع جميع العناصر الفرعية في المصفوفة المرجعة.
مثال:
$arrayFunction = new MathematicalText("x")->join("y")->toMathArray();
عمليات التنسيق: Accent، Overbar، Underbar، Group، ToBorderBox، ToBox
- تحدد طريقة accent علامة التمييز (حرف أعلى العنصر).
- تحدد طرق overbar و underbar شريطًا أعلى أو أسفل.
- تحدد طريقة group مكانًا في مجموعة باستخدام حرف تجميع مثل الأقواس السفلية المتعرجة أو غيرها.
- تحدد طريقة toBorderBox مكانًا في مربع الحدود.
- تحدد طريقة toBox مكانًا في مربع غير مرئي (تجميع منطقي).
أمثلة:
$accent = new MathematicalText("x")->accent('̃');
$bar = new MathematicalText("x")->overbar();
$groupChr = new MathematicalText("x")->join("y")->join("z")->group('⏡', MathTopBotPositions::Bottom, MathTopBotPositions::Top);
$borderBox = new MathematicalText("x+y+z")->toBorderBox();
$boxedOperator = new MathematicalText(":=")->toBox();