MathObjectType

MathObjectType enumeration

يحدد نوع كائن Office Math.

public enum MathObjectType

قيم

اسمقيمةوصف
OMath0مثال للنص الرياضي.
OMathPara1فقرة رياضية، أو منطقة عرض رياضية، تحتوي على فقرة رياضية واحدة أو أكثرOMath العناصر الموجودة في وضع العرض.
Accent2دالة التشكيل، تتكون من قاعدة وعلامة تشكيلية مركبة.
Bar3دالة Bar، تتكون من وسيطة أساسية وشريط علوي أو شريط سفلي.
BorderBox4كائن Border Box، يتكون من حدود مرسومة حول مثيل من النص الرياضي (مثل الصيغة أو المعادلة)
Box5كائن مربع، يستخدم لتجميع مكونات معادلة أو مثيل آخر للنص الرياضي.
Delimiter6كائن فاصل يتكون من فواصل فتح وإغلاق (مثل الأقواس، وأقواس ، والأقواس المربعة، والأشرطة الرأسية)، وعنصر موجود بداخله.
Degree7درجة في الجذر الرياضي.
Argument8كائن وسيطة . يُغلِق كيانات Office Math عند استخدامها كوسائط لكيانات Office Math أخرى.
Array9كائن مصفوفة يتكون من معادلة واحدة أو أكثر أو تعبير أو نص رياضي آخر يعمل ويمكن محاذاته رأسياً كوحدة بالنسبة للنص المحيط على السطر.
Fraction10كائن كسري، يتكون من بسط ومقام مفصولين بشريط كسري.
Denominator11مقام الكسر.
Numerator12بسط كائن الكسر.
Function13كائن تطبيق الوظيفة، والذي يتكون من اسم الوظيفة وعنصر الحجة الذي تم التصرف عليه.
FunctionName14اسم الدالة. على سبيل المثال، أسماء الدوال هي: sin وcos.
GroupCharacter15كائن مجموعة الأحرف، يتكون من حرف مرسوم أعلى أو أسفل النص، غالبًا بغرض تجميع العناصر بصريًا
Limit16الحد الأدنى لـLowerLimit الكائن و الحد الأعلى لـUpperLimit دالة.
LowerLimit17كائن الحد الأدنى، يتكون من نص على خط الأساس ونص بحجم مخفض أسفله مباشرة.
UpperLimit18كائن الحد الأعلى، يتكون من نص على خط الأساس ونص بحجم مخفض أعلى منه مباشرة.
Matrix19كائن مصفوفة يتكون من عنصر واحد أو أكثر موزعة في صف واحد أو أكثر وعمود واحد أو أكثر.
MatrixRow20صف واحد من المصفوفة.
NAry21كائن N-ary، يتكون من كائن N-ary، وقاعدة (أو متغير)، وحدود علوية وسفلية اختيارية.
Phantom22كائن شبحي.
Radical23كائن جذري، يتكون من جذر وعنصر أساسي ودرجة اختيارية .
SubscriptPart24مؤشر الكائن الذي يمكن أن يحتوي على جزء مؤشر.
SuperscriptPart25أعلى الكائن العلوي.
PreSubSuperscript26كائن ما قبل النص العلوي الفرعي، والذي يتكون من عنصر أساسي ونص سفلي ونص علوي موضوعين على يسار القاعدة.
Subscript27كائن فرعي، يتكون من عنصر أساسي ونص برمجي بحجم مخفض موضوع أسفله وإلى اليمين.
SubSuperscript28كائن علوي فرعي، يتكون من عنصر أساسي، ونص مخفض الحجم موضوع أسفله وإلى اليمين، ونص مخفض الحجم موضوع أعلىه وإلى اليمين.
Supercript29كائن علوي، يتكون من عنصر أساسي ونص بحجم مخفض موضوع أعلى وإلى اليمين.

أمثلة

يوضح كيفية طباعة بنية العقدة لكل عقدة رياضيات مكتبية في مستند.

public void OfficeMathToText()
{
    Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
    OfficeMathStructurePrinter visitor = new OfficeMathStructurePrinter();

    // عندما نحصل على عقدة مركبة لقبول زائر مستند، يقوم الزائر بزيارة العقدة المستقبلة،
    // ثم يمر عبر جميع أبناء العقدة بطريقة العمق أولاً.
    //يمكن للزائر قراءة وتعديل كل عقدة تمت زيارتها.
    doc.Accept(visitor);

    Console.WriteLine(visitor.GetText());
}

/// <summary>
/// يجتاز شجرة العقد غير الثنائية المكونة من عقد فرعية.
/// إنشاء خريطة في شكل سلسلة من جميع عقد OfficeMath التي تمت مواجهتها وأطفالها.
/// </summary>
public class OfficeMathStructurePrinter : DocumentVisitor
{
    public OfficeMathStructurePrinter()
    {
        mBuilder = new StringBuilder();
        mVisitorIsInsideOfficeMath = false;
    }

    /// <summary>
    /// يحصل على النص العادي للمستند الذي جمعه الزائر.
    /// </summary>
    public string GetText()
    {
        return mBuilder.ToString();
    }

    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة تشغيل في المستند.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        if (mVisitorIsInsideOfficeMath) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة OfficeMath في المستند.
    /// </summary>
    public override VisitorAction VisitOfficeMathStart(OfficeMath officeMath)
    {
        IndentAndAppendLine("[OfficeMath start] Math object type: " + officeMath.MathObjectType);
        mDocTraversalDepth++;
        mVisitorIsInsideOfficeMath = true;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// يتم استدعاؤها بعد زيارة جميع العقد الفرعية لعقدة OfficeMath.
    /// </summary>
    public override VisitorAction VisitOfficeMathEnd(OfficeMath officeMath)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[OfficeMath end]");
        mVisitorIsInsideOfficeMath = false;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// أضف سطرًا إلى StringBuilder وقم بتدويره وفقًا لمدى عمق الزائر في شجرة المستند.
    /// </summary>
    /// <اسم المعلمة="نص"></param>
    private void IndentAndAppendLine(string text)
    {
        for (int i = 0; i < mDocTraversalDepth; i++) mBuilder.Append("|  ");

        mBuilder.AppendLine(text);
    }

    private bool mVisitorIsInsideOfficeMath;
    private int mDocTraversalDepth;
    private readonly StringBuilder mBuilder;
}

أنظر أيضا