在Tinymce编辑器⾥,集成数学公式
在以前,需要在Web页⾯显⽰数学公式,常⽤的都是先制作成图⽚,然后插⼊到页⾯⾥。这使得后期对数学公式的修改变的⿇烦,同时也不利于搜索引擎搜索。(⼀)公式录⼊效果
1.打开站点,点击“数学公式”,录⼊如下⽂本,系统会⾃动给出公式的预览
然后,点击OK,你录⼊的公式就插⼊到⽂档⾥了。你不⽤担⼼公式录⼊错误,因为,公式是以⽂本⽅式存储的,你可以再任何时候双击公式
来修改它。
为了更⽅便体验,你也可以复制下⾯代码,粘贴到demo的“插⼊公式”⾥,体验其效果:
f\left(
\left[
\frac{
1+\left\{x,y\right\}
}{
\left(
\frac{x}{y}+\frac{y}{x}
\right)
\left(u+1\right)
}+a
\right]^{3/2}
\right)
现在,⼀个更为复杂的数学公式⽣成了。
当您通过TinyMce编辑器查看器源代码时,下⾯显⽰了其源代码:class="math-tex"⾥的内容在最终显⽰时,有MathJax内核⾃动解析。
1.当<span class="math-tex">\( a \ne 0 \)</span>时,⼀元⼆次⽅式<span class="math-tex">\( ax^2 + bx + c = 0 \)</span>的两个根是:
<br><br><span class="math-tex">\( x = {-b \pm \sqrt{b^2-4ac} \over 2a} \)</span>
<br>
<span class="math-tex">\( f\left(
\left[
\frac{
1+\left\{x,y\right\}
}{
\left(
\frac{x}{y}+\frac{y}{x}
\right)
\left(u+1\right)
}+a
\right]^{3/2}
\right) \)</span>
了解了上⾯功能前,先介绍⼀下数学符号和公式的背景。
(⼆)数学公式的问题
为了使得在Web上录⼊数学符号变的简单,国际上提供了⼏种解决⽅法:制作svg图片
1)  W3C提出了MathML语⾔
这⾥ <mi> 是mathematical identifier的简写,他的意思是告诉浏览器  <mi>sin</mi>之间内容是⼀个整体,内容不要分开。
因为MathML提出的语义太细,导致⽤的⼈并不多。
2)MathJax
MathJax是⼀个开源组织,其前⾝是由美国数学学会( American Mathematical Society )和⼯业与应⽤数学学会(Society for Industrial and Applied Mathematics)赞助的⼀个协会,他提出了⼀个基于HTML+JS+CSS的⽅法来实现数学公式的解决⽅案,并且逐渐成为⾏业标准。
MathJax采⽤类似Markdown的LaTex标记来记录数学符号,并附带了常规的⽂字语义,例如
a不等于0,直接⽤下⾯代码表⽰,ne 是 not equal,很容易理解。
a ne 0
(三)MathJax语法
以为基础,⼜衍⽣出⼏套不⽤的显⽰语法。(⼤家可以做⼀个简单类别:操作系统最初是Unix,后来芬兰的托⽡兹在Unix上开发了Linux,苹果在Linux集成上开发了MacOS,⾕歌在Linux基础上开发了Android,华为在Android上开发了鸿蒙。。。⽽Linux更衍⽣出CentOS,红帽、深度等操作系统。同样MathJax也衍⽣出不少显⽰⽅法,这⾥介绍主要的3种)
3.1)AsciiMath
3.2)Google解决⽅法
但是,这个⽅法有致命缺陷:他⽣成的是图⽚,这使得后期对公式修改变的⿇烦。同时,当浏览器放⼤或者缩⼩时,图⽚也跟着放⼤或缩⼩,导致公式图⽚变的模糊。
⽣成图⽚的好处时,如果页⾯布局较为复杂,⽣成图⽚更容易排版
3.3)MathJax解决⽅案
MathJax最终通过采⽤LaTex语法并加上HTML+CSS+JS来显⽰数学公式,另外他也⽀持通过SVG渲染数学公式。
3.3.1)Tex语法
TeX最初是⼀个由美国计算机教授⾼德纳(Donald Ervin Knuth)编写的排版软件。TeX的MIME类型为application/x-tex,是⼀款⾃由软件。⾼德纳最早开始⾃⾏编写TeX的原因,是因为当时的电脑排版技术⼗分粗糙,已经影响到他的巨著《计算机程序设计艺术》的印刷质量。他以典型的⿊客思维模式,决定⾃⾏编写⼀个排版软件:TeX。
以⼆次⽅程为例,参考下图:Tex基本思想是:⽤ 2个$符号之间的内容表⽰数学公式(这个类似HTML
⾥ style设置为inline,⾏内元素)。
如果公式要换⾏,就⽤4个$表⽰(这个类似HTML⾥ style设置为block,块元素)。
3.3.2) LaTeX语法
在TeX实际运⾏中,偶尔会产⽣⼀些问题,考虑如下⼀句话:
这个苹果是$2.5美元现在涨为$3.0美元
在实际排版时,直接使⽤2个$,⽤户的本意是显⽰⽂本,但是却被当成了公式,因此LaTeX提出以2个"$$"作为公式的标志。另外LaTex也对Tex进⾏了预设。例如:
\documentclass[a4paper]{book}
\begin{document}
\section{ ... a title }
\subsection{ ... a subtitle}
%% Text goes here
\end{document}
  执⾏后的效果是:
下⾯代码显⽰了⼀个矩阵:
\begin{pmatrix}
1 & a_1 & a_1^
2 & \cdots & a_1^n \\
1 & a_
2 & a_2^2 & \cdots & a_2^n \\
\vdots  & \vdots& \vdots & \ddots & \vdots \\
1 & a_m & a_m^
2 & \cdots & a_m^n
\end{pmatrix}
你甚⾄可以编写更复杂的公式:
\begin{align}
\sqrt{37} & = \sqrt{\frac{73^2-1}{12^2}} \\
& = \sqrt{\frac{73^2}{12^2}\cdot\frac{73^2-1}{73^2}} \\
& = \sqrt{\frac{73^2}{12^2}}\sqrt{\frac{73^2-1}{73^2}} \\
& = \frac{73}{12}\sqrt{1 - \frac{1}{73^2}} \\
& \approx \frac{73}{12}\left(1 - \frac{1}{2\cdot73^2}\right)
\end{align}
请注意:上图⽣成的公式都是⽂本格式,这意味就算你放⼤浏览器,⽂字仍然清晰,⽽且易于修改。
3.3.3)使⽤SVG显⽰公式
在以前,如果要在页⾯显⽰⼀个三⾓形,不⽤图⽚,⽽⽤CSS+HTML+JS实现,通常⾮常⿇烦。⽤SVG,则变的简单很多。见 h
只要⼀⾏代码,就可以实现:
<svg xmlns="/2000/svg" version="1.1">
<polygon points="200,10 250,190 160,210" />
</svg>
你完全可以把SVG当做HTML标签使⽤,很多HTML的属性都可以⽤的上,更主要的是,他是⽮量的,不论放⼤还是缩⼩,都不模糊。
(四)MathJax两种模式的⽐较
如上所述,Mathjax⽀持 “HTML+CSS+JS”和“SVG”两种模式显⽰数学公式,从外表上看,基本上⼀样,但是浏览器渲染原理并相同。HTML+CSS+JS模式,MathJax通过⾃定义语义标签显⽰公式。
SVG渲染模式,通过svg标签渲染页⾯。