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

نظرة عامة

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

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

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

todo:image_alt_text

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

todo:image_alt_text

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

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

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

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

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

todo:image_alt_text

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

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as pres:
    mathShape = pres.slides[0].shapes.add_math_shape(0, 0, 720, 150)

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

    mathParagraph = mathShape.text_frame.paragraphs[0].portions[0].math_paragraph

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

    fraction = math.MathematicalText("x").divide("y")
    mathParagraph.add(math.MathBlock(fraction))

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

    mathBlock = (
        math.MathematicalText("c").set_superscript("2").
            join("=").
            join(math.MathematicalText("a").set_superscript("2")).
            join("+").
            join(math.MathematicalText("b").set_superscript("2")))

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

مثال كامل على كود المصدر:

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as pres:
    mathShape = pres.slides[0].shapes.add_math_shape(0, 0, 720, 150)

    mathParagraph = mathShape.text_frame.paragraphs[0].portions[0].math_paragraph

    fraction = math.MathematicalText("x").divide("y")
    mathParagraph.add(math.MathBlock(fraction))

    mathBlock = (
        math.MathematicalText("c").set_superscript("2").
            join("=").
            join(math.MathematicalText("a").set_superscript("2")).
            join("+").
            join(math.MathematicalText("b").set_superscript("2")))

    mathParagraph.add(mathBlock)

    pres.save("math.pptx", slides.export.SaveFormat.PPTX)

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

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

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

كل نوع من عناصر الرياضيات ي实现theIMathElementinterface، مما يسمح باستخدام مجموعة شائعة من العمليات الرياضية على أنواع مختلفة من عناصر الرياضيات.

فئة MathematicalText

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

مثال: 𝑎=𝑏+𝑐

فئة MathFraction

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

مثال:

todo:image_alt_text

فئة MathRadical

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

مثال:

todo:image_alt_text

فئة MathFunction

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

مثال:

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 = math.MathLimit(math.MathematicalText("lim"), math.MathematicalText("𝑥→∞"))
    mathFunc = math.MathFunction(funcName, math.MathematicalText("𝑥"))

فئات MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

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

مثال:

todo:image_alt_text

فئة MathMatrix

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

مثال:

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 = math.MathematicalText("x")
    element2 = math.MathematicalText("y")
    block = element1.join(element2)

طريقة Divide

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

    numerator = math.MathematicalText("x")
    fraction = numerator.divide("y", math.MathFractionTypes.LINEAR)

طريقة Enclose

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

# يحيط عنصر رياضي بأقواس
MathDelimiter enclose()

# يحيط هذا العنصر بحروف محددة مثل الأقواس أو حروف أخرى كإطار
MathDelimiter enclose(char beginningCharacter, char endingCharacter)

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

    delimiter = math.MathematicalText("x").enclose('[', ']')
    delimiter2 = math.MathematicalText("elem1").join("elem2").enclose()

طريقة Function

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

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

func = math.MathematicalText("sin").function("x")

طريقة AsArgumentOfFunction

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

  • تحديد سلسلة كاسم الدالة، على سبيل المثال “cos”.
  • اختيار واحدة من القيم المحددة مسبقًا للتعدادات MathFunctionsOfOneArgument أو MathFunctionsOfTwoArguments، على سبيل المثال MathFunctionsOfOneArgument.ArcSin.
  • اختيار مثيل IMathElement.

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

    funcName = math.MathLimit(math.MathematicalText("lim"), math.MathematicalText("𝑛→∞"))
    func1 = math.MathematicalText("2x").as_argument_of_function(funcName)
    func2 = math.MathematicalText("x").as_argument_of_function("sin")
    func3 = math.MathematicalText("x").as_argument_of_function(math.MathFunctionsOfOneArgument.SIN)
    func4 = math.MathematicalText("x").as_argument_of_function(math.MathFunctionsOfTwoArguments.LOG, "3")

طرق SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft

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

مثال:

    script = math.MathematicalText("y").set_sub_superscript_on_the_left("2x", "3z")

طريقة Radical

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

مثال:

    radical = math.MathematicalText("x").radical("3")

طرق SetUpperLimit وSetLowerLimit

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

دعونا نعتبر تعبيرًا:

todo:image_alt_text

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

mathExpression = math.MathematicalText("lim").set_lower_limit("x→∞").function("x")

طرق Nary وIntegral

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

مثال:

    baseArg = math.MathematicalText("x").join(math.MathematicalText("dx").to_box())
    integral = baseArg.integral(math.MathIntegralTypes.SIMPLE, "0", "1")

طريقة ToMathArray

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

مثال:

    arrayFunction = math.MathematicalText("x").join("y").to_math_array()

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

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

أمثلة:

    accent = math.MathematicalText("x").accent(chr(0x0303))
    bar = math.MathematicalText("x").overbar()
    groupChr = math.MathematicalText("x").join("y").join("z").group(chr(0x23E1), 
            math.MathTopBotPositions.BOTTOM, 
            math.MathTopBotPositions.TOP)
    borderBox = math.MathematicalText("x+y+z").to_border_box()
    boxedOperator = math.MathematicalText(":=").to_box()