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.

主站蜘蛛池模板: 国产综合精品一区二区| 26uuu国产精品视频| 欧美视频免费一区二区三区| 美女被躁出白浆视频播放| 制服丝袜无码每日更新| 美女内射视频WWW网站午夜| 特级欧美视频aaaaaa| 老司机aⅴ在线精品导航| 中文字幕在线永久在线视频2020| 国产乱子伦视频在线播放| 国产第一色| 午夜免费小视频| 免费在线成人网| 乱人伦中文视频在线观看免费| 日韩精品亚洲人旧成在线| 五月综合色婷婷| 人妻丰满熟妇AV无码区| 国产白浆一区二区三区视频在线| 欧美日韩高清| 亚洲精品视频在线观看视频| 亚洲欧美成人在线视频| 黄色三级网站免费| 毛片一级在线| 园内精品自拍视频在线播放| 伦伦影院精品一区| 精品小视频在线观看| 9cao视频精品| 国产精品一线天| 国产精品美人久久久久久AV| 国产黑人在线| 欧美国产日产一区二区| 国产裸舞福利在线视频合集| 色综合五月婷婷| 日韩一区精品视频一区二区| 亚洲成人福利网站| 国产乱人伦AV在线A| 71pao成人国产永久免费视频 | 国产在线自在拍91精品黑人| 青青草国产一区二区三区| 在线观看无码av免费不卡网站 | 手机成人午夜在线视频| 午夜精品久久久久久久99热下载| 国产AV无码专区亚洲精品网站| 国产女人在线| 亚洲欧美日韩成人高清在线一区| 国产精品福利导航| 国产午夜精品鲁丝片| 国产自无码视频在线观看| 欧美日韩综合网| 亚洲精品国产首次亮相| 国产欧美日韩一区二区视频在线| av尤物免费在线观看| 日韩a级片视频| 国产欧美精品午夜在线播放| 欧美日韩一区二区三区四区在线观看| 国产sm重味一区二区三区| 热这里只有精品国产热门精品| 欧美成人国产| 久久美女精品| 国产精品浪潮Av| 亚洲性视频网站| 亚洲色婷婷一区二区| 免费观看精品视频999| 亚洲中文字幕在线精品一区| 老汉色老汉首页a亚洲| 日韩精品资源| 国产丝袜啪啪| 精品伊人久久大香线蕉网站| 久久精品视频亚洲| 在线欧美a| 在线不卡免费视频| 久久五月视频| 99久久人妻精品免费二区| 亚洲天堂精品视频| 欧美中文一区| 国产成人调教在线视频| 日本午夜网站| 久久人妻系列无码一区| 国产特级毛片| 97视频在线精品国自产拍| 免费黄色国产视频| 欧美国产菊爆免费观看 |