diff --git a/lib/main.js b/lib/main.js
index d78c717..5afe568 100644
--- a/lib/main.js
+++ b/lib/main.js
@@ -80,6 +80,15 @@ exports.mjpage = function(htmlstring, configOptions, typesetOptions, callback) {
const window = doc.defaultView;
const document = window.document;
+ //rewrite custom scripts types from core MathJax
+ const rewriteScripts = function(oldType, newType){
+ const scripts = document.querySelectorAll('script[type="' + oldType + '"]');
+ for (let script of scripts) script.setAttribute('type', newType);
+ }
+ rewriteScripts('math/tex','math/inline-TeX');
+ rewriteScripts('math/tex; mode=display','math/TeX');
+ rewriteScripts('math/asciimath','math/asciiMath');
+
// configure mathjax-node
mathjax.config(config);
@@ -114,8 +123,13 @@ exports.mjpage = function(htmlstring, configOptions, typesetOptions, callback) {
window.ascii.PreProcess();
}
+ const scripts = document.querySelectorAll(`
+ script[type="math/TeX"],
+ script[type="math/inline-TeX"],
+ script[type="math/AsciiMath"],
+ script[type="math/MathML"],
+ script[type="math/MathML-block"]`);
// convert with mathjax-node
- const scripts = document.querySelectorAll('script[type^="math/"]');
const process = function(index) {
const script = scripts[index];
if (script) {
@@ -213,7 +227,7 @@ exports.mjpage = function(htmlstring, configOptions, typesetOptions, callback) {
border: 0;
margin: 0
}
-
+
.mjpage__block {
text-align: center;
margin: 1em 0em;
diff --git a/test/script-types.js b/test/script-types.js
new file mode 100644
index 0000000..69ef151
--- /dev/null
+++ b/test/script-types.js
@@ -0,0 +1,51 @@
+const tape = require('tape');
+const mjpage = require('../lib/main.js').mjpage;
+const jsdom = require('jsdom').jsdom;
+
+tape('Custom script types are processed correctly', function(t) {
+ t.plan(4);
+ const inlineInput = '';
+ mjpage(inlineInput, {
+ format: ['TeX']
+ }, {
+ svg: true
+ }, function(output) {
+ const window = jsdom(output).defaultView;
+ const expected = window.document.querySelector('.mjpage');
+ t.ok(expected, '"math/tex" treated as inline');
+ });
+
+ const displayInput = '';
+ mjpage(displayInput, {
+ format: ['TeX']
+ }, {
+ svg: true
+ }, function(output) {
+ const window = jsdom(output).defaultView;
+ const expected = window.document.querySelector('.mjpage__block');
+ t.ok(expected, '"math/tex; mode=display" treated as block');
+ });
+
+ const asciiInput = '';
+ mjpage(displayInput, {
+ format: ['TeX']
+ }, {
+ svg: true
+ }, function(output) {
+ const window = jsdom(output).defaultView;
+ const expected = window.document.querySelector('.mjpage');
+ t.ok(expected, '"math/asciimath" treated as asciimath');
+ });
+
+ const crazyCaseInput = '';
+ mjpage(crazyCaseInput, {
+ format: ['TeX']
+ }, {
+ svg: true
+ }, function(output) {
+ const window = jsdom(output).defaultView;
+ const expected = window.document.querySelector('.mjpage');
+ t.notOk(expected, 'Other scripts are ignored');
+ });
+
+});