ubuntu下wine運行msoffice 2007和mathtype6.5

linux下總沒有一款辦公軟件能盡如人意。openoffice雖然功能強大,但跟微軟格式兼容性不好,而最重要的一點在於,二者的公式無法實現兼容。用word編寫的公式(不管是用ms公式3.0、mathtype還是office2007最新的公式編輯器)到openoffice下總不能很好的顯示,更不用說編輯了。openoffice的公式拿到word下也是一樣。這對於我們這種經常要寫包含大量公式的科技論文,並且需要與別人交流(比如投稿)的人來說,可能是從windows遷移到linux的最大障礙之一了。

最新的docx格式微軟已經將其開放了,它與openoffice的odt格式同樣是用xml語言表示的,並且docx的公式用的是mathml語言,而odt的公式雖然不是用mathml表示的,但能在內部轉換,所以理論上能夠實現一種方法,將兩種格式(包括其中的公式)相互轉換。sourceforge上已經有幾個項目在做這件事了,但目前只能做到文檔之間基本等價的轉換(事實上odt格式還不完善,docx的部分功能odt不能支持。二者的對比見http://office.microsoft.com/zh-cn/word-help/HA010355788.aspx),而公式目前仍然是通過轉換爲圖片來暫時實現顯示功能。

至於用mathtype等公式編輯軟件編寫的公式,在轉換時更是有難度。目前的做法是仍然保留爲ole對象,這樣做在windows下是沒有問題的,openoffice的windows版本也可以正確的調用mathtype來編輯ole對象;但在linux下可就沒有ole機制了,mathtype的公式顯示時變得混亂,試圖雙擊打開時,openoffice會無情的告訴你出現了“一般錯誤“(圖1)。可見兩種格式之間的完全轉換還是任重而道遠。 

 圖1 在openoffice中打開包含mathtype公式的doc文檔並雙擊公式

這篇文章主要分享一下我探索wine安裝msoffice2007和mathtype的經歷,成功和失敗。

今天偶然想到wine一個ms office,於是google一番,欣喜的發現wine已經能很好的運行ms office 2003和2007了。經過試驗之後,發現用playonlinux來安裝ms office 2007應該是最簡單的一種方法了。方法如下:

安裝playonlinux:

sudo apt-get install playonlinux -y --force-yes

然後打開playonlinux(應用程序-遊戲),選office類,裏面有ms office 2007,選中之,應用(見圖2)。然後按提示進行就好了,中間會讓插入ms office的安裝光盤(圖3)。在安裝過程中有一點必須注意,那就是一定不要安裝microsoft拼音輸入法,以及access和outlook(血淚經驗啊...,圖4)。playonlinux會自己完成其他事情,比如安裝必要的dll以及msxml等,不需要手動安裝任何dll文件。

 圖2 playonlinux安裝windows軟件界面

圖3 選擇office2007安裝光盤位置

圖4 選擇office安裝組件

如果注意了上面提到的那點注意:-),安裝應該是很順利的,安裝完成後playonlinux的主界面出現了安裝軟件的列表(圖5),word運行起來也很穩定(圖6)。於是開始考慮公式的問題,嘗試安裝mathtype。

圖5 playonlinux安裝軟件列表

 圖6 word運行界面

還是在playonlinux中安裝mathtype(這次要點擊playonlinux界面左下角的文字鏈接了),安裝很順利。但打開word後卻並沒有識別出mathtype的宏,沒有出現mathtype的集成菜單,也沒有加載項。突然想到playonlinux對每個應用程序都使用一個單獨的wine配置(prefix,圖7),也就是說相當於各個應用程序是安裝在不同的虛擬windows機器中的,那word當然不知道有mathtype的存在了。

圖7 playonlinux的wine prefix

爲了把mathtype安裝在office所在的prefix之下,複製mathtype的prefix下的C:\program files\mathtype目錄到office所在的prefix下,然後複製mathtype的prefix下mathtype安裝目錄下的mathpage\mathpage.wll和office support\mathtype commands 6 for word.dot複製到office的prefix下的C:\program files\microsoft office\office12\startup下,然後重新啓動word。這次能夠發現mathtype的宏,將其加爲信任的發佈者之後,在word的“加載項“標籤下能夠顯示mathtype的功能按鈕,但點擊mathtype的任何命令按鈕,都顯示“隱含模塊編譯錯誤“(圖8),嘗試了無數次也沒有解決。

 圖8 mathtype加載項運行問題

考慮到mathtype安裝時,可能向系統註冊表中寫入了信息,而且也可能向系統的其他地方寫入了文件,而上面的做法僅僅複製了部分文件到office所在的prefix中。有沒有別的辦法能把兩個軟件安裝到同一個prefix下呢?糾結了很長時間,試驗了幾種想法都沒有實現。後來想到其實playonlinux安裝office,跟wine安裝完全一樣,僅僅是省去了手動配置wine和安裝附加dll的麻煩而已。打開office所在的prefix一看,果然是~/.wine/一樣的結構:dosdevice目錄、drive_c目錄、system.reg文件、user.reg文件、userdef.reg文件,完全一樣(圖9)。那麼完全可以將其複製到~/.wine/下,就相當於在wine中安裝了office。這樣再用wine安裝mathtype不就能安裝到同一個虛擬windows了嗎?趕快試試。

 圖9 playonlinux prefix的文件結構

複製office所在的prefix(~/.PlayOnLinux/wineprefix/Office2007/)下的所有文件覆蓋~/.wine/下的內容,然後修改user.reg文件中出現的路徑~/.PlayOnLinux/wineprefix/Office2007爲~/.wine/,然後用wine安裝mathtype,這樣就把mathtype和office裝到同一個虛擬windows中了。打開word試驗一下。這次識別了mathype的宏,也出現了集成菜單。但杯具的是,點擊mathype的任何菜單命令時,還是顯示“隱含模塊編譯錯誤“(圖10)。

 圖10 mathtype集成菜單運行問題

於是退而求其次,用“插入-對象“來插入mathtype公式。這種情況下mathype是能正常運行的(圖11),但一旦公式編輯完退出mathtype返回word時,就像任何事情都沒有發生一樣,並沒有公式插入文檔中。office自帶的公式編輯器也是一樣的情況。而當編輯文件中已有的公式時,返回word後公式仍是原樣,並沒有編輯過的痕跡。由此可見,wine對於com接口和ole對象的支持還是不完善,com組件無法啓動,而ole對象的退出操作也存在問題。看來只能等待wine的繼續發展了。

 圖11 mathtype運行界面

可以預見,將來wine發展更加完善時,能很好的處理com組件和ole,那麼word和mathtype協同工作,將是一件振奮人心的好事。當然,也希望openoffice和odt格式在oracle和開源社區的努力下更加完善,從而把用wine運行msoffice變成一件多餘的事。

作爲沒有辦法的辦法,目前一種可行的解決辦法是在wine出來的word中使用2007新增的公式編輯器,文檔保存爲docx格式。如果與使用office2003的人交流,可以建議對方打上office2007格式兼容的補丁(http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466)。另一種辦法就是使用mathtype編輯公式,但將其保存爲wmf圖元文件,然後在word裏導入這個圖元文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章