1function bindMathJaxHooks(converter) { 2 3 // From math.stackexchange.com... 4 5 function b(a, f, b) { 6 var c = k.slice(a, f + 1).join("").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); 7 for (h.Browser.isMSIE && (c = c.replace(/(%[^\n]*)\n/g, "$1<br/>\n")); f > a; ) 8 k[f] = "", f--; 9 k[a] = "@@" + m.length + "@@"; 10 b && (c = b(c)); 11 m.push(c); 12 i = o = l = null 13 } 14 function p(a) { 15 i = o = l = null; 16 m = []; 17 var f; 18 /`/.test(a) ? (a = a.replace(/~/g, "~T").replace(/(^|[^\\])(`+)([^\n]*?[^`\n])\2(?!`)/gm, function(a) { 19 return a.replace(/\$/g, "~D") 20 }), f = function(a) { 21 return a.replace(/~([TD])/g, 22 function(a, c) { 23 return {T: "~",D: "$"}[c] 24 }) 25 }) : f = function(a) { 26 return a 27 }; 28 k = r(a.replace(/\r\n?/g, "\n"), u); 29 for (var a = 1, d = k.length; a < d; a += 2) { 30 var c = k[a]; 31 "@" === c.charAt(0) ? (k[a] = "@@" + m.length + "@@", m.push(c)) : i ? c === o ? n ? l = a : b(i, a, f) : c.match(/\n.*\n/) ? (l && (a = l, b(i, a, f)), i = o = l = null, n = 0) : "{" === c ? n++ : "}" === c && n && n-- : c === s || "$$" === c ? (i = a, o = c, n = 0) : "begin" === c.substr(1, 5) && (i = a, o = "\\end" + c.substr(6), n = 0) 32 } 33 l && b(i, l, f); 34 return f(k.join("")) 35 } 36 function d(a) { 37 a = a.replace(/@@(\d+)@@/g, function(a, b) { 38 return m[b] 39 }); 40 m = null; 41 return a 42 } 43 function e() { 44 q = !1; 45 h.cancelTypeset = !1; 46 h.Queue(["Typeset", h, t]) 47 h.Queue(afterRefreshCallback); //benweet 48 } 49 function j() { 50 !q && /*benweet (we need to call our afterRefreshCallback) g &&*/ (q = !0, h.Cancel(), h.Queue(e)) 51 } 52 var g = !1, q = !1, t = null, s = "$", k, i, o, l, n, m, h = MathJax.Hub; 53 h.Queue(function() { 54 g = !0; 55 h.processUpdateTime = 50; 56 h.Config({"HTML-CSS": {EqnChunk: 10,EqnChunkFactor: 1},SVG: {EqnChunk: 10,EqnChunkFactor: 1}}) 57 }); 58 var u = /(\$\$?|\\(?:begin|end)\{[a-z]*\*?\}|\\[\\{}$]|[{}]|(?:\n\s*)+|@@\d+@@)/i, r; 59 r = 3 === "aba".split(/(b)/).length ? function(a, f) { 60 return a.split(f) 61 } : function(a, f) { 62 var b = [], c; 63 if (!f.global) { 64 c = f.toString(); 65 var d = ""; 66 c = c.replace(/^\/(.*)\/([im]*)$/, function(a, c, b) { 67 d = b; 68 return c 69 }); 70 f = RegExp(c, d + "g") 71 } 72 for (var e = f.lastIndex = 0; c = f.exec(a); ) 73 b.push(a.substring(e, c.index)), b.push.apply(b, c.slice(1)), e = c.index + c[0].length; 74 b.push(a.substring(e)); 75 return b 76 }; 77 78 (function() { 79 var b = MathJax.Hub; 80 if (!b.Cancel) { 81 b.cancelTypeset = !1; 82 b.Register.StartupHook("HTML-CSS Jax Config", function() { 83 var d = MathJax.OutputJax["HTML-CSS"], e = d.Translate; 84 d.Augment({Translate: function(j, g) { 85 if (b.cancelTypeset || g.cancelled) 86 throw Error("MathJax Canceled"); 87 return e.call(d, j, g) 88 }}) 89 }); 90 b.Register.StartupHook("SVG Jax Config", function() { 91 var d = MathJax.OutputJax.SVG, e = d.Translate; 92 d.Augment({Translate: function(j, g) { 93 if (b.cancelTypeset || g.cancelled) 94 throw Error("MathJax Canceled"); 95 return e.call(d, 96 j, g) 97 }}) 98 }); 99 b.Register.StartupHook("TeX Jax Config", function() { 100 var d = MathJax.InputJax.TeX, e = d.Translate; 101 d.Augment({Translate: function(j, g) { 102 if (b.cancelTypeset || g.cancelled) 103 throw Error("MathJax Canceled"); 104 return e.call(d, j, g) 105 }}) 106 }); 107 var p = b.processError; 108 b.processError = function(d, e, j) { 109 if ("MathJax Canceled" !== d.message) 110 return p.call(b, d, e, j); 111 MathJax.Message.Clear(0, 0); 112 e.jaxIDs = []; 113 e.jax = {}; 114 e.scripts = []; 115 e.i = e.j = 0; 116 e.cancelled = !0; 117 return null 118 }; 119 b.Cancel = function() { 120 this.cancelTypeset = !0 121 } 122 } 123 })(); 124 /*jshint ignore:end */ 125 126 converter.hooks.chain("preConversion", p); 127 converter.hooks.chain("postConversion", d); 128}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.