Skip to content

Commit 2b5f610

Browse files
committed
Merge branch 'issue1360' into develop. Issue #1360.
2 parents 43cd305 + d478573 commit 2b5f610

File tree

1 file changed

+38
-16
lines changed
  • unpacked/jax/output/CommonHTML

1 file changed

+38
-16
lines changed

unpacked/jax/output/CommonHTML/jax.js

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -336,21 +336,33 @@
336336
ucMatch: HTML.ucMatch,
337337
setScript: HTML.setScript,
338338

339-
//
340-
// This replaces node.getElementsByTagName(type)[0]
341-
// and should be replaced by that if we go back to using
342-
// custom tags
343-
//
344-
getNode: (document.getElementsByClassName ?
345-
function (node,type) {return node.getElementsByClassName(type)[0]} :
339+
getNodesByClass: (document.getElementsByClassName ?
340+
function (node,type) {return node.getElementsByClassName(type)} :
346341
function (node,type) {
342+
var NODES = [];
347343
var nodes = node.getElementsByTagName("span");
348344
var name = RegExp("\\b"+type+"\\b");
349345
for (var i = 0, m = nodes.length; i < m; i++) {
350-
if (name.test(nodes[i].className)) return nodes[i];
346+
if (name.test(nodes[i].className)) NODES.push = nodes[i];
351347
}
348+
return NODES;
352349
}
353350
),
351+
getNode: function (node,type) {
352+
var nodes = this.getNodesByClass(node,type);
353+
if (nodes.length === 1) return nodes[0];
354+
var closest = nodes[0], N = this.getNodeDepth(node,closest);
355+
for (var i = 1, m = nodes.length; i < m; i++) {
356+
var n = this.getNodeDepth(node,nodes[i]);
357+
if (n < N) {closest = nodes[i]; N = n}
358+
}
359+
return closest;
360+
},
361+
getNodeDepth: function (parent,node) {
362+
var n = 0;
363+
while (node && node !== parent) {node = node.parentNode; n++}
364+
return n;
365+
},
354366

355367

356368
/********************************************/
@@ -2072,9 +2084,9 @@
20722084
//
20732085
var under, over, nodes = [];
20742086
if (stretch) {
2075-
base = CHTML.getNode(node,"mjx-op");
2076-
under = CHTML.getNode(node,"mjx-under");
2077-
over = CHTML.getNode(node,"mjx-over");
2087+
if (this.data[this.base]) base = CHTML.getNode(node,"mjx-op");
2088+
if (this.data[this.under]) under = CHTML.getNode(node,"mjx-under");
2089+
if (this.data[this.over]) over = CHTML.getNode(node,"mjx-over");
20782090
nodes[0] = base; nodes[1] = under||over; nodes[2] = over;
20792091
} else {
20802092
var types = ["mjx-op","mjx-under","mjx-over"];
@@ -2258,7 +2270,12 @@
22582270
this.CHTML = BBOX;
22592271
},
22602272
CHTMLstretchV: MML.mbase.CHTMLstretchV,
2261-
CHTMLstretchH: MML.mbase.CHTMLstretchH
2273+
CHTMLstretchH: MML.mbase.CHTMLstretchH,
2274+
CHTMLchildNode: function (node,i) {
2275+
var types = ["mjx-op","mjx-under","mjx-over"];
2276+
if (this.over === 1) types[1] = types[2];
2277+
return CHTML.getNode(node,types[i]);
2278+
}
22622279
});
22632280

22642281
/********************************************************/
@@ -2273,9 +2290,9 @@
22732290
//
22742291
var base, sub, sup;
22752292
if (stretch) {
2276-
base = CHTML.getNode(node,"mjx-base");
2277-
sub = CHTML.getNode(node,"mjx-sub");
2278-
sup = CHTML.getNode(node,"mjx-sup");
2293+
if (this.data[this.base]) base = CHTML.getNode(node,"mjx-base");
2294+
if (this.data[this.sub]) sub = CHTML.getNode(node,"mjx-sub");
2295+
if (this.data[this.sup]) sup = CHTML.getNode(node,"mjx-sup");
22792296
stack = CHTML.getNode(node,"mjx-stack");
22802297
} else {
22812298
var types = ["mjx-base","mjx-sub","mjx-sup"];
@@ -2364,7 +2381,12 @@
23642381
return node;
23652382
},
23662383
CHTMLstretchV: MML.mbase.CHTMLstretchV,
2367-
CHTMLstretchH: MML.mbase.CHTMLstretchH
2384+
CHTMLstretchH: MML.mbase.CHTMLstretchH,
2385+
CHTMLchildNode: function (node,i) {
2386+
var types = ["mjx-base","mjx-sub","mjx-sup"];
2387+
if (this.over === 1) types[1] = types[2];
2388+
return CHTML.getNode(node,types[i]);
2389+
}
23682390
});
23692391

23702392
/********************************************************/

0 commit comments

Comments
 (0)