亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ASCIIMathML結(jié)構(gòu)分析與應(yīng)用

        2018-01-16 12:34:48杜寧
        科技視界 2018年28期

        【摘 要】遵循W3C互聯(lián)網(wǎng)數(shù)學(xué)信息交換標(biāo)準(zhǔn)的開(kāi)源腳本ASCIIMathML.js與MathPlayer插件共同實(shí)現(xiàn)了網(wǎng)頁(yè)公式從表義(Content)到呈現(xiàn)(Presentation)的轉(zhuǎn)換。分析ASCIIMathML.js的數(shù)據(jù)結(jié)構(gòu)、框架結(jié)構(gòu)及其運(yùn)行機(jī)制,對(duì)于網(wǎng)頁(yè)公式的處理以及軟件的二次開(kāi)發(fā)應(yīng)用,具有一定的參考價(jià)值。

        【關(guān)鍵詞】網(wǎng)頁(yè)公式;ASCIIMathML;MathML;MathPlayer

        中圖分類號(hào): TP391 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2018)28-0071-002

        DOI:10.19694/j.cnki.issn2095-2457.2018.28.031

        【Abstract】The open source script ASCIIMathML.js, which follows the W3C Internet Mathematical Information Exchange Standard, together with the MathPlayer plug-in, implements the conversion of Web formulas from Content to Presentation. The analysis on the data structure, the frame structure and the operation mechanism of ASCIIMathML.js has certain value for the processing of Web formula and for the secondary development and application of software.

        【Key words】Web formula; ASCIIMathML; MathML; MathPlayer

        0 導(dǎo)言

        開(kāi)源ASCIIMathML.js[1]腳本,兼容LaTex語(yǔ)法,與Design Science公司的網(wǎng)頁(yè)公式插件MathPlayer[2]合璧,實(shí)現(xiàn)了網(wǎng)頁(yè)公式從表義(Content)到呈現(xiàn)(Presentation)的轉(zhuǎn)換。文[3]對(duì)ASCIIMathML的語(yǔ)義符號(hào)、解析形式進(jìn)行了探討,本文旨在分析ASCIIMathML的結(jié)構(gòu)及其運(yùn)行機(jī)制,嘗試在此基礎(chǔ)上的初步應(yīng)用。

        1 ASCIIMathML的數(shù)據(jù)結(jié)構(gòu)分析

        ASCIIMathML的基本數(shù)據(jù)單元(以ASCIIMathML.js2.10為例),是一種結(jié)構(gòu)體,以input字段為keyword,形成有序線性表。語(yǔ)法如表1:

        例1:{input:"->",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:CONST},

        此例中,表義字符串“->” 形象代表unicode字符\u2192(即→),對(duì)應(yīng)的LaTeX表義字符為“rightarrow”。該表義串被動(dòng)態(tài)創(chuàng)建為mo對(duì)象,結(jié)構(gòu)類型為CONST。

        例2:{input:"\\cos",tag:"mi",output:"cos",ttype:UNARY,func:true},

        此例中,func:true表示此乃數(shù)學(xué)函數(shù),被處理為正體顯示。

        例3:{input:"\\frac",tag:"mfrac",output:"/",ttype:BINARY},

        此例中,tag:mfrac為分式結(jié)構(gòu),以BINARY對(duì)應(yīng)的結(jié)構(gòu)方式構(gòu)建此對(duì)象。

        2 ASCIIMathML程序框架分析

        在ASCIIMathML.js腳本中,包含ASCIIMathML、 LaTeXMathML和ASCIIsvg三部分。其中ASCIIMathML為基本處理(已棄用),LaTeXMathM是對(duì)LaTeX作兼容性擴(kuò)展后形成,ASCIIsvg實(shí)現(xiàn)網(wǎng)頁(yè)圖形功能。下面簡(jiǎn)析網(wǎng)頁(yè)公式主體LaTeXMathM的框架和運(yùn)行機(jī)制。

        2.1 LaTeXMathML的基本程序極其功能

        LaTeXMathML框架由若干功能程序和輔助程序的構(gòu)成,其主要作用是解析公式表義字符串,創(chuàng)建對(duì)應(yīng)的math對(duì)象,然后由MathPlayer插件將這些math對(duì)象顯示在頁(yè)面上。

        值得一提的是LMgetSymbol函數(shù),它按input字段索引并返回表義字符在ASCIIMathML數(shù)據(jù)單元表中對(duì)應(yīng)的數(shù)據(jù)單元對(duì)象。

        2.2 LaTeXMathML運(yùn)行機(jī)制示意圖

        LaTeXMathML以HTML文檔最頂層的body對(duì)象為入口,遞歸遍歷document對(duì)象的所有DOM結(jié)點(diǎn)。由結(jié)點(diǎn)的nodeValue屬性獲取文本串,再判斷、解析表義串,創(chuàng)建math對(duì)象。

        其中,遍歷由主控函數(shù)processNodeR以遞歸方式完成,解析公式文本串并創(chuàng)建math對(duì)象體系則由LMparseExpr,LMparseIexpr,LMparseSexpr等函數(shù)完成。

        3 ASCIIMathML結(jié)構(gòu)應(yīng)用示例

        以下是ASCIIMathML.js結(jié)構(gòu)與運(yùn)行程序框架結(jié)構(gòu)的基礎(chǔ)上,一些應(yīng)用示例。

        3.1 補(bǔ)充特殊的字符

        ASCIIMathML提供了∴(unicode為2234)的簡(jiǎn)捷輸入(冒號(hào)+點(diǎn)號(hào))?,F(xiàn)補(bǔ)充∵(unicode為2235)的簡(jiǎn)捷輸入(點(diǎn)號(hào)+冒號(hào)),可按照表1語(yǔ)法,在AMsymbols[]內(nèi)添加數(shù)據(jù)單元對(duì)象:

        {input:".:", tag:"mo", output:"\u2235", tex:"because", ttype:CONST},

        3.2 增添顏色處理

        很多時(shí)候需要渲染公式中的部分內(nèi)容的顏色,達(dá)到強(qiáng)調(diào)、引人注目之效果。以增添紅色為例,可在AMsymbols[]內(nèi)添加數(shù)據(jù)單元對(duì)象:

        {input:"mcRed",tag:"mstyle",atname:"color",atval:"red",tex:null,ttype:UNARY},

        仿此增加特定顏色,可滿足大多數(shù)個(gè)性化顏色需求。若需制訂一普適性的顏色方案,比如IE預(yù)定義顏色表,則可在LMgetSymbol函數(shù)中優(yōu)先識(shí)別,在該函數(shù)開(kāi)頭增加代碼:

        s=/^mc[A-Z][a-z]+/.exec(st);//st為函數(shù)的傳入?yún)?shù),為結(jié)點(diǎn)的公式串

        if(s)return{input:s,tag:"mstyle",atname:"color",atval:s.slice(2),ttype:UNARY}

        此處,規(guī)定顏色語(yǔ)法為:mc+顏色單詞(首字母大寫(xiě)),比如mcRed,mcGreen等。

        3.3 簡(jiǎn)捷輸入矩陣、方程組、行列式等

        矩陣、方程組、行列式等是常見(jiàn)的公式類,ASCIIMathML.js的表義語(yǔ)法參見(jiàn)文[3]。顯然,這類表義語(yǔ)法的輸入極為不便??啥x如下的簡(jiǎn)便、實(shí)用的表義語(yǔ)法:

        這需要在獲取DOM對(duì)象的nodeValue時(shí),攔截公式字符串的處理,將表3的語(yǔ)法首先轉(zhuǎn)換為ASCIIMathML.js默認(rèn)語(yǔ)法。為此,在processNodeR函數(shù)中增加如下處理代碼:

        st= st.replace(/[\[\{\(\|]({.+?})[\|\)\}\]]/g,

        function (s,t){var b=s.slice(0,1),e=s.slice(-1),p=b=="{" ? "l":"c";

        return "\\left"+ (b=="{" ? "\\{":b)+ "\\begin{array}{"+ p + "}"+

        t.replace(/&/g,"\\\\").replace(/;/g,"}&{")+

        "\\end{array}\\right"+ (e=="}" ? ".":e);});

        實(shí)際應(yīng)用中,還應(yīng)作功能性的完善。比如,定界符尤其是{}的嵌套問(wèn)題,矩陣(行列式、方程組)語(yǔ)法串識(shí)別性問(wèn)題等。

        4 結(jié)語(yǔ)

        分析ASCIIMathML.js的數(shù)據(jù)結(jié)構(gòu)、運(yùn)行框架結(jié)構(gòu),在此基礎(chǔ)上實(shí)現(xiàn)各種特定目標(biāo),可避免重復(fù)開(kāi)發(fā),節(jié)約時(shí)間成本、開(kāi)發(fā)成本,借他山之石,達(dá)實(shí)用之功。

        【參考文獻(xiàn)】

        [1]http://www.dessci.com/en/products/mathplayer/.

        [2]http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js.

        [3]杜寧.ASCIIMathML網(wǎng)頁(yè)公式解析結(jié)果分析[J].科技資訊2015(25):2-3.

        内射少妇36p九色| 一区二区av日韩免费| 狼色在线精品影视免费播放| 亚洲一区二区三区在线中文| 午夜视频在线观看国产19| 精品久久久久久无码中文野结衣 | 国产艳妇av在线出轨| 国产激情免费观看视频| 大香蕉青青草视频在线| 青青草小视频在线播放| 国产区精品一区二区不卡中文| 99精品国产高清一区二区麻豆| 国产无码十八禁| 亚洲综合精品在线观看中文字幕| a黄片在线视频免费播放| 亚洲 日韩 激情 无码 中出| 久久精品国产亚洲av无码娇色 | 国产又黄又爽视频| 成年视频网站在线观看777| 日韩女同一区在线观看| 日本视频一区二区三区一| 又湿又紧又大又爽a视频国产| 日本乱子人伦在线视频| 91天堂素人精品系列全集亚洲| 狠狠色欧美亚洲综合色黑a| 成h视频在线观看免费| 国产免费又色又爽粗视频| 国产香蕉国产精品偷在线| 无遮无挡爽爽免费视频| 亚洲成人免费观看| 一本大道加勒比东京热 | 手机AV片在线| 亚洲一区二区日韩精品在线| 日本边添边摸边做边爱喷水| 亚洲av片一区二区三区| 亚洲AⅤ无码国精品中文字慕| 国产一区二区三区 在线观看| 三级全黄裸体| 免费a级毛片无码a| 亚洲精品无人区一区二区三区 | 熟妇人妻无码中文字幕老熟妇|