从mathjax v1.0迁移到v1.1
mathjax v1.1修复了v1.0中的一些错误,并改进了对新版本浏览器和移动设备的支持。它包括一些改进,以提高其性能,并使其更符合HTML5。它有更灵活的配置选项,并且能够在mathjax启动时加载将多个文件合并为一个文件的配置文件,以提高加载速度。最后,mathjax.org现在通过分布式“云”服务器提供mathjax作为web服务。
本文描述了为了利用这些改进而可能需要对mathjax配置进行的更改。
配置更改
作为页面作者,您将看到的主要更改是可以加载和配置mathjax的方式。如果您一直在使用内联配置,请将 MathJax.Hub.Config()
召唤 <script>
加载mathjax的标记,那么您的站点应该在mathjax的1.1版中保持不变。不过,您可能希望考虑迁移到新的符合html5的mathjax配置方法,该方法使用单独的 <script>
标记以指定配置。那个标签应该来了 之前 装载的那个 Mathjax.js
,应该有 type="text/x-mathjax-config"
而不是 type="text/javascript"
. 例如,
<script type="text/javascript" src="/MathJax/MathJax.js">
MathJax.Hub.Config({
jax: ["input/TeX","output/HTML-CSS"],
extensions: ["tex2jax.js"]
});
</script>
将成为
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
jax: ["input/TeX","output/HTML-CSS"],
extensions: ["tex2jax.js"]
});
</script>
<script type="text/javascript" src="/MathJax/MathJax.js"></script>
相反。这将确保您的页面通过HTML5验证。确保将配置块 之前 加载mathjax的脚本。见 Loading and Configuring MathJax 了解更多详细信息。
如果你的页面只是加载 MathJax.js
依赖于 config/MathJax.js
,则需要修改 <script>
标记以使用mathjax v1.1。这是因为mathjax不再加载默认配置文件;如果使用配置文件,则需要显式指定该配置文件。而且 config/MathJax.js
文件是一个混乱的来源,所以它被重命名了 config/default.js
相反。因此,如果你使用
<script type="text/javascript" src="/MathJax/MathJax.js"></script>
在过去,你应该用
<script type="text/javascript" src="/MathJax/MathJax.js?config=default"></script>
相反。如果不这样做,您将收到一条警告消息,指示您转到一个页面,该页面说明如何更新脚本标记以使用新的配置格式。
组合配置
版本1.1的新增功能是将多个文件合并为一个配置文件,并通过加载mathjax的同一脚本加载该文件。这将使配置mathjax更加容易,并且有助于加快mathjax组件的初始加载,因为只需要下载一个文件。
mathjax提供了四种预先构建的配置,我们希望其中一种能够满足您的需要。它们在 Using a Configuration File 部分。要加载一个,请添加 ?config=filename
(何处) filename
是不带 .js
)到加载的url MathJax.js
. 例如
<script type="text/javascript" src="/MathJax/MathJax.js">
MathJax.Hub.Config({
jax: ["input/TeX","output/CommonHTML"],
extensions: ["tex2jax.js","AMSmath.js","AMSsymbols.js"]
});
</script>
可以用一条线代替
<script type="text/javascript" src="/MathJax/MathJax.js?config=TeX-AMS_CHTML"></script>
这样,您就不必包含内联配置,所有需要的文件都将在mathjax启动时下载。有关组合配置文件内容的完整详细信息,请参阅 Common Configurations 部分。
如果要使用预定义的配置文件,但要修改某些配置参数,可以同时使用 text/x-mathjax-config
块和A config=filename
参数组合。例如,
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ['\\(','\\)'] ],
processEscapes: true
}
});
</script>
<script type="text/javascript" src="/MathJax/MathJax.js?config=TeX-AMS_CHTML"></script>
将加载 TeX-AMS_HTML
配置文件,但将重新配置内联数学分隔符以包括 $...$
除了 \(...\)
,并将设置 processEscapes
参数到 true
.
从cdn加载mathjax
mathjax的安装是相当重要的(因为图像字体需要大量的图像),因此您可能不希望(或无法)在自己的服务器上存储mathjax。让mathjax保持最新也是一个维护问题,您可能希望让其他人为您处理这个问题。在这两种情况下,使用mathjax分布式网络服务可能是获得mathjax的最佳方式。这样您就可以确保使用的是最新版本的mathjax,并且服务器将是快速可靠的。
见 Loading MathJax from a CDN 更多信息。
更改默认的tex分隔符
除了mathjax v1.1不再加载默认配置文件之外,还有第二个配置更改可能会影响页面。这个 config/MathJax.js
文件已正确配置 tex2jax 仅使用预处理器 \(...\)
而不是 $...$
对于行内数学分隔符,但是 tex2jax 预处理器本身错误地默认为包括 $...$
作为行内数学分隔符。结果是,如果使用内联配置来指定 tex2jax
预处理器、单美元分隔符在默认情况下是启用的,而如果使用基于文件的配置,则不会启用。
这种不一致是一个错误,正确的行为应该在这两种情况下都禁用单美元分隔符。这在mathjax的v1.1中是正确的。这意味着,如果使用内联配置来指定 tex2jax 预处理器,如果要使用单美元分隔符,则需要更改配置以显式启用它们。
例如,如果你有
<script type="text/javascript" src="/MathJax/MathJax.js">
MathJax.Hub.Config({
jax: ["input/TeX","output/HTML-CSS"],
extensions: ["tex2jax.js"]
});
</script>
如果你想用一个美元分隔符来进行行内计算,那么你应该用
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
jax: ["input/TeX","output/HTML-CSS"],
extensions: ["tex2jax.js"],
tex2jax: {
inlineMath: [ ['$','$'], ['\\(','\\)'] ],
processEscapes: true
}
});
</script>
<script type="text/javascript" src="/MathJax/MathJax.js"></script>
同样的技术可以与组合配置文件一起使用。例如
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ['\\(','\\)'] ],
processEscapes: true
}
});
</script>
<script type="text/javascript" src="/MathJax/MathJax.js?config=TeX-AMS_CHTML"></script>
将加载预定义的 TeX-AMS_CHTML
配置,但将修改设置以允许 $...$
分隔符,并处理 \$
在页面文本中生成美元符号。
新分发位置
mathjax的1.0版是通过 SourceForge, but the development of MathJax has switched to GitHub ,它现在是mathjax源代码和发行版的主要位置。SourceForge存储库将不再被主动维护(自2010年11月起就没有了),因此您将无法通过 svn
如果你在那里签了马修克斯。
您可以切换到使用mathjax cdn(见上文),而不是托管您自己的mathjax副本,并避免一起更新的问题。但是,如果必须安装自己的副本,则应按照 Installing and Testing MathJax ,使用任一 git
或 svn
如前所述从github获取副本。随着开发的继续,这将允许您保持mathjax的副本是最新的。
我们为不得不切换分发版带来的不便表示歉意,但我们试图实现的git到svn桥(以使两个副本保持同步)结果不可靠,因此sourceforge分发版被撤销,取而代之的是github站点。