MathObjectType

MathObjectType enumeration

Gibt den Typ eines Office Math-Objekts an.

public enum MathObjectType

Werte

NameWertBeschreibung
OMath0Instanz eines mathematischen Textes.
OMathPara1Mathe-Absatz oder Anzeigemathematikzone, die einen oder mehrereOMath Elemente, die sich im Anzeigemodus befinden.
Accent2Akzentfunktion, bestehend aus einer Basis und einem verbindenden diakritischen Zeichen.
Bar3Balkenfunktion, bestehend aus einem Basisargument und einem Über- oder Unterstrich.
BorderBox4Border-Box-Objekt, bestehend aus einem Rahmen, der um eine Instanz mathematischen Textes (wie etwa eine Formel oder Gleichung) gezeichnet wird
Box5Box-Objekt, das zum Gruppieren von Komponenten einer Gleichung oder einer anderen Instanz mathematischen Textes verwendet wird.
Delimiter6Trennzeichenobjekt, bestehend aus öffnenden und schließenden Trennzeichen (wie Klammern, geschweiften Klammern, eckigen Klammern und senkrechten Strichen) und einem darin enthaltenen Element.
Degree7Abschluss im mathematischen Radikal.
Argument8Argumentobjekt. Umschließt Office Math-Entitäten, 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 Textzeilen , die vertikal als Einheit in Bezug auf den umgebenden Text in der Zeile ausgerichtet werden können.
Fraction10Bruchobjekt, bestehend aus Zähler und Nenner, getrennt durch einen Bruchstrich.
Denominator11Nenner eines Bruchobjekts.
Numerator12Zähler des Bruchobjekts.
Function13Function-Apply-Objekt, das aus einem Funktionsnamen und einem Argumentelement besteht, auf das eingewirkt wird.
FunctionName14Name der Funktion. Funktionsnamen sind beispielsweise sin und cos.
GroupCharacter15Gruppenzeichenobjekt, bestehend aus einem Zeichen, das über oder unter Text gezeichnet wird, oft mit dem Zweck, Elemente visuell zu gruppieren
Limit16Untergrenze derLowerLimit Objekt und die Obergrenze desUpperLimit Funktion.
LowerLimit17Unteres 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 tiefgestellten Teil haben kann.
SuperscriptPart25Hochgestelltes Objekt des hochgestellten Objekts.
PreSubSuperscript26Pre-Sub-Superscript-Objekt, das aus einem Basiselement und einem links von der Basis platzierten tiefgestellten und hochgestellten Zeichen besteht.
Subscript27Subscript-Objekt, das aus einem Basiselement und einem verkleinerten Script besteht, das rechts darunter platziert ist.
SubSuperscript28Hochgestelltes Objekt, das aus einem Basiselement, einer verkleinerten Schrift darunter rechts und einer verkleinerten Schrift darüber rechts besteht.
Supercript29Hochgestelltes Objekt, das aus einem Basiselement und einer verkleinerten Schrift rechts darüber besteht.

Beispiele

Zeigt, wie die Knotenstruktur jedes Office-Mathematikknotens 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 dazu bringen, einen Dokumentbesucher zu akzeptieren, besucht der Besucher den akzeptierenden Knoten.
    // und durchläuft dann alle untergeordneten Knoten in einer Tiefensuche.
    // 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>
    /// Fügen Sie dem StringBuilder eine Zeile hinzu und rücken Sie sie ein, je nachdem, wie tief der Besucher im Dokumentbaum ist.
    /// </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