999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ASCIIMathML結構分析與應用

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

【摘 要】遵循W3C互聯網數學信息交換標準的開源腳本ASCIIMathML.js與MathPlayer插件共同實現了網頁公式從表義(Content)到呈現(Presentation)的轉換。分析ASCIIMathML.js的數據結構、框架結構及其運行機制,對于網頁公式的處理以及軟件的二次開發應用,具有一定的參考價值。

【關鍵詞】網頁公式;ASCIIMathML;MathML;MathPlayer

中圖分類號: TP391 文獻標識碼: A 文章編號: 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 導言

開源ASCIIMathML.js[1]腳本,兼容LaTex語法,與Design Science公司的網頁公式插件MathPlayer[2]合璧,實現了網頁公式從表義(Content)到呈現(Presentation)的轉換。文[3]對ASCIIMathML的語義符號、解析形式進行了探討,本文旨在分析ASCIIMathML的結構及其運行機制,嘗試在此基礎上的初步應用。

1 ASCIIMathML的數據結構分析

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

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

此例中,表義字符串“->” 形象代表unicode字符\u2192(即→),對應的LaTeX表義字符為“rightarrow”。該表義串被動態創建為mo對象,結構類型為CONST。

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

此例中,func:true表示此乃數學函數,被處理為正體顯示。

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

此例中,tag:mfrac為分式結構,以BINARY對應的結構方式構建此對象。

2 ASCIIMathML程序框架分析

在ASCIIMathML.js腳本中,包含ASCIIMathML、 LaTeXMathML和ASCIIsvg三部分。其中ASCIIMathML為基本處理(已棄用),LaTeXMathM是對LaTeX作兼容性擴展后形成,ASCIIsvg實現網頁圖形功能。下面簡析網頁公式主體LaTeXMathM的框架和運行機制。

2.1 LaTeXMathML的基本程序極其功能

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

值得一提的是LMgetSymbol函數,它按input字段索引并返回表義字符在ASCIIMathML數據單元表中對應的數據單元對象。

2.2 LaTeXMathML運行機制示意圖

LaTeXMathML以HTML文檔最頂層的body對象為入口,遞歸遍歷document對象的所有DOM結點。由結點的nodeValue屬性獲取文本串,再判斷、解析表義串,創建math對象。

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

3 ASCIIMathML結構應用示例

以下是ASCIIMathML.js結構與運行程序框架結構的基礎上,一些應用示例。

3.1 補充特殊的字符

ASCIIMathML提供了∴(unicode為2234)的簡捷輸入(冒號+點號)。現補充∵(unicode為2235)的簡捷輸入(點號+冒號),可按照表1語法,在AMsymbols[]內添加數據單元對象:

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

3.2 增添顏色處理

很多時候需要渲染公式中的部分內容的顏色,達到強調、引人注目之效果。以增添紅色為例,可在AMsymbols[]內添加數據單元對象:

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

仿此增加特定顏色,可滿足大多數個性化顏色需求。若需制訂一普適性的顏色方案,比如IE預定義顏色表,則可在LMgetSymbol函數中優先識別,在該函數開頭增加代碼:

s=/^mc[A-Z][a-z]+/.exec(st);//st為函數的傳入參數,為結點的公式串

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

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

3.3 簡捷輸入矩陣、方程組、行列式等

矩陣、方程組、行列式等是常見的公式類,ASCIIMathML.js的表義語法參見文[3]。顯然,這類表義語法的輸入極為不便。可定義如下的簡便、實用的表義語法:

這需要在獲取DOM對象的nodeValue時,攔截公式字符串的處理,將表3的語法首先轉換為ASCIIMathML.js默認語法。為此,在processNodeR函數中增加如下處理代碼:

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);});

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

4 結語

分析ASCIIMathML.js的數據結構、運行框架結構,在此基礎上實現各種特定目標,可避免重復開發,節約時間成本、開發成本,借他山之石,達實用之功。

【參考文獻】

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

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

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

主站蜘蛛池模板: 91久久性奴调教国产免费| 日韩激情成人| 综合网天天| 国产微拍一区| www欧美在线观看| 狠狠操夜夜爽| 亚洲精品动漫| 色哟哟国产精品| 国产一区二区视频在线| 欧美在线精品怡红院| 亚洲日韩高清在线亚洲专区| 国产欧美日韩资源在线观看| 精品视频91| 亚洲AV色香蕉一区二区| 日韩黄色大片免费看| 一区二区三区四区日韩| 亚洲国产综合精品一区| 第九色区aⅴ天堂久久香| 亚洲人成网站色7777| 男女性色大片免费网站| 国产午夜不卡| 在线观看国产一区二区三区99| 亚洲AV无码乱码在线观看裸奔| 老司机精品一区在线视频| 一级一毛片a级毛片| 国产一区二区三区精品欧美日韩| 国产激情无码一区二区APP| 国产欧美日韩91| 久久久噜噜噜久久中文字幕色伊伊 | 欧美国产日韩在线观看| 国产毛片久久国产| 亚洲精品片911| 亚洲成人高清无码| 91外围女在线观看| 欧美精品成人一区二区在线观看| 国产精品极品美女自在线网站| 亚洲欧美成人综合| 亚洲日本中文综合在线| 伊人网址在线| 欧美特级AAAAAA视频免费观看| 亚洲中文字幕av无码区| 国产国拍精品视频免费看| 精品剧情v国产在线观看| 欧美人在线一区二区三区| 国产噜噜噜| 亚洲成人精品| 国产激爽爽爽大片在线观看| 无码中文字幕乱码免费2| 国产女人水多毛片18| 成年A级毛片| 久久a级片| 园内精品自拍视频在线播放| 激情亚洲天堂| 国产精品男人的天堂| 一级毛片免费播放视频| 玩两个丰满老熟女久久网| 午夜在线不卡| 超清无码一区二区三区| 在线播放国产一区| 97国产精品视频自在拍| 青青草a国产免费观看| 热久久国产| 狠狠亚洲婷婷综合色香| 久久精品无码一区二区日韩免费| 国产美女自慰在线观看| 91精品久久久无码中文字幕vr| 精品少妇人妻无码久久| 日韩欧美色综合| 97国产在线播放| 久久91精品牛牛| 丁香六月激情婷婷| 国产精品jizz在线观看软件| 亚洲国产日韩视频观看| 国产乱人乱偷精品视频a人人澡| 国产精品yjizz视频网一二区| 亚洲欧美成人在线视频| 狠狠色婷婷丁香综合久久韩国| 国产在线精品人成导航| 国产精品冒白浆免费视频| 国模极品一区二区三区| 国产精品免费露脸视频| 亚洲国产看片基地久久1024|