我最近在 blogger.com 上开设了一个博客,主要写一些简短的数学片段。为此,我必须编辑 HTML 并添加 MathJax。经过一番谷歌搜索后,我发现(也许是错误的)人们这样做的方式是复制以下代码:-
<script src='https://polyfill.io/v3/polyfill.min.js?features=es6'/>
<script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js' type='text/javascript'/>
<script>
window.MathJax = {
tex: {
inlineMath: [ ['$','$'],['\\(','\\)'] ],
displayMath: [ ['$$','$$'], ['\\[','\\]'] ],
processEscapes: true,
processEnvironments: true,
processRefs: true
},
options: {
ignoreHtmlClass: 'tex2jax_ignore|editor-rich-text'
}
};
</script>
虽然最初感觉这很有效,但很快我意识到这种形式的命令
\begin{equation}
...
\end{equation}
没有被编译,尽管那些形式
$$ .. $$
甚至
\[ .. \]
工作绝对没问题。
我一直在用一些资源来管理这个问题,直到我意识到,甚至
$$\begin{cases}
...
\end{cases}$$
并且(更糟糕)
$$\begin{bmatrix}
...
\end{bmatrix}$$
不工作。简而言之,任何
\begin{blah}...\end{blah}
形式的命令都无法编译。
我想这不是 blogger.com 的问题,因为我看过许多其他帖子,其中方程非常一致。我已经尝试了我所知道的所有“愚蠢的方法”来解决它。但似乎问题在某个地方更深层次。如果有人能帮助我,我会很高兴。请注意,我不是一个精通技术的人 - 所以这个问题的答案可能只是我自己的愚蠢。
在另一篇文章中,建议我将所有
'
更改为'
。这会产生新的问题——结果我做不到。每次我尝试保存这些更改时,系统都会自动保存
<script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js' type='text/javascript'/>
<script>
window.MathJax = {
tex: {
inlineMath: [ [';$';,';$';],[';\\(';,';\\)';] ],
displayMath: [ [';$$';,';$$';], [';\\[';,';\\]';] ],
processEscapes: true,
processEnvironments: true,
processRefs: true
},
options: {
ignoreHtmlClass: ';tex2jax_ignore|editor-rich-text';
}
};
</script>
此外,对于自动保存的版本,只有命令
$$..$$
有效,而 $..$
则无效。
您的代码片段存在几个问题。
首先,
<script>
标签在HTML中需要</script>
,并且不能通过<script ... />
自动关闭。
其次,您的
'
需要是实际的引号('
或 "
)而不是实体。 由于它们位于 <script>
标签内,因此浏览器不会翻译它们,但会逐字使用。 这意味着您的配置不是有效的 JavaScript,您应该在浏览器控制台窗口中看到一条错误消息(您在发布消息之前检查过该消息吗?)。
第三,加载
tex-mml-chtml.js
的脚本应该位于设置配置的脚本之后 ,否则,您将面临加载 MathJax(例如从浏览器缓存)并在之前查找配置的竞争条件的风险它已经被定义了,所以忽略它。
最后,您应该删除polypill.io
的脚本。 该网站最近被一家中国公司收购,该公司利用该网站将恶意代码插入到使用该网站的网页中,因此您“绝对”想要避免这种情况。 有关更多详细信息,请参阅MathJax 文档。