侯霞 王楊 張磊
摘要:隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,在線編輯文檔的要求越來越普遍,而編輯內(nèi)容也不再僅限于文本,內(nèi)容形式越來越豐富。但是目前Web瀏覽器和編輯器對數(shù)學(xué)公式輸入與顯示的支持非常有限。該文將詳細介紹一種改進的基于CKEditor的支持公式的文檔編輯器的設(shè)計方案,該方案既解決了瀏覽器對公式的兼容性問題,又利用了開源的公式編輯器提供了公式數(shù)據(jù)的可重用性。
關(guān)鍵詞:在線編輯;公式編輯器;CKEditor
中圖分類號:TP311 文獻標(biāo)識碼:A文章編號:1009-3044(2016)13-0073-02
Abstract:With the development of Internet technology, online editing document requirements become more and more. Thetypes of edited content become more and more rich but not limited to text. But the current Web browsers and editors cannot support inputting and displaying for mathematical formula very well. An Implementation is presented to support formula editing in the online editor. It can also solve the WEB Browsers compatibility, but also help to reuse the formula data based on formula editor.
Key words:online editing;formula editor; CKEditor
1 背景
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,在線編輯文檔的要求越來越普遍,而編輯內(nèi)容也不再僅限于文本,內(nèi)容形式越來越豐富。數(shù)學(xué)是科學(xué)技術(shù)的基本語言,對于教育和科研領(lǐng)域來說,解決基于網(wǎng)頁的數(shù)學(xué)公式編輯問題顯得更為重要。但是目前Web瀏覽器和編輯器對數(shù)學(xué)公式輸入與顯示的支持非常有限,并且各個瀏覽器的支持程度存在差別。
事實上,數(shù)學(xué)公式一直以來都是一個致力解決的重大問題,許多研究人員也給出了一些技術(shù)解決方案。綜合來看,在瀏覽器中顯示公式分為兩類技術(shù):一類是基于圖片的顯示;另一類是基于數(shù)學(xué)公式標(biāo)記語言MathML[1](Mathematical Markup Language)來標(biāo)記數(shù)學(xué)公式。
第一類方式又分為普通靜態(tài)圖片顯示和動態(tài)生成圖片顯示兩種,前者是直接利用某些軟件制作數(shù)學(xué)公式圖片后,將圖片置為網(wǎng)絡(luò)資源。這種方法的優(yōu)點是可以保證公式在瀏覽器中的正常顯示,但最大的問題是在瀏覽器中公式數(shù)據(jù)無法重用,不能進行二次編輯。后者是服務(wù)器接受到公式數(shù)據(jù)信息后由瀏覽器解析并顯示。但是各種瀏覽器的支持程度不同,在某些情況下公式顯示結(jié)果不正常。在動態(tài)生成圖片發(fā)送至網(wǎng)絡(luò)終端,但其中的公式備注信息需要通過深入學(xué)習(xí)才能理解和使用,對于網(wǎng)絡(luò)交互使用十分不便,其占用網(wǎng)絡(luò)服務(wù)器和網(wǎng)絡(luò)傳輸資源較大,不能適應(yīng)大并發(fā)數(shù)的網(wǎng)絡(luò)交互應(yīng)用。
第二類方式是基于MathML的處理。MathML的目標(biāo)就是使Web可以服務(wù)、接收、處理數(shù)學(xué)公式,正如HTML處理文本的功能那樣。Mathml基于xml語言,具有xml語言具有的一切特征,可以實現(xiàn)數(shù)據(jù)與顯示相分離。MathML元素可以包含于帶命名空間的XHTML文檔。MathML 2.0還包含MathML DOM(MathML文檔對象模型),可以識別MathML組件并能用任何腳本語言操作它。雖然MathML功能十分強大,但是需要瀏覽器來解析MathML。而目前瀏覽器對MathML的支持程度殘次不齊,支持程度不太樂觀。因此單純的利用MathML作為數(shù)學(xué)公式的顯示尚有不足
從國際互聯(lián)網(wǎng)協(xié)會(W3C)網(wǎng)站收錄的情況來看,目前實現(xiàn)在主流的IE瀏覽器下顯示和編輯數(shù)學(xué)公式的方案,無一例外地需要安裝額外的軟件或插件。為了幫助用戶可以在線編輯文檔,不但能支持常用的文本,表格,圖片等數(shù)據(jù)的編輯,還能較好地支持數(shù)學(xué)公式的編寫,本文提出一種用戶可以編輯文本與數(shù)學(xué)公式的在線編輯器。此類編輯器用戶可以在編輯文檔的過程中隨意的插入表格,圖片數(shù)學(xué)公式等常用數(shù)據(jù)。用戶編寫的數(shù)據(jù)可以保存在服務(wù)器中。
2 系統(tǒng)方案
本文提出一種能夠支持公式編輯的在線編輯器的實現(xiàn)方案。目前有一些開源的在線編輯器和公式編輯器,經(jīng)過多方面的考慮,選用Ckeditor[2]和MathIML Editor[3]。
2.1 現(xiàn)有技術(shù)分析
1)Ckeditor
Ckeditor是一個開源的項目,是目前最優(yōu)秀的可見即可得網(wǎng)頁編輯器之一,采用JavaScript編寫。并且有豐富的官方文檔與API。該編輯器功能比較強大,提供了良好的可視化界面,支持常用的內(nèi)容編輯。底層的數(shù)據(jù)格式是html。
CKeditor自身支持數(shù)學(xué)公式的格式化編輯,并且顯示良好,操作方便并且操作過程中可與用戶進行良好的互動。但是其采用js+css+html相結(jié)合的方式,在瀏覽器兼容性方面會有一些問題。且公式數(shù)據(jù)是CKeditor的私有格式,不便于數(shù)據(jù)共享和處理。
2)MathlML Editor
MathlML Editor也是一個開源項目。它一個基于Web的公式編輯器,該項目使用 MathML Formula for Flash 來編輯和顯示公式。最重要的,它可以解析MathML類型的數(shù)據(jù),并且可以將用戶編輯的數(shù)學(xué)公式保存為圖片、MathML等多種數(shù)據(jù)形式。該編輯器可嵌入在web頁面中,因此,可以將其嵌入在Ckeditor中使用。