嗯,大概清楚了。它是用来编写公式用的东东。那该怎么怎么使用呢?
二、EQ域的基本使用基本格式是{ eq switch}eq为域的限定符,switch代表开关,如:分数开关 f(分子,分母)。实例{ eq f(3,4)} 渲染出来的是3 4 frac{3}{4}43。注意:在WORD中直接输入该格式的文本是不起作用的,需要使用ctrl + f9快捷键插入一个域,此时会自动添加出一对花括号{},然后再输入eq限定符及相应的开关即可。
三、EQ域开关switch明白了EQ域如何用后,接下来了解开关的编写及都有哪些关种类。上面已经介绍过了一个分数开关f(3,4)基本结构就是 开关字符[参数1参数2..](表达式)。
EQ域开关主要有以下几种:
如果想把eq域公式在web中显示,我们该怎么做???网页中是怎样显示数学公式的???
MathML
数学标记语言,是一种基于XML(标准通用标记语言的子集)的标准,用来在互联网上书写数学符号和公式的置标语言。
对,就是它。先来看一下,上面我们提到的3 4 frac{3}{4}43 ,用MathML来编写,结构如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> <mfrac> <mn>3</mn> <mn>4</mn> </mfrac></math> 123456这个是可以直接在网页显示的,但是直接放到浏览器中运行会发现,样式不太对。so,MathJax前端插件就出现了,我们用它来渲染显示,立马就不一样。酷炫的八宝粥在页面右键一个公式:
有个TeX Commands 菜单,点击后:
嗯,这才是我们的主菜!!!frac{3}{4}与EQ域代码f(3,4)对比一下是不是十分相像?突破点就在这里。我们只要把EQ代码里的f => frac; ( => {; , => }{; ) => }这样一替换不就实现转换过来了吗?然后用MathJax进行渲染就可以了。
思路就是将EQ域的公式代码转换成Latex格式代码,即可实现在网页中显示。用C#写的部分思路代码如下:
static string ConvertEqToLatex(string strEqution){ Regex reg = new Regex(@"((?<cmd>\f|\r)((?<con>(?:[^()])+?)))+?"); MatchCollection mc = reg.Matches(strEqution); if (mc.Count <= 0) { return strEqution; } foreach(Match m in mc) { string strReplace = ""; if (m.Groups["cmd"].Value.Contains("\f")) { strReplace = m.Groups["con"].Value.Replace(@",", "}{"); strReplace = @"frac{" + strReplace + "}"; } else if (m.Groups["cmd"].Value.Contains("\r")) { strReplace = @"sqrt{" + m.Groups["con"].Value + "}"; } else //if(...) {// todo: 完善其它开关的转化...} strEqution = strEqution.Replace(m.Value, strdh); } return ConvertEqToLatex(strEqution);} 五、总结记录一下最近项目遇到的情景,需要对WORD文档进行解析处理。文字图片什么的都好说,公式的处理确实挺麻烦的,需要花点时间专研。