2016-06-02 28 views
0

Ich versuche MathML nach Elementarmathematik für lange Addition zu generieren. Aus den Beispielen von W3 website gibt es nur die Zuordnungen ohne Dezimalpunkt, z.Präsentation MathML: Wie Überträge der langen Addition von Dezimalzahlen in Elementary Math korrekt platzieren?

<mstack> 
    <mscarries crossout='updiagonalstrike'> 
    <mn>2</mn> <mn>12</mn> <mscarry crossout='none'> <none/> </mscarry> 
    </mscarries> 
    <mn>2,327</mn> 
    <msrow> <mo>-</mo> <mn> 1,156</mn> </msrow> 
    <msline/> 
    <mn>1,171</mn> 
</mstack> 

Dies wird wie folgt dargestellt: enter image description here

Also, ich meine eigenen MathML-Datei erstellt mit Zahlen mit Dezimalstellen genau. Mein MathML ist:

<math xmlns="http://www.w3.org/1998/Math/MathML"> 
    <mstack> 
    <mn>789.255</mn> 
    <msrow> 
     <mo>+</mo> 
     <mn>56.86</mn> 
    </msrow> 
    <mscarries> 
     <mn>1</mn> 
     <mn>1</mn> 
     <mn>1</mn> 
     <mn>1</mn> 
     <none/> 
     <none/> 
    </mscarries> 
    <msline/> 
    <mn>846.115</mn> 
    </mstack> 
</math> 

Und das Ergebnis ist: enter image description here

Sie können sehen, dass die Überträge nicht richtig platziert sind. Sie beginnen vor (unsichtbarem) Dezimalpunkt nach links, anstatt von der rechten Spalte nach links zu beginnen.

Jeder hat eine Idee, wie kann ich diese Übertragungen korrekt mit Elementary Math nach MathML platzieren? (Ich habe auch versucht, stackalign='right' als ein Attribut von mstack zu verwenden, aber es sieht auch nicht gut aus.)

Vielen Dank im Voraus!

+0

Welche Rendering-Engine verwenden Sie? –

+0

Auch Übertragungen müssen vor die Linie kommen, die sie betreffen. –

+0

Ja, Sie haben recht, wenn Sie 'mscarries' vor der zugehörigen Zeile platzieren, aber in meinem Fall versuche ich die Mathematik nach österreichischen Mathematikschülern darzustellen (was wie oben aussieht). Ich habe versucht, die 'mscarries' auch vor der ersten Zeile zu platzieren. Aber es ändert nichts. Ich benutze die Java-Bibliothek namens fmath von dieser Website: http://www.fmath.info/formula/java/how_to_use.jsp#mathml – APex

Antwort

1

Soweit ich weiß, unterstützt kein webbasierter MathML-Renderer den so genannten "elementaren Mathe" -Abschnitt von MathML 3 gut genug. Wie in den Kommentaren erwähnt, scheint fmathlocation="s" nicht zu unterstützen.

WIRIS am nächsten ist (mit geringen visuellen Störungen), hat MathJax's experimental extension Probleme mit dieser (aufgrund seiner Hacky msline Trick), aber es kann in etwa richtig.

Leider unterscheiden sie sich in Bugs, also hier ist ein MathML-Beispiel für jedes.

folgende Arbeiten gut in WIRIS (aber nicht Mathjax):

<math xmlns="http://www.w3.org/1998/Math/MathML"> 
    <mstack> 
    <mn>789.255</mn> 
    <mscarries location="s"> 
     <mn>1</mn> 
     <mn>1</mn> 
     <mn>1</mn> 
     <none/> 
     <mn>1</mn> 
     <none/> 
     <none/> 
    </mscarries> 
    <msrow> 
     <mo>+</mo> 
     <mn>56.86</mn> 
     <none/> 
    </msrow> 
    <msline/> 
    <mn>846.115</mn> 
    </mstack> 
</math> 

Die nächsten arbeitet mit Mathjax grob ok (mit mml3 Erweiterung, zum Beispiel verwenden http://codepen.io/pkra/pen/QwbJWa), aber nicht WIRIS.

<math xmlns="http://www.w3.org/1998/Math/MathML"> 
    <mstack> 
    <mn>789.255</mn> 
    <mscarries position="-2" location="s"> 
     <mn>1</mn> 
     <mn>1</mn> 
     <mn>1</mn> 
     <none/> 
     <mn>1</mn> 
    </mscarries> 
    <msrow> 
     <mo>+</mo> 
     <mn>56.86</mn> 
     <none/> 
    </msrow> 
    <msline/> 
    <mn>846.115</mn> 
    </mstack> 
</math> 

Disclaimer: Ich Teil des Mathjax Team bin.