PageSourceSearch

https://zybuluo.com/static/editor/libs/mathJax.js

js zybuluo.com collected 2026-09-24 08:54:05 UTC 4,835 bytes, 128 lines download raw bytes

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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
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.