Handle stretchy bases in mmultiscripts
This commit is contained in:
parent
51742a79cc
commit
ed7807ac36
|
@ -32,20 +32,28 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
|
||||||
|
|
||||||
MML.mmultiscripts.Augment({
|
MML.mmultiscripts.Augment({
|
||||||
toCommonHTML: function (node,stretch) {
|
toCommonHTML: function (node,stretch) {
|
||||||
|
if (!stretch) {
|
||||||
node = this.CHTMLcreateNode(node);
|
node = this.CHTMLcreateNode(node);
|
||||||
this.CHTMLhandleStyle(node);
|
this.CHTMLhandleStyle(node);
|
||||||
this.CHTMLhandleScale(node);
|
this.CHTMLhandleScale(node);
|
||||||
this.CHTMLgetVariant();
|
this.CHTMLgetVariant();
|
||||||
|
}
|
||||||
CHTML.BBOX.empty(this.CHTML);
|
CHTML.BBOX.empty(this.CHTML);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get base node
|
// Get base node
|
||||||
//
|
//
|
||||||
|
var base, bbox;
|
||||||
|
if (stretch) {
|
||||||
|
base = node.getElementsByTagName("mjx-base")[0];
|
||||||
|
} else {
|
||||||
this.CHTMLaddChild(node,0,{type:"mjx-base", noBBox:true, forceChild:true});
|
this.CHTMLaddChild(node,0,{type:"mjx-base", noBBox:true, forceChild:true});
|
||||||
var base = node.firstChild, bbox = this.CHTMLbboxFor(0);
|
base = node.firstChild;
|
||||||
|
}
|
||||||
|
bbox = this.CHTMLbboxFor(0);
|
||||||
if (bbox.ic) {
|
if (bbox.ic) {
|
||||||
bbox.R -= bbox.ic; // remove IC (added by mo and mi)
|
bbox.R -= bbox.ic; // remove IC (added by mo and mi)
|
||||||
base.style.marginRight = CHTML.Em(-bbox.ic);
|
if (!stretch) base.style.marginRight = CHTML.Em(-bbox.ic);
|
||||||
delta = 1.3*bbox.ic + .05; // make faked IC be closer to expeted results
|
delta = 1.3*bbox.ic + .05; // make faked IC be closer to expeted results
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,10 +61,10 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
|
||||||
// Collect scripts into horizontal boxes and add them into the node
|
// Collect scripts into horizontal boxes and add them into the node
|
||||||
//
|
//
|
||||||
var BOX = {}, BBOX = {};
|
var BOX = {}, BBOX = {};
|
||||||
this.CHTMLgetScripts(BOX,BBOX,stretch);
|
this.CHTMLgetScripts(BOX,BBOX,stretch,node);
|
||||||
var sub = BOX.sub, sup = BOX.sup, presub = BOX.presub, presup = BOX.presup;
|
var sub = BOX.sub, sup = BOX.sup, presub = BOX.presub, presup = BOX.presup;
|
||||||
var sbox = BBOX.sub, Sbox = BBOX.sup, pbox = BBOX.presub, Pbox = BBOX.presup;
|
var sbox = BBOX.sub, Sbox = BBOX.sup, pbox = BBOX.presub, Pbox = BBOX.presup;
|
||||||
this.CHTMLaddBoxes(node,base,BOX);
|
if (!stretch) this.CHTMLaddBoxes(node,base,BOX);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get the initial values for the variables
|
// Get the initial values for the variables
|
||||||
|
@ -127,7 +135,19 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
|
||||||
// Get the subscript, superscript, presubscript, and presuperscript
|
// Get the subscript, superscript, presubscript, and presuperscript
|
||||||
// boxes, with proper spacing, and computer their bounding boxes.
|
// boxes, with proper spacing, and computer their bounding boxes.
|
||||||
//
|
//
|
||||||
CHTMLgetScripts: function (BOX,BBOX,stretch) {
|
CHTMLgetScripts: function (BOX,BBOX,stretch,node) {
|
||||||
|
if (stretch) {
|
||||||
|
BOX.sub = node.getElementsByTagName("mjx-sub")[0];
|
||||||
|
BOX.sup = node.getElementsByTagName("mjx-sup")[0];
|
||||||
|
BOX.presub = node.getElementsByTagName("mjx-presub")[0];
|
||||||
|
BOX.presup = node.getElementsByTagName("mjx-presup")[0];
|
||||||
|
BBOX.sub = this.CHTMLbbox.sub;
|
||||||
|
BBOX.sup = this.CHTMLbbox.sup;
|
||||||
|
BBOX.presub = this.CHTMLbbox.presub;
|
||||||
|
BBOX.presup = this.CHTMLbbox.presup;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.CHTMLbbox = BBOX; // save for when stretched
|
||||||
var state = {i:1, w:0, BOX:BOX, BBOX:BBOX}, m = this.data.length;
|
var state = {i:1, w:0, BOX:BOX, BBOX:BBOX}, m = this.data.length;
|
||||||
var sub = "sub", sup = "sup";
|
var sub = "sub", sup = "sup";
|
||||||
while (state.i < m) {
|
while (state.i < m) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user