MathObjectType

MathObjectType enumeration

Указывает тип объекта Office Math.

public enum MathObjectType

Ценности

ИмяЦенностьОписание
OMath0Экземпляр математического текста.
OMathPara1Математический параграф или отображаемая математическая зона, содержащая один или несколькоOMath элементы, находящиеся в режиме отображения.
Accent2Функция ударения, состоящая из основы и объединяющего диакритического знака.
Bar3Функция Bar, состоящая из базового аргумента и верхней или нижней черты.
BorderBox4Объект Border Box, состоящий из рамки, нарисованной вокруг экземпляра математического текста (например, формулы или уравнения)
Box5Объект Box, который используется для группировки компонентов уравнения или другого экземпляра математического текста.
Delimiter6Объект-разделитель, состоящий из открывающих и закрывающих разделителей (таких как круглые скобки, фигурные скобки , квадратные скобки и вертикальные полосы) и элемента, содержащегося внутри.
Degree7Степень в математическом радикале.
Argument8Объект аргумента. Заключает объекты Office Math, когда они используются в качестве аргументов для других объектов Office Math.
Array9Объект массива, состоящий из одного или нескольких уравнений, выражений или другого математического текста, запускает , который можно выровнять по вертикали как единицу относительно окружающего текста в строке.
Fraction10Объект дроби, состоящий из числителя и знаменателя, разделенных чертой дроби.
Denominator11Знаменатель дробного объекта.
Numerator12Числитель объекта Fraction.
Function13Объект Function-Apply, который состоит из имени функции и элемента аргумента, на который воздействует.
FunctionName14Имя функции. Например, имена функций — sin и cos. .
GroupCharacter15Объект Group-Character, состоящий из символа, нарисованного над или под текстом, часто с целью визуальной группировки элементов
Limit16Нижний пределLowerLimit объект и верхний пределUpperLimit функция.
LowerLimit17Объект нижнего предела, состоящий из текста на базовой линии и текста уменьшенного размера непосредственно под ней.
UpperLimit18Объект верхнего предела, состоящий из текста на базовой линии и текста уменьшенного размера непосредственно над ней.
Matrix19Матричный объект, состоящий из одного или нескольких элементов, расположенных в одной или нескольких строках и одном или нескольких столбцах.
MatrixRow20Одна строка матрицы.
NAry21N-арный объект, состоящий из n-арного объекта, базового (или операнда) и необязательных верхнего и нижнего пределов.
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>
    /// Вызывается, когда в документе встречается узел Run.
    /// </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;
}

Смотрите также