无法使用 mathjax-node 获得与浏览器上的 MathJax 相同的结果
Cannot achieve the same result with mathjax-node as with MathJax on the browser
我想用 mathjax-node 渲染一些公式,但用户应该能够单独 select 每个元素用光标在它们下划线。比如出现求和,他可以select极值、内公式的元素、迭代变量等等。当元素呈现为 对象时,这是可能的,例如可以直接从 URL.
使用 MathJax 2.7.7 来完成
在浏览器上使用 MathJax 时,我有一个具有以下配置的页面:
<!DOCTYPE html>
<html>
<head>
...
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js","[Contrib]/forminput/forminput.js"],
jax: ["input/TeX","output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\(","\)"] ],
displayMath: [ ['$$','$$'], ["\[","\]"] ],
processEscapes: true,
processEnvironments: true,
},
TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]},
displayAlign: 'center',
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}},
linebreaks: { automatic: true }
}
});
</script>
<script
type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML"
/>
在那种情况下,如果我有这个公式$\sum_{i=0}^ni>2$,结果是:
但现在我正在使用从 https://github.com/mathjax/MathJax-node/tarball/master. According to the documentation https://www.npmjs.com/package/mathjax-node 下载的 mathjax-node 我必须输入:
var mjAPI = require("mathjax-node");
mjAPI.config({
MathJax: {
// traditional MathJax configuration
}
});
mjAPI.start();
(在配置部分,它不再识别行:"extensions: ["tex2jax.js","[Contrib]/forminput/forminput.js"]").
用排版函数得到结果对象:
var yourMath = '\sum_{i=0}^ni>2';
let result = mjAPI.typeset({
math: yourMath,
format: "TeX", // or "inline-TeX", "MathML"
mml:true, // or svg:true, or html:true
},
然后用“result.mml”、“result.svg”或“result.html”调用应该渲染的部分。
我只设法使用“html:true”选项渲染为 对象。但它看起来与我在网络上使用 MathJax 时不一样。例如,如果输入“格式:'inline-TeX'”,我得到:
这里也有人问过类似的问题:,解决方案是在排版中添加“css:true”选项,但我试过了,看起来还是一样。我想我还是应该称它为“result.html”。
我正在回答我自己的问题。如果“result”是返回的对象,我没明白“result.css”属性应该怎么用。唯一要做的就是将它包含在所显示网页的样式配置中。例如,网页可以是:
<html>
<head>
<style>
result.css
</style>
</head>
<body>
result.html
</body>
</html>
我想用 mathjax-node 渲染一些公式,但用户应该能够单独 select 每个元素用光标在它们下划线。比如出现求和,他可以select极值、内公式的元素、迭代变量等等。当元素呈现为 对象时,这是可能的,例如可以直接从 URL.
使用 MathJax 2.7.7 来完成在浏览器上使用 MathJax 时,我有一个具有以下配置的页面:
<!DOCTYPE html>
<html>
<head>
...
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js","[Contrib]/forminput/forminput.js"],
jax: ["input/TeX","output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\(","\)"] ],
displayMath: [ ['$$','$$'], ["\[","\]"] ],
processEscapes: true,
processEnvironments: true,
},
TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]},
displayAlign: 'center',
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}},
linebreaks: { automatic: true }
}
});
</script>
<script
type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML"
/>
在那种情况下,如果我有这个公式$\sum_{i=0}^ni>2$,结果是:
但现在我正在使用从 https://github.com/mathjax/MathJax-node/tarball/master. According to the documentation https://www.npmjs.com/package/mathjax-node 下载的 mathjax-node 我必须输入:
var mjAPI = require("mathjax-node");
mjAPI.config({
MathJax: {
// traditional MathJax configuration
}
});
mjAPI.start();
(在配置部分,它不再识别行:"extensions: ["tex2jax.js","[Contrib]/forminput/forminput.js"]").
用排版函数得到结果对象:
var yourMath = '\sum_{i=0}^ni>2';
let result = mjAPI.typeset({
math: yourMath,
format: "TeX", // or "inline-TeX", "MathML"
mml:true, // or svg:true, or html:true
},
然后用“result.mml”、“result.svg”或“result.html”调用应该渲染的部分。
我只设法使用“html:true”选项渲染为 对象。但它看起来与我在网络上使用 MathJax 时不一样。例如,如果输入“格式:'inline-TeX'”,我得到:
这里也有人问过类似的问题:
我正在回答我自己的问题。如果“result”是返回的对象,我没明白“result.css”属性应该怎么用。唯一要做的就是将它包含在所显示网页的样式配置中。例如,网页可以是:
<html>
<head>
<style>
result.css
</style>
</head>
<body>
result.html
</body>
</html>