我希望能够在 node.js
中使用 LaTeX 模式呈现页面中的数学公式。我已经查看了 MathJaX
和 KaTeX
。
我使用以下方式呈现页面:
router.get('/math', function (req, res) {
res.render('math');
});
那么如何确保页面上的数学公式渲染为数学符号呢?
我可以使用
const katex = require('katex');
const math = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}", { displayMode: true });
然后在模板中使用变量进行设置:
router.get('/math', function (req, res) {
res.render('math', { math: math });
});
但我更愿意直接在模板中写数学公式,而不是在javascript代码中逐个设置变量。
编辑
我通过以下方式从模板获取HTML:
router.get('/math', function (req, res) {
res.render('math', function (err, html) {
html = html.replace(/\$\$(.*?)\$\$/g, function (outer, inner) {
return katex.renderToString(inner, { displayMode: true });
});
res.send(html);
});
});
请问在使用res.send()
之前是否需要调用res.render()
呢?这种做法合适吗?
举个例子:
html = html.replace(/\$\$(.*?)\$\$/g, function (outer, inner) {
return katex.renderToString(inner, { displayMode: true });
}).replace(/\$(.*?)\$/g, function (outer, inner) {
return katex.renderToString(inner);
});
服务器出现故障,我收到了错误提示:ParseError: KaTeX解析错误:期望 'EOF' ,但在位置1遇到 '$':$_
/\$\$(.*?)\$\$/g
不能匹配换行符(因为.
无法匹配换行符)。我建议使用/\$\$([^\$]*?)\$\$/g
,这将更好地匹配客户端行为。 - schneiderfelipe