katex 0.10.0-rc → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +214 -126
- package/README.md +18 -17
- package/cli.js +5 -1
- package/contrib/auto-render/README.md +1 -1
- package/contrib/auto-render/auto-render.js +4 -1
- package/contrib/auto-render/test/auto-render-spec.js +17 -0
- package/contrib/copy-tex/README.md +8 -2
- package/contrib/copy-tex/copy-tex.js +0 -1
- package/contrib/copy-tex/copy-tex.webpack.js +6 -0
- package/contrib/mathtex-script-type/README.md +10 -6
- package/contrib/mhchem/README.md +19 -0
- package/contrib/mhchem/mhchem.js +1695 -0
- package/contrib/mhchem/mhchem.patch +235 -0
- package/dist/README.md +18 -17
- package/dist/contrib/auto-render.js +179 -161
- package/dist/contrib/auto-render.min.js +1 -1
- package/dist/contrib/auto-render.mjs +215 -0
- package/dist/contrib/copy-tex.js +84 -62
- package/dist/contrib/copy-tex.min.css +1 -1
- package/dist/contrib/copy-tex.min.js +1 -1
- package/dist/contrib/copy-tex.mjs +85 -0
- package/dist/contrib/mathtex-script-type.js +17 -14
- package/dist/contrib/mathtex-script-type.mjs +24 -0
- package/dist/contrib/mhchem.js +3241 -0
- package/dist/contrib/mhchem.min.js +1 -0
- package/dist/contrib/mhchem.mjs +3109 -0
- package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/katex.css +24 -9
- package/dist/katex.js +13295 -12413
- package/dist/katex.min.css +1 -1
- package/dist/katex.min.js +1 -1
- package/dist/katex.mjs +13388 -11826
- package/katex.js +1 -2
- package/package.json +60 -48
- package/src/Lexer.js +25 -25
- package/src/MacroExpander.js +0 -1
- package/src/Options.js +11 -75
- package/src/Parser.js +231 -313
- package/src/Settings.js +6 -0
- package/src/buildCommon.js +140 -103
- package/src/buildHTML.js +125 -121
- package/src/buildMathML.js +14 -4
- package/src/buildTree.js +16 -10
- package/src/delimiter.js +4 -3
- package/src/domTree.js +91 -44
- package/src/environments/array.js +120 -7
- package/src/fontMetrics.js +3 -2
- package/src/functions/arrow.js +21 -7
- package/src/functions/color.js +2 -37
- package/src/functions/delimsizing.js +18 -11
- package/src/functions/enclose.js +19 -4
- package/src/functions/environment.js +35 -4
- package/src/functions/font.js +1 -2
- package/src/functions/genfrac.js +35 -20
- package/src/functions/href.js +5 -3
- package/src/functions/includegraphics.js +146 -0
- package/src/functions/mclass.js +1 -0
- package/src/functions/op.js +21 -32
- package/src/functions/operatorname.js +1 -2
- package/src/functions/ordgroup.js +4 -0
- package/src/functions/phantom.js +7 -3
- package/src/functions/rule.js +20 -9
- package/src/functions/sizing.js +2 -4
- package/src/functions/smash.js +5 -2
- package/src/functions/sqrt.js +1 -4
- package/src/functions/styling.js +0 -1
- package/src/functions/supsub.js +6 -2
- package/src/functions/symbolsOp.js +4 -0
- package/src/functions/symbolsSpacing.js +29 -6
- package/src/functions/tag.js +20 -4
- package/src/functions/text.js +6 -4
- package/src/functions/verb.js +16 -4
- package/src/functions.js +2 -0
- package/src/katex.less +35 -12
- package/src/macros.js +161 -36
- package/src/mathMLTree.js +17 -19
- package/src/parseNode.js +27 -1
- package/src/stretchy.js +3 -1
- package/src/svgGeometry.js +1 -1
- package/src/symbols.js +39 -17
- package/src/tree.js +0 -4
- package/src/types.js +4 -3
- package/src/unicodeMake.js +1 -1
- package/src/utils.js +1 -62
- package/src/wide-character.js +2 -2
package/dist/contrib/copy-tex.js
CHANGED
|
@@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
91
91
|
/******/
|
|
92
92
|
/******/
|
|
93
93
|
/******/ // Load entry module and return exports
|
|
94
|
-
/******/ return __webpack_require__(__webpack_require__.s =
|
|
94
|
+
/******/ return __webpack_require__(__webpack_require__.s = 1);
|
|
95
95
|
/******/ })
|
|
96
96
|
/************************************************************************/
|
|
97
97
|
/******/ ([
|
|
@@ -101,8 +101,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
101
101
|
// extracted by mini-css-extract-plugin
|
|
102
102
|
|
|
103
103
|
/***/ }),
|
|
104
|
-
/* 1
|
|
105
|
-
/* 2 */
|
|
104
|
+
/* 1 */
|
|
106
105
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
107
106
|
|
|
108
107
|
"use strict";
|
|
@@ -114,77 +113,100 @@ var copy_tex = __webpack_require__(0);
|
|
|
114
113
|
// CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
|
|
115
114
|
// Set these to how you want inline and display math to be delimited.
|
|
116
115
|
var defaultCopyDelimiters = {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
inline: ['$', '$'],
|
|
117
|
+
// alternative: ['\(', '\)']
|
|
118
|
+
display: ['$$', '$$'] // alternative: ['\[', '\]']
|
|
120
119
|
|
|
121
|
-
// Replace .katex elements with their TeX source (<annotation> element).
|
|
120
|
+
}; // Replace .katex elements with their TeX source (<annotation> element).
|
|
122
121
|
// Modifies fragment in-place. Useful for writing your own 'copy' handler,
|
|
123
122
|
// as in copy-tex.js.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
for (var _i = 0; _i < katexMathml.length; _i++) {
|
|
142
|
-
var _element = katexMathml[_i];
|
|
143
|
-
var texSource = _element.querySelector('annotation');
|
|
144
|
-
if (texSource) {
|
|
145
|
-
if (_element.replaceWith) {
|
|
146
|
-
_element.replaceWith(texSource);
|
|
147
|
-
} else {
|
|
148
|
-
_element.parentNode.replaceChild(texSource, _element);
|
|
149
|
-
}
|
|
150
|
-
texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
|
|
151
|
-
}
|
|
123
|
+
|
|
124
|
+
var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
|
|
125
|
+
if (copyDelimiters === void 0) {
|
|
126
|
+
copyDelimiters = defaultCopyDelimiters;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Remove .katex-html blocks that are preceded by .katex-mathml blocks
|
|
130
|
+
// (which will get replaced below).
|
|
131
|
+
var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
|
|
132
|
+
|
|
133
|
+
for (var i = 0; i < katexHtml.length; i++) {
|
|
134
|
+
var element = katexHtml[i];
|
|
135
|
+
|
|
136
|
+
if (element.remove) {
|
|
137
|
+
element.remove(null);
|
|
138
|
+
} else {
|
|
139
|
+
element.parentNode.removeChild(element);
|
|
152
140
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
141
|
+
} // Replace .katex-mathml elements with their annotation (TeX source)
|
|
142
|
+
// descendant, with inline delimiters.
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
var katexMathml = fragment.querySelectorAll('.katex-mathml');
|
|
146
|
+
|
|
147
|
+
for (var _i = 0; _i < katexMathml.length; _i++) {
|
|
148
|
+
var _element = katexMathml[_i];
|
|
149
|
+
|
|
150
|
+
var texSource = _element.querySelector('annotation');
|
|
151
|
+
|
|
152
|
+
if (texSource) {
|
|
153
|
+
if (_element.replaceWith) {
|
|
154
|
+
_element.replaceWith(texSource);
|
|
155
|
+
} else {
|
|
156
|
+
_element.parentNode.replaceChild(texSource, _element);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
|
|
158
160
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
+
} // Switch display math to display delimiters.
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
var displays = fragment.querySelectorAll('.katex-display annotation');
|
|
165
|
+
|
|
166
|
+
for (var _i2 = 0; _i2 < displays.length; _i2++) {
|
|
167
|
+
var _element2 = displays[_i2];
|
|
168
|
+
_element2.innerHTML = copyDelimiters.display[0] + _element2.innerHTML.substr(copyDelimiters.inline[0].length, _element2.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
|
|
169
|
+
}
|
|
161
170
|
|
|
171
|
+
return fragment;
|
|
172
|
+
};
|
|
162
173
|
/* harmony default export */ var katex2tex = (katexReplaceWithTex);
|
|
163
174
|
// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
|
|
175
|
+
// Global copy handler to modify behavior on .katex elements.
|
|
164
176
|
|
|
177
|
+
document.addEventListener('copy', function (event) {
|
|
178
|
+
var selection = window.getSelection();
|
|
165
179
|
|
|
180
|
+
if (selection.isCollapsed) {
|
|
181
|
+
return; // default action OK if selection is empty
|
|
182
|
+
}
|
|
166
183
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
// Prevent normal copy handling.
|
|
186
|
-
event.preventDefault();
|
|
184
|
+
var fragment = selection.getRangeAt(0).cloneContents();
|
|
185
|
+
|
|
186
|
+
if (!fragment.querySelector('.katex-mathml')) {
|
|
187
|
+
return; // default action OK if no .katex-mathml elements
|
|
188
|
+
} // Preserve usual HTML copy/paste behavior.
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
var html = [];
|
|
192
|
+
|
|
193
|
+
for (var i = 0; i < fragment.childNodes.length; i++) {
|
|
194
|
+
html.push(fragment.childNodes[i].outerHTML);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
|
|
198
|
+
|
|
199
|
+
event.clipboardData.setData('text/plain', katex2tex(fragment).textContent); // Prevent normal copy handling.
|
|
200
|
+
|
|
201
|
+
event.preventDefault();
|
|
187
202
|
});
|
|
203
|
+
// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.webpack.js
|
|
204
|
+
/**
|
|
205
|
+
* This is the webpack entry point for KaTeX. As ECMAScript doesn't support
|
|
206
|
+
* CSS modules natively, a separate entry point is used.
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
|
|
188
210
|
|
|
189
211
|
/***/ })
|
|
190
212
|
/******/ ])["default"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.katex,.katex-display{
|
|
1
|
+
.katex,.katex-display{user-select:all;-moz-user-select:all;-webkit-user-select:all;-ms-user-select:all}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=
|
|
1
|
+
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(0);var r={inline:["$","$"],display:["$$","$$"]},o=function(e,t){void 0===t&&(t=r);for(var n=e.querySelectorAll(".katex-mathml + .katex-html"),o=0;o<n.length;o++){var l=n[o];l.remove?l.remove(null):l.parentNode.removeChild(l)}for(var i=e.querySelectorAll(".katex-mathml"),a=0;a<i.length;a++){var u=i[a],f=u.querySelector("annotation");f&&(u.replaceWith?u.replaceWith(f):u.parentNode.replaceChild(f,u),f.innerHTML=t.inline[0]+f.innerHTML+t.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),d=0;d<c.length;d++){var p=c[d];p.innerHTML=t.display[0]+p.innerHTML.substr(t.inline[0].length,p.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],l=0;l<n.childNodes.length;l++)r.push(n.childNodes[l].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",o(n).textContent),e.preventDefault()}}})}]).default});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Set these to how you want inline and display math to be delimited.
|
|
2
|
+
const defaultCopyDelimiters = {
|
|
3
|
+
inline: ['$', '$'],
|
|
4
|
+
// alternative: ['\(', '\)']
|
|
5
|
+
display: ['$$', '$$'] // alternative: ['\[', '\]']
|
|
6
|
+
|
|
7
|
+
}; // Replace .katex elements with their TeX source (<annotation> element).
|
|
8
|
+
// Modifies fragment in-place. Useful for writing your own 'copy' handler,
|
|
9
|
+
// as in copy-tex.js.
|
|
10
|
+
|
|
11
|
+
const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
|
|
12
|
+
if (copyDelimiters === void 0) {
|
|
13
|
+
copyDelimiters = defaultCopyDelimiters;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Remove .katex-html blocks that are preceded by .katex-mathml blocks
|
|
17
|
+
// (which will get replaced below).
|
|
18
|
+
const katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
|
|
19
|
+
|
|
20
|
+
for (let i = 0; i < katexHtml.length; i++) {
|
|
21
|
+
const element = katexHtml[i];
|
|
22
|
+
|
|
23
|
+
if (element.remove) {
|
|
24
|
+
element.remove(null);
|
|
25
|
+
} else {
|
|
26
|
+
element.parentNode.removeChild(element);
|
|
27
|
+
}
|
|
28
|
+
} // Replace .katex-mathml elements with their annotation (TeX source)
|
|
29
|
+
// descendant, with inline delimiters.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
const katexMathml = fragment.querySelectorAll('.katex-mathml');
|
|
33
|
+
|
|
34
|
+
for (let i = 0; i < katexMathml.length; i++) {
|
|
35
|
+
const element = katexMathml[i];
|
|
36
|
+
const texSource = element.querySelector('annotation');
|
|
37
|
+
|
|
38
|
+
if (texSource) {
|
|
39
|
+
if (element.replaceWith) {
|
|
40
|
+
element.replaceWith(texSource);
|
|
41
|
+
} else {
|
|
42
|
+
element.parentNode.replaceChild(texSource, element);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
|
|
46
|
+
}
|
|
47
|
+
} // Switch display math to display delimiters.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
const displays = fragment.querySelectorAll('.katex-display annotation');
|
|
51
|
+
|
|
52
|
+
for (let i = 0; i < displays.length; i++) {
|
|
53
|
+
const element = displays[i];
|
|
54
|
+
element.innerHTML = copyDelimiters.display[0] + element.innerHTML.substr(copyDelimiters.inline[0].length, element.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return fragment;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
document.addEventListener('copy', function (event) {
|
|
61
|
+
const selection = window.getSelection();
|
|
62
|
+
|
|
63
|
+
if (selection.isCollapsed) {
|
|
64
|
+
return; // default action OK if selection is empty
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const fragment = selection.getRangeAt(0).cloneContents();
|
|
68
|
+
|
|
69
|
+
if (!fragment.querySelector('.katex-mathml')) {
|
|
70
|
+
return; // default action OK if no .katex-mathml elements
|
|
71
|
+
} // Preserve usual HTML copy/paste behavior.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
const html = [];
|
|
75
|
+
|
|
76
|
+
for (let i = 0; i < fragment.childNodes.length; i++) {
|
|
77
|
+
html.push(fragment.childNodes[i].outerHTML);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
|
|
81
|
+
|
|
82
|
+
event.clipboardData.setData('text/plain', katexReplaceWithTex(fragment).textContent); // Prevent normal copy handling.
|
|
83
|
+
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
});
|
|
@@ -109,24 +109,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
109
109
|
/* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
|
|
110
110
|
/* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(katex__WEBPACK_IMPORTED_MODULE_0__);
|
|
111
111
|
|
|
112
|
-
|
|
113
112
|
var scripts = document.body.getElementsByTagName("script");
|
|
114
113
|
scripts = Array.prototype.slice.call(scripts);
|
|
115
114
|
scripts.forEach(function (script) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
if (!script.type || !script.type.match(/math\/tex/i)) {
|
|
116
|
+
return -1;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
var display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
|
|
120
|
+
var katexElement = document.createElement(display ? "div" : "span");
|
|
121
|
+
katexElement.setAttribute("class", display ? "equation" : "inline-equation");
|
|
122
|
+
|
|
123
|
+
try {
|
|
124
|
+
katex__WEBPACK_IMPORTED_MODULE_0___default.a.render(script.text, katexElement, {
|
|
125
|
+
displayMode: display
|
|
126
|
+
});
|
|
127
|
+
} catch (err) {
|
|
128
|
+
//console.error(err); linter doesn't like this
|
|
129
|
+
katexElement.textContent = script.text;
|
|
130
|
+
}
|
|
120
131
|
|
|
121
|
-
|
|
122
|
-
katexElement.setAttribute("class", display ? "equation" : "inline-equation");
|
|
123
|
-
try {
|
|
124
|
-
katex__WEBPACK_IMPORTED_MODULE_0___default.a.render(script.text, katexElement, { displayMode: display });
|
|
125
|
-
} catch (err) {
|
|
126
|
-
//console.error(err); linter doesn't like this
|
|
127
|
-
katexElement.textContent = script.text;
|
|
128
|
-
}
|
|
129
|
-
script.parentNode.replaceChild(katexElement, script);
|
|
132
|
+
script.parentNode.replaceChild(katexElement, script);
|
|
130
133
|
});
|
|
131
134
|
|
|
132
135
|
/***/ })
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import katex from '../katex.mjs';
|
|
2
|
+
|
|
3
|
+
let scripts = document.body.getElementsByTagName("script");
|
|
4
|
+
scripts = Array.prototype.slice.call(scripts);
|
|
5
|
+
scripts.forEach(function (script) {
|
|
6
|
+
if (!script.type || !script.type.match(/math\/tex/i)) {
|
|
7
|
+
return -1;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
|
|
11
|
+
const katexElement = document.createElement(display ? "div" : "span");
|
|
12
|
+
katexElement.setAttribute("class", display ? "equation" : "inline-equation");
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
katex.render(script.text, katexElement, {
|
|
16
|
+
displayMode: display
|
|
17
|
+
});
|
|
18
|
+
} catch (err) {
|
|
19
|
+
//console.error(err); linter doesn't like this
|
|
20
|
+
katexElement.textContent = script.text;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
script.parentNode.replaceChild(katexElement, script);
|
|
24
|
+
});
|