如何解决Mathjax破除\ mathcal和下标
我正在Jekyll网站上使用MathJax3。我在\mathcal
环境中下标equation
时遇到问题。
\begin{equation}
f(x) = \mathcal{L}_{\theta}(x)\sum_{i=1}^N x^2
\end{equation}
但在$$
环境中可以正常使用:
$$
f(x) = \mathcal{L}_{\theta}(x)\sum_{i=1}^N x^2
$$
问题似乎在于,\mathcal
带下标,然后\sum
带下标。如果我从\mathcal
或\sum
删除下标,则所有内容在equation
环境中也可以正常工作。但是,\sum
并没有与其他任何组件发生此问题,因此我认为问题出在\mathcal
上。
我的MathJax配置如下:
<!-- MathJax -->
<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 async src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_CHTML"></script>
<script>
MathJax = {
tex: {
inlineMath: [['$','$'],['\\(','\\)']],tags: 'ams'
}
};
</script>
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
解决方法
首先,您要加载MathJax 3次,这绝不是一个好主意。另外,您正在加载三个不同的版本(第一个脚本加载MathJax v3,第二个脚本加载最新的v2(2.7.9),最后一个脚本加载MathJax v2.7.1)。因为前两个脚本具有async
属性,所以它们不会阻止页面的其余部分被处理,因此最终脚本(无async
)可能会在前两个脚本中的任何一个之前运行已加载,因此您可能正在获得版本2.7.1,该版本已经很旧了。但是,如果浏览器缓存中存在其他版本之一,则可能会立即运行该版本,并且您将获得该版本,因此尚不清楚您实际上会获得哪个版本。因此,您应该做的第一件事是清理MathJax的加载(确定要使用的版本,然后仅加载该版本)。
您的带有MathJax
配置变量的脚本包含v3配置,因此您可能希望保留第一个MathJax加载脚本并删除其他脚本。但是配置脚本应该在加载MathJax的脚本之前 出现(因此,在加载MathJax时该脚本已就位)。
但是这些都不是导致您遇到问题的原因。这是Jekyll的Markdown与页面中的LaTeX之间的不良互动。 Markdown使用下划线来分隔斜体文本,因此,当您有两个项目的下标时,Markdown将插入<emph>...</emph>
(或类似内容),并且由于MathJax不处理包含HTML标记的数学运算,因此将阻止方程排版。
显然,Jekyll知道$$...$$
分隔符并阻止Markdown处理下划线,但不知道\begin{equation}...\end{equation}
,因此下划线在那里处理。我自己没有使用Jekyll,因此无法对其进行测试,但这就是我的样子。
有关与内容管理系统的此类交互以及可能的解决方法的信息,请参见MathJax documentation。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。