使用 Node 生成 MathJax 乳胶到 html 标记?
Generating MathJax latex to html markup with Node?
我正在尝试 MathJax Node Examples Repository 中的 simple/tex2chtml
节点示例。
我正在尝试转换这个表达式。
const latex = `MAD = \frac{\sum_{i=1}^n | x_i - \bar{x} |} n`
我将 MathJax 调用更改为如下所示:
MathJax.tex2chtmlPromise(latex, {
display: !argv.inline,
em: argv.em,
ex: argv.ex,
containerWidth: argv.width
})
完整的源代码如下所示:
#! /usr/bin/env -S node -r esm
/*************************************************************************
*
* simple/tex2chtml
*
* Uses MathJax v3 to convert a TeX string to an HTML string.
*
* ----------------------------------------------------------------------
*
* Copyright (c) 2019 The MathJax Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const latex = `MAD = \frac{\sum_{i=1}^n | x_i - \bar{x} |} n`
//
// The default TeX packages to use
//
const PACKAGES = 'base, autoload, require, ams, newcommand';
//
// Get the command-line arguments
//
var argv = require('yargs')
.demand(0).strict()
.usage('[=13=] [options] "math" > file.html')
.options({
inline: {
boolean: true,
describe: "process as inline math"
},
em: {
default: 16,
describe: 'em-size in pixels'
},
ex: {
default: 8,
describe: 'ex-size in pixels'
},
width: {
default: 80 * 16,
describe: 'width of container in pixels'
},
packages: {
default: PACKAGES,
describe: 'the packages to use, e.g. "base, ams"; use "*" to represent the default packages, e.g, "*, bbox"'
},
css: {
boolean: true,
describe: 'output the required CSS rather than the HTML itself'
},
fontURL: {
default: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/output/chtml/fonts/woff-v2',
describe: 'the URL to use for web fonts'
},
assistiveMml: {
boolean: true,
default: false,
describe: 'whether to include assistive MathML output'
},
dist: {
boolean: true,
default: false,
describe: 'true to use webpacked version, false to use MathJax source files'
}
})
.argv;
//
// Load MathJax and initialize MathJax and typeset the given math
//
require('mathjax-full').init({
//
// The MathJax configuration
//
options: {
enableAssistiveMml: argv.assistiveMml
},
loader: {
source: (argv.dist ? {} : require('mathjax-full/components/src/source.js').source),
load: ['adaptors/liteDOM', 'tex-chtml']
},
tex: {
packages: argv.packages.replace('\*', PACKAGES).split(/\s*,\s*/)
},
chtml: {
fontURL: argv.fontURL
},
startup: {
typeset: false
}
}).then((MathJax) => {
//
// Typeset and display the math
//
MathJax.tex2chtmlPromise(latex, {
display: !argv.inline,
em: argv.em,
ex: argv.ex,
containerWidth: argv.width
}).then((node) => {
const adaptor = MathJax.startup.adaptor;
//
// If the --css option was specified, output the CSS,
// Otherwise, output the typeset math as HTML
//
if (argv.css) {
console.log(adaptor.textContent(MathJax.chtmlStylesheet()));
} else {
console.log(adaptor.outerHTML(node));
};
});
}).catch(err => console.log(err));
当我 运行 它产生这个错误:
ole@mkt:~/Temp/MathJax-demos-node$ node simple/tex2chtml
/home/ole/Temp/MathJax-demos-node/node_modules/mathjax-full/components/src/node-main/node-main.js:70
export {init};
^^^^^^
SyntaxError: Unexpected token export
at Module._compile (internal/modules/cjs/loader.js:720:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Module.require (internal/modules/cjs/loader.js:683:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/home/ole/Temp/MathJax-demos-node/simple/tex2chtml:83:1)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
有什么想法吗?
您需要使用
node -r esm simple/tex2chtml
请注意文件顶部的 #! /usr/bin/env -S node -r esm
表明 node -r esm
是 运行 所需要的。这将启用错误消息标记的 ES6 import/export 功能。
我正在尝试 MathJax Node Examples Repository 中的 simple/tex2chtml
节点示例。
我正在尝试转换这个表达式。
const latex = `MAD = \frac{\sum_{i=1}^n | x_i - \bar{x} |} n`
我将 MathJax 调用更改为如下所示:
MathJax.tex2chtmlPromise(latex, {
display: !argv.inline,
em: argv.em,
ex: argv.ex,
containerWidth: argv.width
})
完整的源代码如下所示:
#! /usr/bin/env -S node -r esm
/*************************************************************************
*
* simple/tex2chtml
*
* Uses MathJax v3 to convert a TeX string to an HTML string.
*
* ----------------------------------------------------------------------
*
* Copyright (c) 2019 The MathJax Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const latex = `MAD = \frac{\sum_{i=1}^n | x_i - \bar{x} |} n`
//
// The default TeX packages to use
//
const PACKAGES = 'base, autoload, require, ams, newcommand';
//
// Get the command-line arguments
//
var argv = require('yargs')
.demand(0).strict()
.usage('[=13=] [options] "math" > file.html')
.options({
inline: {
boolean: true,
describe: "process as inline math"
},
em: {
default: 16,
describe: 'em-size in pixels'
},
ex: {
default: 8,
describe: 'ex-size in pixels'
},
width: {
default: 80 * 16,
describe: 'width of container in pixels'
},
packages: {
default: PACKAGES,
describe: 'the packages to use, e.g. "base, ams"; use "*" to represent the default packages, e.g, "*, bbox"'
},
css: {
boolean: true,
describe: 'output the required CSS rather than the HTML itself'
},
fontURL: {
default: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/output/chtml/fonts/woff-v2',
describe: 'the URL to use for web fonts'
},
assistiveMml: {
boolean: true,
default: false,
describe: 'whether to include assistive MathML output'
},
dist: {
boolean: true,
default: false,
describe: 'true to use webpacked version, false to use MathJax source files'
}
})
.argv;
//
// Load MathJax and initialize MathJax and typeset the given math
//
require('mathjax-full').init({
//
// The MathJax configuration
//
options: {
enableAssistiveMml: argv.assistiveMml
},
loader: {
source: (argv.dist ? {} : require('mathjax-full/components/src/source.js').source),
load: ['adaptors/liteDOM', 'tex-chtml']
},
tex: {
packages: argv.packages.replace('\*', PACKAGES).split(/\s*,\s*/)
},
chtml: {
fontURL: argv.fontURL
},
startup: {
typeset: false
}
}).then((MathJax) => {
//
// Typeset and display the math
//
MathJax.tex2chtmlPromise(latex, {
display: !argv.inline,
em: argv.em,
ex: argv.ex,
containerWidth: argv.width
}).then((node) => {
const adaptor = MathJax.startup.adaptor;
//
// If the --css option was specified, output the CSS,
// Otherwise, output the typeset math as HTML
//
if (argv.css) {
console.log(adaptor.textContent(MathJax.chtmlStylesheet()));
} else {
console.log(adaptor.outerHTML(node));
};
});
}).catch(err => console.log(err));
当我 运行 它产生这个错误:
ole@mkt:~/Temp/MathJax-demos-node$ node simple/tex2chtml
/home/ole/Temp/MathJax-demos-node/node_modules/mathjax-full/components/src/node-main/node-main.js:70
export {init};
^^^^^^
SyntaxError: Unexpected token export
at Module._compile (internal/modules/cjs/loader.js:720:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Module.require (internal/modules/cjs/loader.js:683:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/home/ole/Temp/MathJax-demos-node/simple/tex2chtml:83:1)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
有什么想法吗?
您需要使用
node -r esm simple/tex2chtml
请注意文件顶部的 #! /usr/bin/env -S node -r esm
表明 node -r esm
是 运行 所需要的。这将启用错误消息标记的 ES6 import/export 功能。