Mathjax不能渲染latex公式。

3

在我的Rails应用程序中,我使用MathJax(TEX-AMS_HTML)来呈现Latex公式。

在评论中输入公式时,我使用Codecogs方程编辑器与TinyMCE。

我的当前MathJax配置在(TEX-AMS_HTML)的基础上是:

        "HTML-CSS": {linebreaks: { automatic: true, width: "container" }},
        displayAlign: "left",
        extensions: ["tex2jax.js","MathMenu.js","MathZoom.js"],
        jax: ["input/TeX","output/HTML-CSS"],
        TeX: { extensions: ["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"] },
        tex2jax: { ignoreClass: "w1", processClass: "active|comments-content" }

我的问题是一些公式没有正常显示,以下是示例:

\[ foo\textup{bar} \]

这会将foo \textup bar渲染出来。我还注意到一些符号以文本方式呈现,例如:
\[ \AE \SS \]

这会将\AE \SS渲染为不合适的符号。

我尝试过切换到SVG,调整内联/显示设置,但无法解决这个问题。

有人知道为什么会出现这种情况吗?

编辑: 这里有一个包含示例。

<!DOCTYPE HTML>
<html lang="en">
    <head>
        <title>Mathjax</title>
        <script type="text/x-mathjax-config">
            MathJax.Hub.Config({
            "HTML-CSS": {linebreaks: { automatic: true, width: "container" }},
            displayAlign: "left",
            extensions: ["tex2jax.js","MathMenu.js","MathZoom.js"],
            jax: ["input/TeX","output/HTML-CSS"],
            TeX: { extensions: ["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"] },
            tex2jax: { ignoreClass: "w1", processClass: "active|comments-content" }
            });
        </script>
        <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
    </head>
    <body>
        <div id="wrapper">
            <div id="main">
                <div class="w1">
                    <div class="comments-content">
                        <p>\[foo\textup{bar}\AE\SS\]</p>
                        <p>\[K_{E}=\frac{1}{2}m(\frac{80}{3.6})^{2}\]</p>
                    </div>
                </div>
            </div>
        </div>  
    </body>
</html>

这将被渲染为:http://i.imgur.com/bUJXZPX.png

请注意,虽然Mathjax正常工作并正确渲染第二行,但LaTeX的第一行未被转义。

编辑2(2017年6月22日):
“来自未来的注释:cdn.mathjax.org接近生命周期的结束,请检查mathjax.org/cdn-shutting-down以获取迁移提示(也许需要为未来的读者更新答案)”-感谢用户Peter Krautzberger。 基本上这意味着在我的代码示例中使用的cdn需要替换为本地化的Mathjax版本。


1
我们需要一个自包含测试用例,才有希望提供帮助。 - zwol
好的 Zach,我会尽力而为 - 你有时间的时候再来看看。 - Allan W Smith
尝试将以下参数添加到tex2jax中:inlineMath: [["\[","\]"] - gab06
你可以在 inlineMath 中使用各种参数。试试看吧 :) 使用它作为 inlineMath: [["\\[","\\]"] - gab06
2
来自未来的提示:cdn.mathjax.org即将到达生命周期的尽头,请查看https://www.mathjax.org/cdn-shutting-down以获取迁移提示(并可能更新您的答案以供未来读者参考)。 - Peter Krautzberger
显示剩余2条评论
1个回答

2
\textup\AE\SS 不是默认的 MathJax TeX 宏之一,也没有在您的行内配置中定义,这就是为什么图像呈现时会将它们标记为红色的原因。
如果您从配置中删除 noundefinednoerrors 扩展,您将看到更具体的错误-- 这些扩展也包含在 组合配置 TeX-AMS_HTML 中,所以您还需要删除它;正如您可以从链接中看到的那样,您的行内配置涵盖了所有的 TeX-AMS_HTML。 (在生产中,最好使用组合配置文件,因为它们作为一个大文件加载。)
有关所有默认 MathJax 宏的列表,请参见http://docs.mathjax.org/en/latest/tex.html#supported-latex-commands
有关如何在 MathJax 中定义宏的方法,请参见https://tex.stackexchange.com/questions/139699/equivalent-of-mathup-for-upright-text-in-math-mode。下面是一个示例:
MathJax.Hub.Config({
  TeX: {
    Macros: {
      RR: "{\\bf R}",
      bold: ["{\\bf #1}",1]
    }
  }
});

例如,在配置中的TeX块中添加一个块。

(特定情况是,\textup是LaTeX 文本模式宏,而MathJax专注于数学模式。根据用例,数学等价物可能是\text{}\mathrm{}或其他内容,请参见此TeX.SE问题。当然,您可以定义\textup为任何您喜欢的内容,但您可能会在将内容回溯到真正的TeX时遇到麻烦)。


3
请注意,您可以通过在配置中添加 TeX: {noUndefined: {disabled: true}} 来禁用 noUndefined 扩展功能,这样您仍然可以使用 TeX-AMS_HTML - Davide Cervone
谢谢,Davide。我不知道那个。 - Peter Krautzberger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接