معادلات الرياضيات في PowerPoint

نظرة عامة

في PowerPoint، من الممكن كتابة معادلة رياضية أو صيغة وعرضها في العرض التقديمي. لتحقيق ذلك، تمثل مجموعة متنوعة من الرموز الرياضية في PowerPoint ويمكن إضافتها إلى النص أو المعادلة. لذلك، يتم استخدام مُنشئ المعادلات الرياضية في PowerPoint، الذي يساعد في إنشاء صيغ معقدة مثل:

  • كسر رياضي
  • جذر رياضي
  • دالة رياضية
  • حدود ودوال اللوغاريتم
  • عمليات N-ary
  • مصفوفة
  • مشغلات كبيرة
  • دوال الجيب وجيب التمام

لإضافة معادلة رياضية في PowerPoint، يتم استخدام قائمة إدراج -> معادلة:

todo:image_alt_text

سوف ينشئ هذا نص رياضي بتنسيق XML يمكن عرضه في PowerPoint كما يلي: 

todo:image_alt_text

يدعم PowerPoint الكثير من الرموز الرياضية لإنشاء معادلات رياضية. ومع ذلك، فإن إنشاء معادلات رياضية معقدة في PowerPoint غالباً لا يؤدي إلى نتائج جيدة ومهنية. يلجأ المستخدمون، الذين يحتاجون إلى إنشاء عروض تقديمية رياضية بشكل متكرر، إلى استخدام حلول من طرف ثالث لإنشاء صيغ رياضية ذات مظهر جيد.

باستخدام Aspose.Slide API، يمكنك العمل مع المعادلات الرياضية في عروض PowerPoint بشكل برمجي في C#. قم بإنشاء تعبيرات رياضية جديدة أو تحرير تلك التي تم إنشاؤها مسبقًا. كما يتم دعم تصدير الهياكل الرياضية إلى صور جزئيًا.

كيفية إنشاء معادلة رياضية

تستخدم العناصر الرياضية لبناء أي إنشاءات رياضية بأي مستوى من التعشيق. تشكل مجموعة خطية من العناصر الرياضية كتلة رياضية ممثلة بواسطة فئة MathBlock. تعتبر فئة MathBlock تعبيرًا رياضيًا منفصلًا أو صيغة أو معادلة. MathPortion هي جزء رياضي، يُستخدم لحمل النص الرياضي (لا تخلط بينه وبين Portion). تقوم فئة MathParagraph بإتاحة التحكم في مجموعة من كتل الرياضيات. تعتبر الفئات المذكورة أعلاه مفتاحًا للعمل مع معادلات الرياضيات في PowerPoint عبرAspose.Slides API.

لنرى كيف يمكننا إنشاء المعادلة الرياضية التالية عبر Aspose.Slides API:

todo:image_alt_text

لإضافة تعبير رياضي على الشريحة، أولاً، أضف شكلًا سيحتوي على النص الرياضي:

  $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 كائن الكسر، الذي يتكون من بسط ومقام مفصولين بواسطة شريط كسر. يمكن أن يكون شريط الكسر أفقيًا أو مائلًا، اعتمادًا على خصائص الكسر. يتم استخدام كائن الكسر أيضًا لتمثيل دالة التراص، التي تضع عنصرًا فوق عنصر آخر، دون شريط كسر.

مثال:

todo:image_alt_text

فئة MathRadical

تمثل فئة MathRadical دالة جذر (جذر رياضي)، تتكون من قاعدة ودرجة اختيارية.

مثال:

todo:image_alt_text

فئة MathFunction

تمثل فئة MathFunction دالة لمعامل. تحتوي على الخصائص: getName - اسم الدالة وgetBase - معامل الدالة.

مثال:

todo:image_alt_text

فئة MathNaryOperator

تمثل فئة MathNaryOperator كائن رياضي N-ary، مثل الجمع والتكامل. يتكون من مشغل وقاعدة (أو عامل)، وحدود علوية وسفلية اختيارية. تتضمن أمثلة مشغلات N-ary الجمع، الاتحاد، التقاطع، التكامل.

لا تشمل هذه الفئة المشغلين البسيطين مثل الجمع والطرح، وما إلى ذلك. يتم تمثيلها بواسطة عنصر نصي واحد - MathematicalText.

مثال:

todo:image_alt_text

فئة MathLimit

تقوم فئة MathLimit بإنشاء الحد العلوي أو السفلي. تحدد كائن الحد، الذي يتكون من نص على الخط الأساسي ونص بحجم مخفض مباشرة فوقه أو تحته. لا تتضمن هذه العنصر كلمة “lim”، ولكنها تسمح بوضع نص في أعلى أو أسفل التعبير. لذا، فإن التعبير 

todo:image_alt_text

يتم إنشاؤه باستخدام مجموعة من عناصر MathFunction و MathLimit بهذه الطريقة:

  $funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
  $mathFunc = new MathFunction($funcName, new MathematicalText("𝑥"));

فئات MathSubscriptElement، MathSuperscriptElement، MathRightSubSuperscriptElement، MathLeftSubSuperscriptElement

تحدد الفئات التالية مؤشرًا سفليًا أو علويًا. يمكنك ضبط التفريغ والكتابة العلوية في نفس الوقت على الجانب الأيسر أو الأيمن من المعامل، ولكن يتم دعم التفريغ أو الكتابة العلوية المفردة فقط على الجانب الأيمن. يمكن أيضًا استخدام MathSubscriptElement لضبط الدرجة الرياضية لرقم.

مثال: 

todo:image_alt_text

فئة MathMatrix

تحدد فئة MathMatrix كائن المصفوفة، الذي يتكون من عناصر فرعية مرتبة في صفوف وأعمدة. من المهم ملاحظة أن المصفوفات لا تحتوي على فواصل زمنية مدمجة. لوضع المصفوفة في الأقواس، يجب استخدام كائن الفاصل - IMathDelimiter. يمكن استخدام معاملات فارغة لإنشاء فراغات في المصفوفات.

مثال: 

todo:image_alt_text

فئة MathArray

تحدد فئة MathArray مصفوفة عمودية من المعادلات أو أي كائنات رياضية.

مثال: 

todo:image_alt_text

تنسيق العناصر الرياضية

  • فئة MathBorderBox: ترسم حدودًا مستطيلة أو أي حدود أخرى حول IMathElement.

    مثال: todo:image_alt_text

  • فئة MathBox: تحدد التعبئة المنطقية للعناصر الرياضية. على سبيل المثال، يمكن أن تكون الكائنات المعبأة بمثابة محاكي لمشغل مع أو بدون نقطة محاذاة، أو أن تكون نقطة انقطاع سطر، أو أن تكون مجمعة بحيث لا تسمح بانكسارات الأسطر. على سبيل المثال، يجب تعبئة مشغل “==” لمنع انكسارات الأسطر.

  • فئة MathDelimiter: تحدد كائن الفاصل، الذي يتكون من أحرف فتح وإغلاق (مثل الأقواس، والأقواس، والأطراف، والأعمدة الرأسية)، وواحد أو أكثر من العناصر الرياضية داخلها، تفصلها حرف محدد. أمثلة: (𝑥2); [𝑥2|𝑦2].

    مثال: todo:image_alt_text

  • فئة MathAccent: تحدد دالة التمييز، التي تتكون من قاعدة وعلامة تمييز مركبة.

    مثال: 𝑎́.

  • فئة MathBar: تحدد دالة الشريط، التي تتكون من معامل أساسي و شريط علوي أو سفلي.

    مثال: todo:image_alt_text

  • فئة MathGroupingCharacter: تحدد رمز التجميع فوق أو تحت تعبير، عادة لتسليط الضوء على العلاقات بين العناصر.

    مثال: todo:image_alt_text

العمليات الرياضية

كل عنصر رياضي وتعبير رياضي (عبر MathBlock) ينفذ واجهة IMathElement . يسمح لك باستخدام العمليات على الهيكل الموجود وتشكيل تعبيرات رياضية أكثر تعقيدًا. جميع العمليات لها مجموعتان من المعلمات: إما IMathElement أو نص كمعاملات. يتم إنشاء مثيلات من فئة MathematicalText بشكل ضمني من السلاسل المحددة عند استخدام معاملات نصية. العمليات الرياضية المتاحة في Aspose.Slides مدرجة أدناه.

طريقة Join

تنضم عنصر رياضي وتشكل كتلة رياضية. على سبيل المثال:

  $element1 = new MathematicalText("x");
  $element2 = new MathematicalText("y");
  $block = $element1->join($element2);

طريقة Divide

تنشئ كسرًا من النوع المحدد مع هذا البسط والمقام المحدد. على سبيل المثال:

  $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

تأخذ الدالة المحددة باستخدام المثيل الحالي كحجة. يمكنك:

على سبيل المثال:

  $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

تضبط المفتاح السفلي والكتابة العلوية. يمكنك ضبط المفتاح السفلي والكتابة العلوية في نفس الوقت على الجانب الأيسر أو الأيمن من المعامل، ولكن يتم دعم المفتاح السفلي أو الكتابة العلوية المفردة فقط على الجانب الأيمن. يمكن أيضًا استخدام Superscript لضبط درجة رياضية لعدد.

مثال:

  $script = new MathematicalText("y")->setSubSuperscriptOnTheLeft("2x", "3z");

طريقة Radical

تحدد الجذر الرياضي من الدرجة المحددة من المعامل المحدد.

مثال:

  $radical = new MathematicalText("x")->radical("3");

طرق SetUpperLimit و SetLowerLimit

تأخذ الحد العلوي أو السفلي. هنا، تشير الأعلى والأسفل ببساطة إلى موقع المعامل بالنسبة للقاعدة.

لننظر في تعبير: 

todo:image_alt_text

يمكن إنشاء مثل هذه التعبيرات من خلال مجموعة من فئات MathFunction و MathLimit وعمليات IMathElement كما يلي:

  $mathExpression = new MathematicalText("lim")->setLowerLimit("x→∞")->function("x");

طرق Nary و Integral

تقوم كل من 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();