【备忘】配置 MathJax 渲染引擎
一些弯路
上一篇文章刚发布的时候,本博客之前配置的 MathJax 似乎无法正常显示方程组的大括号和行列式,于是开始了一番折腾……
最先我配置的是 CDN,我怀疑是 CDN 不稳定而且渲染不全面,所以打算在服务器部署 MathJax,于是我按照下面的方法,在服务器成功部署。
- 在 MathJax 的官方 Github 下载
.zip
文件;- 上传到 plugins 文件夹并解压;
- 然后在
header.php
文件的</head>
前面加入下面的代码1
<script>
MathJax = {
tex: {
inlineMath: [['[latex]', '[/latex]'], ['\\(', '\\)']],
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['[Latex]', '[/Latex]'], ['$$', '$$'], ['\\[', '\\]']]
}
};
</script>
<script src="https://xxx.com/usr/plugins/mathjax/tex-chtml.js" id="MathJax-script" async></script>
嗯~成功是成功了,但是,这渲染的公式也太丑了吧……(或许我该试试看能不能调整字体?)
所以只好又换回了 CDN 渲染。
现状
我现在使用的插件是 glerium/TypechoMathJax: 一款用于Typecho的MathJax插件。
使用方法:
- 在 Github 下载
.zip
文件; - 上传到 plugins 文件夹并解压;
- 把解压后的文件重命名为 “TypechoMathJax”,这点很重要;
- 在 Typecho后台启用 TypechoMathJax 插件;
- 你可以选择调整数学公式的字体大小。
他虽说宣称自己是一款插件,但本质还是链接了 CDN 地址。
所以,目前除了心里不太踏实,其实也没有什么大问题。推荐需要 MathJax 渲染又不想太折腾的小伙伴尝试。
LaTeX、KaTeX、MathJax的联系与区别
- MathJax 与 KaTeX 是用于网页渲染数学公式的引擎,支持 LaTeX 语法的一部分。而 LaTeX 是完整的排版系统,用于创建文档。
LaTeX 与 MathJax 的具体区别:
- 应用场景和功能范围不同。LaTeX 是完整的排版系统,处理文档整体;MathJax 专注网页数学公式渲染,只处理数学部分,文本用 HTML。
- 语法支持子集,MathJax 只实现 LaTeX 数学模式宏,像数组环境只支持部分预定义字符。
- 特定命令支持差异,比如 \mathbld 在 MathJax 不支持,还有 eqnarray 使用有区别。
- 错误处理,MathJax 更容忍语法错误。
- 文本模式处理,LaTeX 有丰富文本命令,MathJax 几乎不处理,除了少数如 \ref 和 \text {} 里的部分扩展。
KaTeX 与 MathJax 的具体区别:
- 体量与功能:KaTeX 轻,专注数学渲染;MathJax 综合,支持多种输入输出。
- 渲染速度:KaTeX 快,MathJax3.0 提升但仍可能慢。
- 语法支持:MathJax 支持更多 LaTeX 语法。
- 输出格式:MathJax 支持更多如 SVG。
- 扩展与辅助:MathJax 有扩展包和辅助技术。
- 浏览器兼容:MathJax 支持旧版,KaTeX 对旧版差但性能一致。
- 社区成熟度:MathJax 社区更成熟。
常用 LaTeX 资源
- 一位大佬总结的 Mathjax 语法:Mathjax语法总结-CSDN博客
- 一个在线编辑公式并提供预览的网站:Equation Editor for online mathematics - create, integrate and download (但是其中的一些公式需要注意兼容问题)
一些奇葩的兼容问题(在这里手动备忘)
- 方程组的大括号
情形 1
$$\begin{cases}
x=x(t)\\\
y=y(t)\\\
z=z(t)
\end{cases}$$
$$\begin{cases}
x=x(t)\\
y=y(t)\\
z=z(t)
\end{cases}$$
情形 2
$$\begin{cases}
x=x(t)\\
y=y(t)\\
z=z(t)
\end{cases}$$
$$\begin{cases}
x=x(t)\
y=y(t)\
z=z(t)
\end{cases}$$
情形 3
$$\left\{\begin{matrix}
x=x(t)\\
y=y(t)\\
z=z(t)
\end{matrix}\right.$$
$$\left{\begin{matrix}
x=x(t)\
y=y(t)\
z=z(t)
\end{matrix}\right.$$
情形 1 在 Obsidian 和 TypechoMathJax 插件中都可以正常渲染;
情形 2 在 Obsidian 和 TypechoMathJax 插件中都可以渲染,但是 TypechoMathJax 无法正确分行;
情形 3 在 Obsidian 中可正常以渲染,但是 TypechoMathJax 根本无法渲染;
难道是因为 Obsidian 的引擎有更广的适配和更大的容错率?我还没搞明白。
行列式
$$\begin{vmatrix} \vec{i}&\vec{j}&\vec{k} \\\ F_{x}&F_{y}&F_{z} \\\ G_{x}&G_{y}&G_{z} \end{vmatrix}$$
$$\begin{vmatrix}
\vec{i}&\vec{j}&\vec{k} \\
F_{x}&F_{y}&F_{z} \\
G_{x}&G_{y}&G_{z}
\end{vmatrix}$$
行列式在 TypechoMathJax 中同样需要连续键入三个“\”才可以正常分行。
脑袋爆炸!总结:
- 以后方程组的大括号用cases;
- 以后换行用三个"捺斜杠";
- 以后对 MathJax 代码有疑问就多看看“专业“教程。
写在最后
希望这篇文章能给你带来一点点帮助,同时如果你对于文中提到的一些问题有更好的解决方法,欢迎留言交流,笔者将不胜感激~
版权声明:本文由 Gokong 创作
本文地址:https://gokong.top/archives/26/
转载本站内容必须遵循 “署名-非商业用途-保持一致” 的创作共用协议。