从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 ,使用任一 gitsvn 如前所述从github获取副本。随着开发的继续,这将允许您保持mathjax的副本是最新的。

我们为不得不切换分发版带来的不便表示歉意,但我们试图实现的git到svn桥(以使两个副本保持同步)结果不可靠,因此sourceforge分发版被撤销,取而代之的是github站点。