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

نظرة عامة

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

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

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

todo:image_alt_text

سيؤدي ذلك إلى إنشاء نص رياضي في XML يمكن عرضه في PowerPoint كما يلي:

todo:image_alt_text

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

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

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

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

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

todo:image_alt_text

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


 using (Presentation pres = new Presentation())

{

    var mathShape = pres.Slides[0].Shapes.AddMathShape(0, 0, 720, 150);

}

بعد الإنشاء، سيتضمن الشكل بالفعل فقرة واحدة مع جزء رياضي بشكل افتراضي. تعد MathPortionclass جزءًا يحتوي على نص رياضي في داخله. للوصول إلى المحتوى الرياضي داخل MathPortion، اشير إلى متغير MathParagraph:


 var mathParagraph = (mathShape.TextFrame.Paragraphs[0].Portions[0] as MathPortion).MathParagraph;

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


 var fraction = new MathematicalText("x").Divide("y");

mathParagraph.Add(new MathBlock(fraction));

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


 var mathBlock = new MathematicalText("c")

    .SetSuperscript("2")

    .Join("=")

    .Join(new MathematicalText("a").SetSuperscript("2"))

    .Join("+")

    .Join(new MathematicalText("b").SetSuperscript("2"));

تُنفذ عمليات واجهة IMathElement في أي نوع من العناصر، بما في ذلك MathBlock.

الكود المصدر الكامل:


 using (Presentation pres = new Presentation())

{

    IAutoShape mathShape = pres.Slides[0].Shapes.AddMathShape(0, 0, 720, 150);

   var mathParagraph = (mathShape.TextFrame.Paragraphs[0].Portions[0] as MathPortion).MathParagraph;



   var fraction = new MathematicalText("x").Divide("y");

    mathParagraph.Add(new MathBlock(fraction));



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

}

أنواع العناصر الرياضية

تتكون التعبيرات الرياضية من تسلسلات من العناصر الرياضية. يُمثل تسلسل العناصر الرياضية كتلة رياضية، وتشكل حجج العناصر الرياضية تعشيشًا شبيهاً بالشجرة.

هناك العديد من أنواع العناصر الرياضية التي يمكن استخدامها لبناء كتلة رياضية. يمكن تضمين كل من هذه العناصر (تجميعها) في عنصر آخر. بمعنى، العناصر هي في الواقع حاويات للأخرى، تشكل بنية شبيهة بالشجرة. أبسط نوع من العناصر هو الذي لا يحتوي على عناصر أخرى من النص الرياضي.

يطبق كل نوع من عناصر الرياضيات واجهة IMathElement، مما يسمح باستخدام مجموعة شائعة من العمليات الرياضية على أنواع مختلفة من عناصر الرياضيات.

فئة MathematicalText

تمثل MathematicalTextclass نصًا رياضيًا - العنصر الأساسي لجميع الإنشاءات الرياضية. يمكن أن يمثل النص الرياضي المعاملات والمشغلات والمتغيرات وأي نص خطي آخر.

مثال: 𝑎=𝑏+𝑐

فئة MathFraction

تحدد MathFractionclass كائن الكسر، الذي يتكون من بسط ومقام مفصولين بعرض كسر. يمكن أن يكون عرض الكسر أفقيًا أو مائلًا، اعتمادًا على خصائص الكسر. يُستخدم كائن الكسر أيضًا لتمثيل دالة الكومة، التي تضع عنصرًا فوق عنصر آخر، بدون عرض كسر.

مثال:

todo:image_alt_text

فئة MathRadical

تحدد MathRadicalclass دالة الجذر (الجذر الرياضي)، التي تتكون من قاعدة، ودرجة اختيارية.

مثال:

todo:image_alt_text

فئة MathFunction

تحدد MathFunctionclass دالة من وسيط. يحتوي على الخصائص: Name - اسم الدالة وBase - وسيط الدالة.

مثال:

todo:image_alt_text

فئة MathNaryOperator

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

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

مثال:

todo:image_alt_text

فئة MathLimit

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

todo:image_alt_text

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


 var funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));

var mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));

فئات MathSubscriptElement و MathSuperscriptElement و MathRightSubSuperscriptElement و MathLeftSubSuperscriptElement

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

مثال:

todo:image_alt_text

فئة MathMatrix

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

مثال:

todo:image_alt_text

فئة MathArray

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

مثال:

todo:image_alt_text

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

  • MathBorderBoxclass: يرسم حدًا مستطيلًا أو حدًا آخر حول IMathElement.

    مثال: todo:image_alt_text

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

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

    مثال: todo:image_alt_text

  • MathAccentclass: تحدد دالة التمييز، التي تتكون من قاعدة وعلامة مميزة تجمع.

    مثال: 𝑎́.

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

    مثال: todo:image_alt_text

  • MathGroupingCharacterclass: تحدد رمز التجميع فوق أو تحت تعبير، عادةً لإبراز العلاقات بين العناصر.

    مثال: todo:image_alt_text

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

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

طريقة Join

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


 IMathElement element1 = new MathematicalText("x");

IMathElement element2 = new MathematicalText("y");

IMathBlock block = element1.Join(element2);

طريقة Divide

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


 IMathElement numerator = new MathematicalText("x");

IMathFraction fraction = numerator.Divide("y", MathFractionTypes.Linear);

طريقة Enclose

تغلق العنصر في أحرف محددة مثل الأقواس أو حرف آخر كتأطير.


 /// <summary>

/// تغلق عنصر رياضي في الأقواس

/// </summary>

IMathDelimiter Enclose();

/// <summary>

/// تغلق هذا العنصر في أحرف محددة مثل الأقواس أو أحرف أخرى كتأطير

/// </summary>

IMathDelimiter Enclose(char beginningCharacter, char endingCharacter);

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


 IMathDelimiter delimiter = new MathematicalText("x"). Enclose('[', ']');

IMathDelimiter delimiter2 = new MathematicalText("elem1").Join("elem2").Enclose();

طريقة Function

تأخذ دالة من وسيط باستخدام الكائن الحالي كاسم الدالة.


 /// <summary>

/// تأخذ دالة من وسيط باستخدام هذه الحالة كاسم للدالة

/// </summary>

/// <param name="functionArgument">وسيط الدالة</param>

IMathFunction Function(IMathElement functionArgument);

IMathFunction Function(string functionArgument);

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


 IMathFunction func = new MathematicalText("sin").Function("x");

طريقة AsArgumentOfFunction

تأخذ الدالة المحددة باستخدام العينة الحالية كوسيط. يمكنك:

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


 var funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));

var func1 = new MathematicalText("2x").AsArgumentOfFunction(funcName);

var func2 = new MathematicalText("x").AsArgumentOfFunction("sin");

var func3 = new MathematicalText("x").AsArgumentOfFunction(MathFunctionsOfOneArgument.Sin);

var func4 = new MathematicalText("x").AsArgumentOfFunction(MathFunctionsOfTwoArguments.Log, "3")

طرق SetSubscript و SetSuperscript و SetSubSuperscriptOnTheRight و SetSubSuperscriptOnTheLeft

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

مثال:


 var script = new MathematicalText("y").SetSubSuperscriptOnTheLeft("2x", "3z");

طريقة Radical

تحدد الجذر الرياضي للدرجة المحددة من الوسيطة المحددة.

مثال:


 var radical = new MathematicalText("x").Radical("3");

طرق SetUpperLimit و SetLowerLimit

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

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

todo:image_alt_text

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


 var mathExpression = MathText.Create("lim").SetLowerLimit("x→∞").Function("x");

طرق Nary و Integral

تقوم طرق Nary و Integral بإنشاء وإرجاع المشغل N-ary الممثل بواسطة النوع INaryOperator. في طريقة Nary، يحدد التعداد MathNaryOperatorTypesنوع المشغل: الجمع، الاتحاد، وما إلى ذلك، دون تضمين التكاملات. في طريقة Integral، هناك عملية متخصصة هي Integral مع تعداد أنواع التكامل MathIntegralTypes.

مثال:


 IMathBlock baseArg = new MathematicalText("x").Join(new MathematicalText("dx").ToBox());

IMathNaryOperator integral = baseArg.Integral(MathIntegralTypes.Simple, "0", "1");

طريقة ToMathArray

ToMathArray تضع العناصر في مصفوفة عمودية. إذا تم استدعاء هذه العملية لمثيل MathBlock، فسيتم وضع جميع العناصر الفرعية في المصفوفة المعادة.

مثال:


 var arrayFunction = new MathematicalText("x").Join("y").ToMathArray();

عمليات التنسيق: Accent و Overbar و Underbar و Group و ToBorderBox و ToBox

  • تحدد طريقة Accent علامة التمييز (حرف في أعلى العنصر).
  • تحدد طرق Overbar و Underbar بارًا في الأعلى أو الأسفل.
  • تحدد طريقة Group العنصر بوضعه في مجموعة باستخدام علامة تجميع مثل قوس سفلي متعرج أو غيره.
  • تحدد طريقة ToBorderBox العنصر بوضعه في صندوق حدود.
  • تحدد طريقة ToBox العنصر بوضعه في صندوق غير مرئي (تجميع منطقي).

أمثلة:


 var accent = new MathematicalText("x").Accent('\u0303');

var bar = new MathematicalText("x").Overbar();

var groupChr = new MathematicalText("x").Join("y").Join("z").Group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);

var borderBox = new MathematicalText("x+y+z").ToBorderBox();

var boxedOperator = new MathematicalText(":=").ToBox();