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 您所需的 i/o 格式。
您还可以内联配置 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
现在,您可以通过在其头部包含以下代码,让 MathJax 解析 /srv/http/pages/equations.html
中的 TeX 代码
<script src="../mathjax/tex-mml-chtml.js></script>
或者对于版本 2
<script src="../mathjax/MathJax.js?config=TeX-AMS_SVG"></script>
故障排除
MathJax 和 Plotly
如果您也使用 plotly.js
,则在 Plotly 之前加载 MathJax 可能无法渲染 TeX 代码。在 MathJax 之前 加载 Plotly 应该可以工作。例如
<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"; });