托管您自己的mathjax副本
如果可以,我们建议您使用cdn服务,但您也可以在自己的服务器上或本地硬盘上安装mathjax。如果你是 creating a custom build 例如,如果您希望离线使用mathjax。
获取mathjax代码
为了托管您自己的mathjax版本,必须首先获得mathjax代码的副本。有几种方法可以做到,最简单的是 npm
(节点包管理器),或 git
从其github开发库中获取mathjax。
通过npm获取mathjax
要在项目中包含mathjax,请使用以下命令
npm install mathjax@3
这将在中安装mathjax node_modules/mathjax
当前目录的子目录。它将包括 node_modules/mathjax/es5
目录。(请注意,使用 mathjax@3
,因为我们仍在制作v2版本,因此最新的mathjax npm包可能不是v3版本。这个 latest
版本打开 npmjs.com
似乎是按时间顺序而不是按版本号。)
如果你也需要访问源代码。然后使用
npm install mathjax-full@3
将mathjax安装在 node_modules/mathjax-full
子目录,中组件的源文件 node_modules/mathjax-full/components/src
,中mathjax的typescript源文件 node_modules/mathjax-full/ts
,以及 node_modules/mathjax-full/js
.
通过git获取mathjax
要从github组件存储库获取mathjax的副本,请使用以下命令
git clone https://github.com/mathjax/MathJax.git mathjax
这将在 mathjax/es5
目录。
如果还需要访问源代码,请使用
git clone https://github.com/mathjax/MathJax-src.git mathjax
它将在 mathjax
当前目录的子目录。您需要编译typescript源文件并手工构建组件文件,因为它们不是存储库本身的一部分。为此,请执行以下操作:
cd mathjax
npm install
npm run compile
npm run make-components
cd ..
这将从 mathjax/ts
在 mathjax/js
目录,然后将从 mathjax/components/src
进入 mathjax/es5
目录。
使文件可用
使用上述方法之一获取mathjax文件后,需要在web服务器上提供适当的文件。注意,服务器上不需要mathjax发行版中的大多数文件。例如, mathjax/ts
目录是mathjax的typescript源代码,它被编译成 mathjax/js
目录。但即使这些文件也不是你想要的服务器上的文件。这些javascript文件进一步处理到存储在 mathjax/es5
使用中的数据的文件 mathjax/components/src
目录。
它是 mathjax/es5
要在服务器上提供的目录,因为这些文件是由提供mathjax的cdn提供的。您应该将它们移动到服务器上方便的位置。这可能是一个名为 mathjax
例如。
链接到您的mathjax副本
您可以通过将mathjax
<script src="path-to-MathJax/tex-chtml.js" id="MathJax-script" async></script>
在你的文档中 <head>
块。在这里, tex-chtml.js
是您正在加载的组合组件,这只是一个示例;您需要选择要使用的组件。请参阅 配置和加载mathjax 了解更多详细信息。
这个 path-to-MathJax
应该替换为主mathjax目录的url,因此如果您已经将 mathjax/es5
服务器网站顶层的目录,并将其命名为 mathjax
你可以使用
<script src="/mathjax/tex-chtml.js" id="MathJax-script" async></script>
在页面中加载mathjax。例如,您的页面可能看起来像
<html>
<head>
...
<script src="/mathjax/tex-chtml.js" id="MathJax-script" async></script>
</head>
<body>
...
</body>
</html>
Firefox和本地字体
如上所述,firefox的同源安全策略会影响其加载基于web的字体的能力。这不仅意味着要跨域加载mathjax,还意味着要从硬盘本地使用mathjax。Firefox对本地文件的同源策略的解释是,页面的“同一域”是该页面存在的目录或其任何子目录。这使得mathjax可以从加载web页面的director的子目录中加载。
Firefox从68版开始并一直向前(参见 their documentation )现在没有相同的起源 file://
url(从 file://
URL是唯一的)。
这意味着在firefox中使用mathjax和mathjax的本地副本的选项是有限的。最简单的选择是使用svg输出渲染器而不是commonhtml输出,因为这不需要加载字体,所以避免了相同的源代码问题。或者,您可以将mathjax-tex字体安装为系统字体,这样firefox就不必尝试将它们加载为web字体。
这对mathjax来说是一个不幸的限制(尽管我们理解他们的推理),但这是firefox的安全模型强加的一个限制,mathjax无法规避。目前,这对其他浏览器来说并不是问题,尽管不能保证将来不会出现。