معادلات الرياضيات في PowerPoint
نظرة عامة
في PowerPoint، من الممكن كتابة معادلة رياضية أو صيغة وعرضها في العرض التقديمي. لتحقيق ذلك، يتم تمثيل العديد من الرموز الرياضية في PowerPoint ويمكن إضافتها إلى النص أو المعادلة. لذلك، يتم استخدام مُنشئ المعادلات الرياضية في PowerPoint، الذي يساعد في إنشاء صيغ معقدة مثل:
- كسر رياضي
- جذري رياضي
- دالة رياضية
- حدود ودوال لوغاريتمية
- عمليات N-ary
- مصفوفة
- مشغلات كبيرة
- دوال الجيب، جيب التمام
لإضافة معادلة رياضية في PowerPoint، يتم استخدام قائمة إدراج -> معادلة:
سيؤدي ذلك إلى إنشاء نص رياضي في XML يمكن عرضه في PowerPoint كما يلي:
يقدم PowerPoint العديد من الرموز الرياضية لإنشاء معادلات رياضية. ومع ذلك، فإن إنشاء معادلات رياضية معقدة في PowerPoint غالبًا لا ينتج عنه نتائج جيدة ومهنية. يلجأ المستخدمون، الذين يحتاجون إلى إنشاء عروض تقديمية رياضية بشكل متكرر، إلى استخدام حلول طرف ثالث لإنشاء صيغ رياضية رائعة.
باستخدام Aspose.Slide API، يمكنك العمل مع المعادلات الرياضية في عروض PowerPoint برمجيًا في C#. أنشئ تعبيرات رياضية جديدة أو حرر التعبيرات التي تم إنشاؤها مسبقًا. كما أن تصدير الهياكل الرياضية إلى الصور مدعوم جزئيًا.
كيفية إنشاء معادلة رياضية
تستخدم العناصر الرياضية لبناء أي منشآت رياضية مع أي مستوى من التعشيش. تشكل مجموعة خطية من العناصر الرياضية كتلة رياضية ممثلة بواسطة MathBlockclass. تعد MathBlockclass في الأساس تعبيرًا رياضيًا منفصلًا أو صيغة أو معادلة. MathPortion هي جزء رياضي، يُستخدم لحمل نص رياضي (لا تخلط بينها وبين Portion). يتيح MathParagraphالتلاعب بمجموعة من الكتل الرياضية. الفصول المذكورة أعلاه هي المفتاح للعمل مع معادلات الرياضيات في PowerPoint عبر Aspose.Slides API.
لنرى كيف يمكننا إنشاء المعادلة الرياضية التالية عبر Aspose.Slides API:
لإضافة تعبير رياضي على الشريحة، أولاً، أضف شكلًا سيكون يحتوي على النص الرياضي:
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 كائن الكسر، الذي يتكون من بسط ومقام مفصولين بعرض كسر. يمكن أن يكون عرض الكسر أفقيًا أو مائلًا، اعتمادًا على خصائص الكسر. يُستخدم كائن الكسر أيضًا لتمثيل دالة الكومة، التي تضع عنصرًا فوق عنصر آخر، بدون عرض كسر.
مثال:
فئة MathRadical
تحدد MathRadicalclass دالة الجذر (الجذر الرياضي)، التي تتكون من قاعدة، ودرجة اختيارية.
مثال:
فئة MathFunction
تحدد MathFunctionclass دالة من وسيط. يحتوي على الخصائص: Name - اسم الدالة وBase - وسيط الدالة.
مثال:
فئة MathNaryOperator
تحدد MathNaryOperatorclass كائن رياضي N-ary، مثل الجمع والتكامل. يتكون من مشغل، قاعدة (أو وسيط)، وحدود علوية وسفلية اختيارية. تشمل أمثلة مشغلات N-ary الجمع، الاتحاد، التقاطع، التكامل.
لا تشمل هذه الفئة المشغلين البسيطين مثل الجمع، الطرح، وما إلى ذلك. يتم تمثيلهم بعنصر نصي واحد - MathematicalText.
مثال:
فئة MathLimit
تحدد MathLimitclass الحد العلوي أو السفلي. تحدد كائن الحد، الذي يتكون من نص على قاعدة النص ونص بحجم مصغر عالٍ أو منخفض مباشرةً فوقه أو تحته. لا تتضمن هذه العنصر كلمة “lim”، ولكنها تسمح لك بوضع النص في الجزء العلوي أو السفلي من التعبير. لذلك، يتم إنشاء التعبير
باستخدام مجموعة من عناصر MathFunctionوMathLimit بهذه الطريقة:
var funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
var mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));
فئات MathSubscriptElement و MathSuperscriptElement و MathRightSubSuperscriptElement و MathLeftSubSuperscriptElement
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
تحدد الفئات التالية مؤشرًا سفليًا أو مؤشراً علويًا. يمكنك تعيين الكتابة السفلية والكتابة الفوقية في نفس الوقت على الجانب الأيسر أو الأيمن من وسيط، ولكن يتم دعم الكتابة السفلية أو الكتابة الفوقية المفردة فقط على الجانب الأيمن. يمكن أيضًا استخدام MathSubscriptElementلتعيين الدرجة الرياضية لعدد.
مثال:
فئة MathMatrix
تحدد MathMatrixclass كائن المصفوفة، الذي يتكون من عناصر فرعية مرتبة في صفوف وأعمدة واحدة أو أكثر. من المهم ملاحظة أن المصفوفات لا تحتوي على محددات مدمجة. لوضع المصفوفة في الأقواس، يجب عليك استخدام كائن المحدد - IMathDelimiter. يمكن استخدام وسيطات فارغة لإنشاء فجوات في المصفوفات.
مثال:
فئة MathArray
تحدد MathArrayclass مصفوفة عمودية من المعادلات أو أي كائنات رياضية.
مثال:
تنسيق العناصر الرياضية
-
MathBorderBoxclass: يرسم حدًا مستطيلًا أو حدًا آخر حول IMathElement.
مثال:
-
MathBoxclass: تحدد تغليفًا منطقيًا (تعبئة) للعناصر الرياضية. على سبيل المثال، يمكن أن يكون الكائن المعبأ بمثابة محاكي عامل تشغيل مع أو بدون نقطة محاذاة، أو أن يكون نقطة كسر سطر، أو يتم تجميعه بحيث لا يُسمح بحدوث فواصل سطر ضمن ذلك. على سبيل المثال، يجب أن يتم تعبئة عامل التشغيل “==” لمنع حدوث فواصل سطر.
-
MathDelimiterclass: تحدد كائن المحدد، الذي يتكون من أحرفopening وclosing (مثل الأقواس، والأقفال، والأقواس، والأعمدة الرأسية)، وواحد أو أكثر من العناصر الرياضية بالداخل، مفصولة بحرف محدد. أمثلة: (𝑥2); [𝑥2|𝑦2].
مثال:
-
MathAccentclass: تحدد دالة التمييز، التي تتكون من قاعدة وعلامة مميزة تجمع.
مثال: 𝑎́.
-
MathBarclass: تحدد دالة الشريط، والتي تتكون من وسيط أساسي وشريط علوي أو سفلي.
مثال:
-
MathGroupingCharacterclass: تحدد رمز التجميع فوق أو تحت تعبير، عادةً لإبراز العلاقات بين العناصر.
مثال:
العمليات الرياضية
يتم تنفيذ كل عنصر رياضي وتعبير رياضي (عبر MathBlock) الواجهة IMathElementواجهة. يسمح لك ذلك باستخدام العمليات على الهيكل الحالي وشكل التعبيرات الرياضية الأكثر تعقيدًا. تحتوي جميع العمليات على مجموعتين من المعلمات: إما IMathElementأو سلسلة كوسائط. يتم إنشاء مثيلات فئة MathematicalTextimplicit من السلاسل المحددة عند استخدام وسائط سلسلة. تتوفر العمليات الرياضية في Aspose.Slides مدرجة أدناه.
طريقة Join
تنضم إلى عنصر رياضي وتشكيل كتلة رياضية. على سبيل المثال:
IMathElement element1 = new MathematicalText("x");
IMathElement element2 = new MathematicalText("y");
IMathBlock block = element1.Join(element2);
طريقة Divide
- Divide(String)
- Divide(IMathElement)
- Divide(String, MathFractionTypes)
- Divide(IMathElement, MathFractionTypes)
ينشئ كسرًا من النوع المحدد باستخدام البسط المحدد والمقام المحدد. على سبيل المثال:
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
- AsArgumentOfFunction(String)
- AsArgumentOfFunction(IMathElement)
- AsArgumentOfFunction(MathFunctionsOfOneArgument)
- AsArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- AsArgumentOfFunction(MathFunctionsOfTwoArguments, String)
تأخذ الدالة المحددة باستخدام العينة الحالية كوسيط. يمكنك:
- تحديد سلسلة كاسم الدالة، على سبيل المثال “cos”.
- اختيار واحدة من القيم المحددة مسبقًا من التعدادات MathFunctionsOfOneArgumentأو MathFunctionsOfTwoArguments، مثل MathFunctionsOfOneArgument.ArcSin.
- تحديد مثيل من IMathElement.
على سبيل المثال:
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
- SetSubscript(String)
- SetSubscript(IMathElement)
- SetSuperscript(String)
- SetSuperscript(IMathElement)
- SetSubSuperscriptOnTheRight(String, String)
- SetSubSuperscriptOnTheRight(IMathElement, IMathElement)
- SetSubSuperscriptOnTheLeft(String, String)
- SetSubSuperscriptOnTheLeft(IMathElement, IMathElement)
تحدد الكتابة السفلية والكتابة الفوقية. يمكنك تعيين الكتابة السفلية والكتابة الفوقية في نفس الوقت على الجانب الأيسر أو الأيمن من الوسيطة، ولكن يتم دعم الكتابة السفلية أو الكتابة الفوقية المفردة فقط على الجانب الأيمن. يمكن أيضًا استخدام الكتابة الفوقية لتعيين الدرجة الرياضية لعدد.
مثال:
var script = new MathematicalText("y").SetSubSuperscriptOnTheLeft("2x", "3z");
طريقة Radical
تحدد الجذر الرياضي للدرجة المحددة من الوسيطة المحددة.
مثال:
var radical = new MathematicalText("x").Radical("3");
طرق SetUpperLimit و SetLowerLimit
تأخذ الحد العلوي أو السفلي. يشير الحد العلوي والأسفل ببساطة إلى موقع الوسيطة بالنسبة للأساس.
لننظر في تعبير:
يمكن إنشاء مثل هذه التعبيرات من خلال مجموعة من الفصول MathFunctionوMathLimit، وعمليات IMathElementكما يلي:
var mathExpression = MathText.Create("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 الممثل بواسطة النوع 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();