Combine multiple elements into a single typesetting pass. Issue #873.
This commit is contained in:
parent
4666badbe2
commit
e1cf022d8a
|
@ -2011,14 +2011,11 @@ MathJax.Hub = {
|
||||||
Typeset: function (element,callback) {
|
Typeset: function (element,callback) {
|
||||||
if (!MathJax.isReady) return null;
|
if (!MathJax.isReady) return null;
|
||||||
var ec = this.elementCallback(element,callback);
|
var ec = this.elementCallback(element,callback);
|
||||||
var queue = MathJax.Callback.Queue();
|
if (ec.count) {
|
||||||
for (var i = 0, m = ec.elements.length; i < m; i++) {
|
var queue = MathJax.Callback.Queue(
|
||||||
if (ec.elements[i]) {
|
["PreProcess",this,ec.elements],
|
||||||
queue.Push(
|
["Process",this,ec.elements]
|
||||||
["PreProcess",this,ec.elements[i]],
|
);
|
||||||
["Process",this,ec.elements[i]]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return queue.Push(ec.callback);
|
return queue.Push(ec.callback);
|
||||||
},
|
},
|
||||||
|
@ -2026,14 +2023,13 @@ MathJax.Hub = {
|
||||||
PreProcess: function (element,callback) {
|
PreProcess: function (element,callback) {
|
||||||
var ec = this.elementCallback(element,callback);
|
var ec = this.elementCallback(element,callback);
|
||||||
var queue = MathJax.Callback.Queue();
|
var queue = MathJax.Callback.Queue();
|
||||||
for (var i = 0, m = ec.elements.length; i < m; i++) {
|
if (ec.count) {
|
||||||
if (ec.elements[i]) {
|
var elements = (ec.count === 1 ? [ec.elements] : ec.elements);
|
||||||
queue.Push(
|
queue.Push(["Post",this.signal,["Begin PreProcess",ec.elements]]);
|
||||||
["Post",this.signal,["Begin PreProcess",ec.elements[i]]],
|
for (var i = 0, m = elements.length; i < m; i++) {
|
||||||
(arguments.callee.disabled? {} : ["Execute",this.preProcessors,ec.elements[i]]),
|
if (elements[i]) {queue.Push(["Execute",this.preProcessors,elements[i]])}
|
||||||
["Post",this.signal,["End PreProcess",ec.elements[i]]]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
queue.Push(["Post",this.signal,["End PreProcess",ec.elements]]);
|
||||||
}
|
}
|
||||||
return queue.Push(ec.callback);
|
return queue.Push(ec.callback);
|
||||||
},
|
},
|
||||||
|
@ -2045,32 +2041,31 @@ MathJax.Hub = {
|
||||||
|
|
||||||
takeAction: function (action,element,callback) {
|
takeAction: function (action,element,callback) {
|
||||||
var ec = this.elementCallback(element,callback);
|
var ec = this.elementCallback(element,callback);
|
||||||
|
var elements = ec.elements;
|
||||||
var queue = MathJax.Callback.Queue(["Clear",this.signal]);
|
var queue = MathJax.Callback.Queue(["Clear",this.signal]);
|
||||||
for (var i = 0, m = ec.elements.length; i < m; i++) {
|
var state = {
|
||||||
if (ec.elements[i]) {
|
scripts: [], // filled in by prepareScripts
|
||||||
var state = {
|
start: new Date().getTime(), // timer for processing messages
|
||||||
scripts: [], // filled in by prepareScripts
|
i: 0, j: 0, // current script, current jax
|
||||||
start: new Date().getTime(), // timer for processing messages
|
jax: {}, // scripts grouped by output jax
|
||||||
i: 0, j: 0, // current script, current jax
|
jaxIDs: [] // id's of jax used
|
||||||
jax: {}, // scripts grouped by output jax
|
};
|
||||||
jaxIDs: [] // id's of jax used
|
if (ec.count) {
|
||||||
};
|
queue.Push(
|
||||||
queue.Push(
|
["Post",this.signal,["Begin "+action,elements]],
|
||||||
["Post",this.signal,["Begin "+action,ec.elements[i]]],
|
["Post",this.signal,["Begin Math",elements,action]],
|
||||||
["Post",this.signal,["Begin Math",ec.elements[i],action]],
|
["prepareScripts",this,action,elements,state],
|
||||||
["prepareScripts",this,action,ec.elements[i],state],
|
["Post",this.signal,["Begin Math Input",elements,action]],
|
||||||
["Post",this.signal,["Begin Math Input",ec.elements[i],action]],
|
["processInput",this,state],
|
||||||
["processInput",this,state],
|
["Post",this.signal,["End Math Input",elements,action]],
|
||||||
["Post",this.signal,["End Math Input",ec.elements[i],action]],
|
["prepareOutput",this,state,"preProcess"],
|
||||||
["prepareOutput",this,state,"preProcess"],
|
["Post",this.signal,["Begin Math Output",elements,action]],
|
||||||
["Post",this.signal,["Begin Math Output",ec.elements[i],action]],
|
["processOutput",this,state],
|
||||||
["processOutput",this,state],
|
["Post",this.signal,["End Math Output",elements,action]],
|
||||||
["Post",this.signal,["End Math Output",ec.elements[i],action]],
|
["prepareOutput",this,state,"postProcess"],
|
||||||
["prepareOutput",this,state,"postProcess"],
|
["Post",this.signal,["End Math",elements,action]],
|
||||||
["Post",this.signal,["End Math",ec.elements[i],action]],
|
["Post",this.signal,["End "+action,elements]]
|
||||||
["Post",this.signal,["End "+action,ec.elements[i]]]
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return queue.Push(ec.callback);
|
return queue.Push(ec.callback);
|
||||||
},
|
},
|
||||||
|
@ -2357,6 +2352,7 @@ MathJax.Hub = {
|
||||||
if (callback == null && (element instanceof Array || typeof element === 'function'))
|
if (callback == null && (element instanceof Array || typeof element === 'function'))
|
||||||
{try {MathJax.Callback(element); callback = element; element = null} catch(e) {}}
|
{try {MathJax.Callback(element); callback = element; element = null} catch(e) {}}
|
||||||
if (element == null) {element = this.config.elements || []}
|
if (element == null) {element = this.config.elements || []}
|
||||||
|
if (element instanceof HTMLCollection) {element = [].slice.apply(element)}
|
||||||
if (!(element instanceof Array)) {element = [element]}
|
if (!(element instanceof Array)) {element = [element]}
|
||||||
element = [].concat(element); // make a copy so the original isn't changed
|
element = [].concat(element); // make a copy so the original isn't changed
|
||||||
for (var i = 0, m = element.length; i < m; i++)
|
for (var i = 0, m = element.length; i < m; i++)
|
||||||
|
@ -2364,11 +2360,15 @@ MathJax.Hub = {
|
||||||
if (!document.body) {document.body = document.getElementsByTagName("body")[0]}
|
if (!document.body) {document.body = document.getElementsByTagName("body")[0]}
|
||||||
if (element.length == 0) {element.push(document.body)}
|
if (element.length == 0) {element.push(document.body)}
|
||||||
if (!callback) {callback = {}}
|
if (!callback) {callback = {}}
|
||||||
return {elements: element, callback: callback};
|
return {
|
||||||
|
count: element.length,
|
||||||
|
elements: (element.length === 1 ? element[0] : element),
|
||||||
|
callback: callback
|
||||||
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
elementScripts: function (element) {
|
elementScripts: function (element) {
|
||||||
if (element instanceof Array) {
|
if (element instanceof Array || element instanceof HTMLCollection) {
|
||||||
var scripts = [];
|
var scripts = [];
|
||||||
for (var i = 0, m = element.length; i < m; i++)
|
for (var i = 0, m = element.length; i < m; i++)
|
||||||
{scripts.push.apply(scripts,this.elementScripts(element[i]))}
|
{scripts.push.apply(scripts,this.elementScripts(element[i]))}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user