MathJax
MathJax 是一个数学公式的 JavaScript 显示引擎,可在所有浏览器中使用。它能够解析 HTML 文件中的 TeX 输入,并生成 SVG 输出,以及其他支持的格式。更高级的 Jupyter notebook 依赖 MathJax 和其他模块进行绘图、运行交互式代码等。
MathJax 可以轻松嵌入到任何网站中,以排版您的 TeX 公式。可以快速将 MathJax 与分布式网络服务集成,有关当前可用的 CDN,请 在此处 查看。
本文档假定您希望在本地系统上安装 MathJax。
安装
安装 以下任一包;
配置
本地使用
MathJax 的脚本位于 /usr/share/mathjax 目录,适用于版本 2 和 3。两个版本在使用脚本时存在一些差异。对于版本 3,有许多预先构建的组件,具有不同的输出结果和功能,请 点击此处 查看组件列表和说明。
要让 MathJax 解析 ~/equations.html 中的 TeX 代码并生成 SVG 输出
<head>
...
Version 2
<script src="/usr/share/mathjax/MathJax.js?config=TeX-AMS_SVG"></script>
...
...
Version 3
<script src="/usr/share/mathjax/tex-mml-svg.js"></script>
...
</head>
请不要忘记包含一个配置查询字符串,告知 MathJax 您期望的输入/输出格式。
您也可以在行内配置 MathJax,有关更多详细信息和配置选项,请 在此处 查看。
您的浏览器现在应该可以渲染 file:///home/user/equations.html 中的符号。
请注意,MathJax 默认使用的 TeX 分隔符是用于行内数学的 \( ... \) ,以及用于大段数学的 \[ ... \] 和 $$ ... $$。
服务器使用
为了向您的客户端提供经过 MathJax 处理的文档,您需要您的脚本能够访问其主文件
/usr/share/mathjax/tex-mml-chtml.js.js(或版本 2 的 /usr/share/mathjax/MathJax.js)。
假设服务器的根目录设置为 /srv/http/,创建符号链接将授予您的脚本访问已安装包的权限
$ cp -rs /usr/share/mathjax /srv/http/mathjax
现在,您可以通过在 /srv/http/pages/equations.html 的头部包含以下内容,让 MathJax 解析其中的 TeX 代码:
<script src="../mathjax/tex-mml-chtml.js></script>
或对于版本 2
<script src="../mathjax/MathJax.js?config=TeX-AMS_SVG"></script>
故障排除
MathJax 与 Plotly
如果您也正在使用 plotly.js,先加载 MathJax 可能导致 TeX 代码渲染失败。先加载 Plotly 再加载 MathJax 应该可以解决。例如:
<head>
<script src="path-to-plotly/plotly-latest.min.js"></script>
<script src="path-to-mathjax/MathJax.js?config=TeX-AMS_SVG"></script>
</head>
您也可以尝试不同的 MathJax 输出。
页面加载时 TeX 原始代码可见
有时 MathJax 排版需要一些时间,在此期间原始 TeX 代码会显示出来,造成不愉快的体验。
您可以通过设置某个元素的 css 属性为 visibility: hidden 来解决这个问题,并在 MathJax 完成排版后捕获它发出的事件来显示该元素。
MathJax.Hub.Queue( function () {
document.getElementById("myID").visibility = "visible";
});