微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Node 生成 MathJax 乳胶到 html 标记?

如何解决使用 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 举报,一经查实,本站将立刻删除。