MathObjectType

MathObjectType enumeration

Gibt den Typ eines Office Math-Objekts an.

public enum MathObjectType

Werte

NameWertBeschreibung
OMath0Instanz eines mathematischen Textes.
OMathPara1Mathe-Absatz oder Anzeige-Mathe-Zone, die einen oder mehrere enthältOMath Elemente, die sich im Anzeigemodus befinden.
Accent2Akzentfunktion, bestehend aus einer Basis und einem kombinierenden diakritischen Zeichen.
Bar3Balkenfunktion, bestehend aus einem Basisargument und einem Ober- oder Unterstrich.
BorderBox4Border Box-Objekt, bestehend aus einem Rahmen, der um eine Instanz eines mathematischen Textes (z. B. eine Formel oder Gleichung) gezogen wird.
Box5Box-Objekt, das zum Gruppieren von Komponenten einer Gleichung oder einer anderen Instanz eines mathematischen Textes verwendet wird.
Delimiter6Trennzeichenobjekt, bestehend aus öffnenden und schließenden Trennzeichen (z. B. Klammern, Klammern, Klammern und vertikalen Balken) und einem darin enthaltenen Element.
Degree7Abschluss im mathematischen Radikal.
Argument8Argumentobjekt. Schließt Office Math-Entitäten ein, wenn sie als Argumente für andere Office Math-Entitäten verwendet werden.
Array9Array-Objekt, bestehend aus einer oder mehreren Gleichungen, Ausdrücken oder anderen mathematischen Textläufen , die als Einheit in Bezug auf den umgebenden Text in der Zeile vertikal ausgerichtet werden können.
Fraction10Bruchobjekt, bestehend aus einem Zähler und einem Nenner, getrennt durch einen Bruchstrich.
Denominator11Nenner eines Bruchobjekts.
Numerator12Zähler des Fraction-Objekts.
Function13Function-Apply-Objekt, das aus einem Funktionsnamen und einem Argumentelement besteht, auf das reagiert wird.
FunctionName14Name der Funktion. Funktionsnamen lauten beispielsweise sin und cos.
GroupCharacter15Group-Character-Objekt, bestehend aus einem über oder unter dem Text gezeichneten Zeichen, häufig mit dem Zweck, Elemente visuell zu gruppieren
Limit16Untere Grenze derLowerLimit Objekt und die Obergrenze desUpperLimit Funktion.
LowerLimit17Lower-Limit-Objekt, bestehend aus Text auf der Grundlinie und verkleinertem Text direkt darunter.
UpperLimit18Obergrenzenobjekt, bestehend aus Text auf der Grundlinie und verkleinertem Text direkt darüber.
Matrix19Matrixobjekt, bestehend aus einem oder mehreren Elementen, die in einer oder mehreren Zeilen und einer oder mehreren Spalten angeordnet sind.
MatrixRow20Einzelne Zeile der Matrix.
NAry21N-äres Objekt, bestehend aus einem n-ären Objekt, einer Basis (oder einem Operanden) und optionalen Ober- und Untergrenzen.
Phantom22Phantomobjekt.
Radical23Radikalobjekt, bestehend aus einem Radikal, einem Basiselement und einem optionalen Grad .
SubscriptPart24Index des Objekts, das einen Indexteil haben kann.
SuperscriptPart25Hochgestellt des hochgestellten Objekts.
PreSubSuperscript26Pre-Sub-Superscript-Objekt, das aus einem Basiselement und einem links von der Basis platzierten Subscript und Superscript besteht.
Subscript27Subscript-Objekt, das aus einem Basiselement und einem darunter und rechts davon platzierten verkleinerten Skript besteht.
SubSuperscript28Tiefgestelltes Objekt, das aus einem Basiselement, einem darunter und rechts platzierten verkleinerten Skript und einem darüber und rechts platzierten verkleinerten Skript besteht.
Supercript29Hochgestelltes Objekt, das aus einem Basiselement und einer darüber und rechts davon platzierten verkleinerten Schrift besteht.

Beispiele

Zeigt, wie die Knotenstruktur jedes Office-Mathe-Knotens in einem Dokument gedruckt wird.

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

    // Wenn wir einen zusammengesetzten Knoten erhalten, der einen Dokumentbesucher akzeptiert, besucht der Besucher den akzeptierenden Knoten.
    // und durchläuft dann alle untergeordneten Knoten des Knotens in einer Tiefe-zuerst-Methode.
    // Der Besucher kann jeden besuchten Knoten lesen und ändern.
    doc.Accept(visitor);

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

/// <summary>
/// Durchläuft den nicht-binären Baum der untergeordneten Knoten eines Knotens.
/// Erstellt eine Karte in Form einer Zeichenfolge aller gefundenen OfficeMath-Knoten und ihrer untergeordneten Knoten.
/// </summary>
public class OfficeMathStructurePrinter : DocumentVisitor
{
    public OfficeMathStructurePrinter()
    {
        mBuilder = new StringBuilder();
        mVisitorIsInsideOfficeMath = false;
    }

    /// <summary>
    /// Ruft den Klartext des vom Besucher gesammelten Dokuments ab.
    /// </summary>
    public string GetText()
    {
        return mBuilder.ToString();
    }

    /// <summary>
    /// Wird aufgerufen, wenn im Dokument ein Run-Knoten gefunden wird.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        if (mVisitorIsInsideOfficeMath) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Wird aufgerufen, wenn im Dokument ein OfficeMath-Knoten gefunden wird.
    /// </summary>
    public override VisitorAction VisitOfficeMathStart(OfficeMath officeMath)
    {
        IndentAndAppendLine("[OfficeMath start] Math object type: " + officeMath.MathObjectType);
        mDocTraversalDepth++;
        mVisitorIsInsideOfficeMath = true;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Wird aufgerufen, nachdem alle untergeordneten Knoten eines OfficeMath-Knotens besucht wurden.
    /// </summary>
    public override VisitorAction VisitOfficeMathEnd(OfficeMath officeMath)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[OfficeMath end]");
        mVisitorIsInsideOfficeMath = false;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Hängen Sie eine Zeile an den StringBuilder an und rücken Sie sie ein, je nachdem, wie tief sich der Besucher im Dokumentbaum befindet.
    /// </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;
}

Siehe auch