HTML MathJax 中的实体(<、> 和 &)支持
HTML entity(<, > and &) support in MathJax
我遇到了 TEX 代码中 HTML 实体的问题。我完成了 link 并尝试了所有步骤,但我仍然面临 "&"
符号的问题。
这是我的 Mathjax 配置对象:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
messageStyle: 'none',
showMathMenu: false,
processEnvironments:true,
tex2jax: { inlineMath: [['$', '$'], ["\(", "\)"]],
processClass: "equationrender",
ignoreClass:"StylePara"
} });
</script>
当我渲染下面的乳胶时,
\begin{align}
h(x) &= \int \left( \frac{f(x) + g(x)}{1+ f^{2}(x)}\right)\nonumber\
r^{2} &= s^{2} + t^{2}, \nonumber\
2u + 1 &= v + w^{\alpha},\nonumber\
x &= \frac{y + z}{\sqrt{s + 2u}};
\end{align}
在网页中呈现后,TEX 代码更改如下,
\begin{align}
h(x) & = \int \left( \frac{f(x) + g(x)}{1+ f^{2}(x)}\right)\nonumber\
r^{2} & = s^{2} + t^{2}, \nonumber\
2u + 1 & = v + w^{\alpha},\nonumber\
x & = \frac{y + z}{\sqrt{s + 2u}};
\end{align}
如何将 & 转换为 mathjax 可理解的乳胶代码(请参考 TEX 在浏览器中呈现的屏幕截图)。请给我建议。
在HTML中,符号(&
)被用作引入实体的特殊字符,如<
表示<
和 >
对应 >
,依此类推。因此,要在您的文档中获得一个明确的符号,您需要使用 &
,这是一个符号的实体。大多数为您提供编辑器以输入页面内容的内容管理系统 (CMS) 会自动将 &
转换为 &
,这是正确的做法。
我怀疑在您的情况下,&
到 &
的翻译进行了两次,结果是 HTML 页面中的 &amp;
。当浏览器读取它时,它会将第一个 &
翻译回 &
,在您的页面中留下 &
。然后 MathJax 看起来像 r^{2} & = s^{2} + t^{2} \
作为对齐中的一行,并且(正确地)将其解析为第一列中的 r^{2}
和第二列中的 amp; = s^{2} + t^{2}
。
如果您使用浏览器的 "view source" 选项,您应该能够在 HTML 中看到原始的 &amp;
(除非您的 CMS 动态加载内容,您可以在其中看到无法查看原始来源)。
所以问题似乎出在您的 CMS 上,它似乎将 &
转换为 &
两次。尽管您可以将 MathJax 配置为 运行 过滤器以将 &
转换回 &
第二次(在浏览器完成转换后),但真正的问题在于 CMS,而不是 MathJax ,所以这就是应该应用修复程序的地方(应用于 CMS,而不是 MathJax)。
我遇到了 TEX 代码中 HTML 实体的问题。我完成了 link 并尝试了所有步骤,但我仍然面临 "&"
符号的问题。
这是我的 Mathjax 配置对象:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
messageStyle: 'none',
showMathMenu: false,
processEnvironments:true,
tex2jax: { inlineMath: [['$', '$'], ["\(", "\)"]],
processClass: "equationrender",
ignoreClass:"StylePara"
} });
</script>
当我渲染下面的乳胶时,
\begin{align}
h(x) &= \int \left( \frac{f(x) + g(x)}{1+ f^{2}(x)}\right)\nonumber\
r^{2} &= s^{2} + t^{2}, \nonumber\
2u + 1 &= v + w^{\alpha},\nonumber\
x &= \frac{y + z}{\sqrt{s + 2u}};
\end{align}
在网页中呈现后,TEX 代码更改如下,
\begin{align}
h(x) & = \int \left( \frac{f(x) + g(x)}{1+ f^{2}(x)}\right)\nonumber\
r^{2} & = s^{2} + t^{2}, \nonumber\
2u + 1 & = v + w^{\alpha},\nonumber\
x & = \frac{y + z}{\sqrt{s + 2u}};
\end{align}
如何将 & 转换为 mathjax 可理解的乳胶代码(请参考 TEX 在浏览器中呈现的屏幕截图)。请给我建议。
在HTML中,符号(&
)被用作引入实体的特殊字符,如<
表示<
和 >
对应 >
,依此类推。因此,要在您的文档中获得一个明确的符号,您需要使用 &
,这是一个符号的实体。大多数为您提供编辑器以输入页面内容的内容管理系统 (CMS) 会自动将 &
转换为 &
,这是正确的做法。
我怀疑在您的情况下,&
到 &
的翻译进行了两次,结果是 HTML 页面中的 &amp;
。当浏览器读取它时,它会将第一个 &
翻译回 &
,在您的页面中留下 &
。然后 MathJax 看起来像 r^{2} & = s^{2} + t^{2} \
作为对齐中的一行,并且(正确地)将其解析为第一列中的 r^{2}
和第二列中的 amp; = s^{2} + t^{2}
。
如果您使用浏览器的 "view source" 选项,您应该能够在 HTML 中看到原始的 &amp;
(除非您的 CMS 动态加载内容,您可以在其中看到无法查看原始来源)。
所以问题似乎出在您的 CMS 上,它似乎将 &
转换为 &
两次。尽管您可以将 MathJax 配置为 运行 过滤器以将 &
转换回 &
第二次(在浏览器完成转换后),但真正的问题在于 CMS,而不是 MathJax ,所以这就是应该应用修复程序的地方(应用于 CMS,而不是 MathJax)。