如何给WordPress增加解析LaTex公式的功能

  目前网页中通行的做法是数学公式用LaTex语句书写,配合解析引擎例如MathJax进行实现。MathJax是一个开源的Javascript库,可以解析目前比较常用的LaTex公式,可以在网页中使用,速度快,效率高,WordPress中使用MathJax库的具体方法有两种:

  一、通过使用WordPress插件
  常见LaTex插件不多,这里推荐Simple MathJax插件,功能强大,配置简单。不足之处是多数LaTex插件更新缓慢,很多插件几年都不更新,在最新版本的WordPress中可能无法正常使用。Simple MathJax相对比较新(但也仅支持到WordPress5.9)。
  安装Simple MathJax插件后,有两种使用设置:
  1.使用CDN上的MathJax(当前最新版本是3.2.2)服务
  插件Custom MathJax CDN设置中输入CDN服务的地址(格式是两个//符):
  //cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg-full.js(国外用户)
  或者//cdn.bootcss.com/mathjax/3.2.2/es5/tex-svg-full.js(国内用户)
  注意上述CDN中调用的JS的脚本文件可以是:tex-chtml.js、tex-chtml-full.js、tex-svg.js、tex-svg-full.js等,分别对应不同的输出格式,推荐使用生成SVG格式的JS脚本。
  2.使用本地的MathJax服务
  可以去MathJax的官网https://mathjax.org或者https://github.com/mathjax中下载最新的MathJax源代码,然后解压到Wordpress的wp-content/目录中,在Simple MathJax插件的Custom MathJax CDN设置中输入:/wp-content/MathJax-3.2.2/es5/tex-svg-full.js即可(路径格式前面只有一个/符)。
  推荐使用本地MathJax服务,这样不用担心因为CDN问题导致网站公式显示不正常。
  3.配置MathJax脚本的运行参数
  无论使用上述哪种方式调用MathJax脚本,在Simple MathJax插件的Custom MathJax config设置中可设置详细的配置参数(如果为空则使用插件默认的简单配置参数),举例如下(有控制符,不能复制粘贴为纯文本):

MathJax = {
tex: {
inlineMath: [[‘\$’,’\$’],[‘\\(‘,’\\)’]], //LaTex语句在\$……\$之间或者\(……\\)之间
processEscapes: true,
processEnvironments: true
},
svg: {
scale: 1,
minScale: .5,
mtextInheritFont: false,
merrorInheritFont: true,
mathmlSpacing: false,
displayAlign: ‘center’, // default for indentalign when set to ‘auto’
displayIndent: ‘0’, // default for indentshift when set to ‘auto’
fontCache: ‘local’ // or ‘global’ or ‘none’
},
options: {
ignoreHtmlClass: ‘tex2jax_ignore|editor-rich-text’,
enableMenu: false //控制输出时右键菜单是否出现
}
}; //上述配置参数均为json格式,书写的时候不能写错了!(以下简称MathJax配置)

  二、直接调用MathJax的JS脚本   
  这种方式无需安装Simple MathJax等插件,直接在WordPress页面或文章中调用MathJax的JS服务脚本,更加简洁和通用,不用担心插件过期。具体实现步骤:
  1.更改WordPress主题的header.php文件(默认位于wp-content/themes/主题名称目录),在header.php文件的</head>之前增加调用MathJax服务的配置和加载语句:

<script>
……上面的MathJax配置……
</script>

<script id=”MathJax-script” async src=”//yunt.xyz//wp-content/MathJax-3.2.2/es5/tex-svg-full.js“></script>
  (注意此处为调用本地MathJax服务,路径前面是两个//符)

  如果调用CDN上的MathJax服务,则替换为:src=”https://cdn.bootcss.com/mathjax/3.2.2/es5/tex-svg-full.js”。在上面代码里,script里使用了“async“表示异步加载/”defer”表示延迟加载。id默认为“MathJax-script”。

  2.更改WordPress管理界面的admin-header.php文件
  通过更改WordPress主题的header.php方式可以实现载入页面或文章时,通过MathJax的JS脚本解析页面上的LaTex公式,但是,如果在WordPress管理界面中安装了其他具有编辑功能的顶级插件(例如考试插件),在这个考试插件的编辑界面中不会运行MathJax服务解析LaTex公式(除非在页面或文章中引用这个考试插件)。
  为了在WordPress管理界面中执行MathJax脚本解析LaTex公式,通常的方法就是修改WordPress的配置文件/wp-admin/admin-header.php,具体修改方法同上述更改主题的head.php一样,在admin-header.php文件的</head>之前增加前面的几句MathJax服务的配置和加载语句。

  三、Latex的语法结构
  至于如何编辑LaTex公式,可以参考互联网上的文章,一般来说,把LaTex语句写在\$……\$之间或者\(……\\)之间,推荐使用\$……\$,比较简洁。
  例如开头的一元二次方程求根公式的LaTex语法表达式\(\displaystyle\frac{-b\pm\sqrt{b^2-4ac}}{2a}\\),欧拉公式的LaTex语法表达式\$e^{i\pi}+1=0\$,至于如何快速书写LaTex公式,需要进行长期修炼,熟能生巧。
  MathJax是一个开放源代码的JavaScript显示引擎,适用于所有现代浏览器中的LaTeX、MathML和AsciMath表示法。MathJax的高低版本之间可能不兼容。
  MathJax官网为https://mathjax.org,其开源文档地址为https://github.com/mathjax!
  Mathjax使用基于网络字体来生成高质量的数学公式排版,这种公式排版可以达到完全分辨率。数学公式是基于文本的,而不是基于图像的,因此它可以用于搜索引擎。因为MathJax是基于网络字体生成公式,其内带字体比较大,通常推荐使用CDN网络分发进行加载:
  国外用户基本上使用https://jsdelivr.com,例如:
  https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js
  如果是国内用户推荐使用https://bootcdn.cn,例如:
  https://cdn.bootcss.com/mathjax/3.0.5/es5/tex-svg.js


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注