跳转至内容

MathJax

来自 ArchWiki

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";
});