2017-05-09 5 views
0

Ich frage mich, ob es möglich ist, die Metriken für die Grundlinie der mrow Elemente in einer gerenderten Mathjax-Gleichung zu extrahieren, speziell mit dem SVG-Ausgang Jax.Get Layout-Metriken in MathJax

Zum Beispiel the mml-sample page (raw Version here) ein Blockelement mit 3 mrow Elemente, und ich mich, wenn es möglich ist, die Position zu extrahieren (vorzugsweise die x- und y-Positionen der Endpunkte) von der Basislinie davon Elemente.

+0

Wenn Sie nach einer Art von integrierten API sind dann lautet die Antwort nein. Sie können natürlich die Basislinie der Gleichung aus der Höhe und der vertikalen Ausrichtung berechnen, aber es gibt keine Teilausdruck-API. –

Antwort

0

Hier ist die kurze Antwort: Gabel eine Kopie Mathjax und stellen Sie dann die removable flag on the 'g' elements-false, die <g> Elemente zu verhindern, dass die Verschachtelung in der ursprünglichen MML repräsentieren aus entfernt werden - ein durch das der Ursprung der Baseline tun können gelesen werden und von der transform="translate(...)"transform="scale(...)" Attribute

nächstes exportieren andere Metriken, wie zum Beispiel:

  • svg.H: Höhe über der Basislinie des gesamten (sub) Ausdruck (unskalierten)
  • svg.D: Tiefe unterhalb der Grundlinie des gesamten (sub) Ausdruck (unskalierten)
  • svg.w: Breite des gerenderten Ausdruck (unskalierten)
  • svg.r: rechte Rand (unskalierten)
  • svg.l: linker Rand (unskalierten)
  • svg.scale: Skalierungsfaktor

here und here mit so etwas wie:

svg.element.setAttribute("fm", 
    "{D:" + SVG.Fixed(svg.D,2) + 
    ",H:" + SVG.Fixed(svg.H,2) + 
    ",r:" + SVG.Fixed(svg.r,2) + 
    ",l:" + SVG.Fixed(svg.l,2) + 
    ",w:" + SVG.Fixed(svg.w,2) + 
    ",s:" + SVG.Fixed(svg.scale,5) + 
    "}"); 

Optional das Ausmaß der unnötigen Verschachtelung zu reduzieren, ändern svg.removeable-(svg.removeable || svg.element.nodeName === "g") in this if statement