我正在尝试创建一个基本的 HTML 页面,使用 MathJax 库 (https://www.mathjax.org/) 呈现 LaTEX。但是,当我在浏览器中运行网页时,仅显示非内联 LaTEX(用 $$ 括起来),而内联 LaTEX 不显示(用 $ 括起来):
这看起来很奇怪,考虑到我相信我已经通过以下代码配置了内联 LaTEX 的语法($[inline_LaTEX]$):
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: { inlineMath: [['$', '$']] }
});
</script>
下面是我的代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<title>MathJax Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: { inlineMath: [['$', '$']] }
});
</script>
</head>
<body>
<div class="container">
Here is an example of non-inline LaTEX:
$$c^2 = a^2 + b^2$$
Here is an example of inline LaTEX: $c^2 = a^2 + b^2$
</div>
</body>
</html>
根据 @HenryEcker 的评论,将 MathJax 导入更改为:
<script id="MathJax-script" async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
为我工作。
默认情况下,MathJax 不支持
$
作为内联数学分隔符,因为美元符号经常用于字面表示美元数量,尤其是在金融应用程序中。 MathJax 有一个关于此设计决策的专用文档页面:https://docs.mathjax.org/en/latest/input/tex/delimiters.html
要启用
$
作为内联数学分隔符,您需要在 MathJax 全局配置中显式将其添加为分隔符:
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
但是,这样做将不允许您的应用程序轻松渲染
$
符号,除非您在 MathJax 3 中将其转义为 \$
。 在 MathJax 2 中,您还需要在 processEscapes: true
中设置 window.MathJax.tex
。
因此,通常最好只使用 LaTeX 分隔符,而不是启用对内联 TeX 分隔符的支持。具体来说,
对于内联数学表达式,更喜欢将它们括在
\( <math> \)
而不是 $<math>$
和 中
对于显示数学表达式,最好将它们括在
\[ <math> \]
而不是 $$<math>$$
中。