MathObjectType

MathObjectType enumeration

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

public enum MathObjectType

قيم

اسمقيمةوصف
OMath0مثيل النص الرياضي.
OMathPara1فقرة الرياضيات، أو عرض منطقة الرياضيات، التي تحتوي على واحدة أو أكثرOMath العناصر الموجودة في وضع العرض.
Accent2دالة التشكيل، وتتكون من قاعدة وعلامة تشكيل مجمعة.
Bar3دالة شريطية، تتكون من وسيطة أساسية وشريط علوي أو شريط سفلي.
BorderBox4كائن Border Box، الذي يتكون من حد مرسوم حول مثيل نص رياضي (مثل صيغة أو معادلة)
Box5كائن Box، الذي يُستخدم لتجميع مكونات المعادلة أو مثيل آخر للنص الرياضي.
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كائن Pre-Sub-Superscript، والذي يتكون من عنصر أساسي ومنخفض ومرتفع يقع على يسار القاعدة.
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 name="text"></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;
}

أنظر أيضا