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.

主站蜘蛛池模板: 综合色亚洲| 久久一日本道色综合久久| 国产黄在线免费观看| 成年人视频一区二区| 欧美亚洲日韩中文| 丰满人妻被猛烈进入无码| 日韩欧美视频第一区在线观看| 青青草原国产精品啪啪视频| 欧美福利在线观看| 国产精品国产三级国产专业不| 欧美激情二区三区| 亚洲伊人天堂| 啪啪国产视频| 国产精品亚洲专区一区| 国产一在线| 亚洲乱码精品久久久久..| 97人人模人人爽人人喊小说| 67194亚洲无码| 国产精品网拍在线| 亚洲日韩AV无码一区二区三区人| 亚洲区第一页| 影音先锋亚洲无码| 无码综合天天久久综合网| 99在线视频网站| 国产精品粉嫩| 国产在线观看精品| 人妻夜夜爽天天爽| 日本91在线| 国产激情第一页| 亚洲精品无码AV电影在线播放| 91日本在线观看亚洲精品| 久久99热66这里只有精品一| 亚洲第一视频网| 97在线国产视频| 国产97公开成人免费视频| 欧美色综合网站| 91小视频在线观看免费版高清| 国产综合网站| 999国产精品| 天堂va亚洲va欧美va国产| 欧美日韩精品一区二区视频| 伊人蕉久影院| 国产成人精品男人的天堂| 久久久精品无码一区二区三区| 国产国产人在线成免费视频狼人色| 一本一道波多野结衣av黑人在线| 亚洲最新网址| 亚洲综合欧美在线一区在线播放| 亚洲精品老司机| 欧类av怡春院| 激情六月丁香婷婷| 国产免费黄| 国产亚洲现在一区二区中文| 日韩欧美中文字幕在线精品| 成人在线欧美| 免费一级无码在线网站| 欧美不卡在线视频| 亚洲精品在线观看91| 免费国产不卡午夜福在线观看| 91九色最新地址| 国产精品hd在线播放| 91亚洲精选| 免费A级毛片无码免费视频| 爆乳熟妇一区二区三区| 久久久久夜色精品波多野结衣| 无码高清专区| 久草视频中文| V一区无码内射国产| 国产男人天堂| 欧美色伊人| 国产性爱网站| 国产无吗一区二区三区在线欢| 精品三级网站| 青青国产视频| 蜜臀AV在线播放| 亚洲第一成年免费网站| 成人a免费α片在线视频网站| 高清无码一本到东京热| 欧美日韩在线国产| 国产美女叼嘿视频免费看| 欧美日韩综合网| 全部无卡免费的毛片在线看|