如何解决使用 Node 生成 MathJax 乳胶到 html 标记?
我正在尝试 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('$0 [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,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,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 导入/导出功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。