معادلات الرياضيات في 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:
لإضافة تعبير رياضي على الشريحة، أولاً، أضف شكلًا سيحتوي على النص الرياضي:
Presentation pres = new Presentation();
try {
IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
} finally {
if (pres != null) pres.dispose();
}
بعد الإنشاء، سيكون الشكل يحتوي بالفعل على فقرة واحدة مع جزء رياضي بشكل افتراضي. تسمح فئة MathPortion بالوصول إلى المحتوى الرياضي داخل MathPortion بالإشارة إلى المتغير MathParagraph :
IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
تسمح لك فئة MathParagraph بقراءة وإضافة وتحرير وحذف كتل رياضية (MathBlock)، التي تتكون من مجموعة من العناصر الرياضية. على سبيل المثال، قم بإنشاء كسر وضعه في العرض التقديمي:
IMathFraction fraction = new MathematicalText("x").divide("y");
mathParagraph.add(new MathBlock(fraction));
كل عنصر رياضي يمثل بفئة معينة تنفذ واجهة IMathElement. توفر هذه الواجهة العديد من الطرق لإنشاء تعبيرات رياضية بسهولة. يمكنك إنشاء تعبير رياضي معقد تمامًا بسطر واحد من الشيفرة. على سبيل المثال، ستبدو نظرية فيثاغورس كما يلي:
IMathBlock mathBlock = new MathematicalText("c")
.setSuperscript("2")
.join("=")
.join(new MathematicalText("a").setSuperscript("2"))
.join("+")
.join(new MathematicalText("b").setSuperscript("2"));
تُنفذ عمليات واجهة IMathElement في أي نوع من العناصر، بما في ذلك MathBlock.
عينة الشيفرة المصدرية الكاملة:
Presentation pres = new Presentation();
try {
IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
IMathFraction fraction = new MathematicalText("x").divide("y");
mathParagraph.add(new MathBlock(fraction));
IMathBlock 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 (pres != null) 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 بهذه الطريقة:
MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
MathFunction 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 مدرجة أدناه.
طريقة الانضمام
ينضم عنصر رياضي ويشكل كتلة رياضية. على سبيل المثال:
IMathElement element1 = new MathematicalText("x");
IMathElement element2 = new MathematicalText("y");
IMathBlock block = element1.join(element2);
طريقة القسمة
- divide(String)
- divide(IMathElement)
- divide(String, MathFractionTypes)
- divide(IMathElement, MathFractionTypes)
يخلق كسرًا من النوع المحدد مع البسط هذا والمقام المحدد. على سبيل المثال:
IMathElement numerator = new MathematicalText("x");
IMathFraction fraction = numerator.divide("y", MathFractionTypes.Linear);
طريقة الإغلاق
يُغلق العنصر في أحرف محددة مثل الأقواس أو حرف آخر كإطار.
/**
* <p>
* Enclose a math element in parenthesis
* </p>
*/
public IMathDelimiter enclose();
/**
* <p>
* Encloses this element in specified characters such as parenthesis or another characters as framing
* </p>
*/
public IMathDelimiter enclose(char beginningCharacter, char endingCharacter);
على سبيل المثال:
IMathDelimiter delimiter = new MathematicalText("x").enclose('[', ']');
IMathDelimiter delimiter2 = new MathematicalText("elem1").join("elem2").enclose();
طريقة الدالة
تأخذ دالة لمعامل مستخدمة الحالية كاسم الدالة.
/**
* <p>
* Takes a function of an argument using this instance as the function name
* </p>
*/
public IMathFunction function(IMathElement functionArgument);
/**
* <p>
* Takes a function of an argument using this instance as the function name
* </p>
*/
public IMathFunction function(String functionArgument);
على سبيل المثال:
IMathFunction func = new MathematicalText("sin").function("x");
طريقة asArgumentOfFunction
- asArgumentOfFunction(String)
- asArgumentOfFunction(IMathElement)
- asArgumentOfFunction(MathFunctionsOfOneArgument)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, String)
تأخذ الدالة المحددة باستخدام المثيل الحالي كحجة. يمكنك:
- تحديد سلسلة كاسم الدالة، على سبيل المثال “cos”.
- اختيار واحدة من القيم المحددة مسبقًا من التعدادات MathFunctionsOfOneArgument أو MathFunctionsOfTwoArguments، على سبيل المثال MathFunctionsOfOneArgument.ArcSin.
- اختيار مثيل من IMathElement.
على سبيل المثال:
MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
IMathFunction func1 = new MathematicalText("2x").asArgumentOfFunction(funcName);
IMathFunction func2 = new MathematicalText("x").asArgumentOfFunction("sin");
IMathFunction func3 = new MathematicalText("x").asArgumentOfFunction(MathFunctionsOfOneArgument.Sin);
IMathFunction 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)
تعيين فهرس سفلي وعلوي. يمكنك تعيين فهرس سفلي وعلوي في نفس الوقت على الجانب الأيسر أو الأيمن من المعامل، لكن يتم دعم الفهرس الفردي أو العلوي فقط على الجانب الأيمن. يمكن أيضًا استخدام الفهرس العلوي لتعيين الدرجة الرياضية لعدد.
مثال:
IMathLeftSubSuperscriptElement script = new MathematicalText("y").setSubSuperscriptOnTheLeft("2x", "3z");
طريقة الجذر
تحدد الجذر الرياضي من الدرجة المحددة من المعامل المحدد.
مثال:
IMathRadical radical = new MathematicalText("x").radical("3");
طرق SetUpperLimit و SetLowerLimit
تأخذ الحد العلوي أو السفلي. هنا، يشير الحد العلوي والسفلي ببساطة إلى موقع المعامل بالنسبة للأساس.
دعونا نفكر في تعبير:
يمكن إنشاء مثل هذه التعابير من خلال مزيج من فئات MathFunction و MathLimit، وعمليات IMathElement كالتالي:
IMathFunction 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.
مثال:
IMathBlock baseArg = new MathematicalText("x").join(new MathematicalText("dx").toBox());
IMathNaryOperator integral = baseArg.integral(MathIntegralTypes.Simple, "0", "1");
طريقة toMathArray
toMathArray تضع العناصر في مصفوفة عمودية. إذا تم استدعاء هذه العملية على مثيل MathBlock، ستوضع جميع العناصر الفرعية في المصفوفة المرتجعة.
مثال:
IMathArray arrayFunction = new MathematicalText("x").join("y").toMathArray();
عمليات التنسيق: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
- تحدد طريقة accent علامة الانحناء (حرف على قمة العنصر).
- تحدد طرق overbar وunderbar شريطًا في الأعلى أو الأسفل.
- تضع طريقة group في مجموعة باستخدام حرف التجميع مثل قوس سفلي ملتوي أو أي شيء آخر.
- تضع طريقة toBorderBox في صندوق حدود.
- تضع طريقة toBox في صندوق غير مرئي (تجميع منطقي).
أمثلة:
IMathAccent accent = new MathematicalText("x").accent('\u0303');
IMathBar bar = new MathematicalText("x").overbar();
IMathGroupingCharacter groupChr = new MathematicalText("x").join("y").join("z").group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);
IMathBorderBox borderBox = new MathematicalText("x+y+z").toBorderBox();
IMathBox boxedOperator = new MathematicalText(":=").toBox();